Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
e08508f7
Commit
e08508f7
authored
Apr 15, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化逻辑
parent
6a1ec9f7
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
43 deletions
+56
-43
im-sdk/src/main/java/com/wecloud/im/sdk/internal/ResponseParser.java
+20
-0
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImClientOperation.java
+3
-2
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImOperation.java
+19
-16
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudRequestMessageBuilder.java
+9
-9
im-sdk/src/main/java/com/wecloud/im/sdk/sample/SignTest.java
+5
-16
No files found.
im-sdk/src/main/java/com/wecloud/im/sdk/internal/ResponseParser.java
0 → 100644
View file @
e08508f7
package
com
.
wecloud
.
im
.
sdk
.
internal
;
import
com.wecloud.im.sdk.common.ApiResult
;
/**
*
* @Author luozh
* @Date 2022年04月15日 20:40
* @Version 1.0
*/
public
interface
ResponseParser
<
T
>
{
/**
* Converts the result from stream to a java object.
*
* @param jsonResult
*/
ApiResult
<
T
>
parse
(
String
jsonResult
);
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImClientOperation.java
View file @
e08508f7
...
@@ -43,10 +43,11 @@ public class WecloudImClientOperation extends WecloudImOperation {
...
@@ -43,10 +43,11 @@ public class WecloudImClientOperation extends WecloudImOperation {
param
.
put
(
"nickname"
,
registerClientRequest
.
getNickname
());
param
.
put
(
"nickname"
,
registerClientRequest
.
getNickname
());
param
.
put
(
"deviceType"
,
registerClientRequest
.
getDeviceType
()
+
""
);
param
.
put
(
"deviceType"
,
registerClientRequest
.
getDeviceType
()
+
""
);
// 发送请求
// 发送请求
RequestMessage
request
=
new
OSS
RequestMessageBuilder
().
setEndpoint
(
"/api/imClient/registerClient"
)
RequestMessage
request
=
new
Wecloud
RequestMessageBuilder
().
setEndpoint
(
"/api/imClient/registerClient"
)
.
setMethod
(
HttpMethod
.
POST
).
setParameters
(
param
)
.
setMethod
(
HttpMethod
.
POST
).
setParameters
(
param
)
.
setOriginalRequest
(
registerClientRequest
).
build
();
.
setOriginalRequest
(
registerClientRequest
).
build
();
ApiResult
<
ImClient
>
result
=
doOperation
(
request
);
ApiResult
<
ImClient
>
result
=
doOperation
(
request
,
null
);
return
result
.
getData
();
return
result
.
getData
();
}
}
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImOperation.java
View file @
e08508f7
...
@@ -3,21 +3,22 @@ package com.wecloud.im.sdk.internal;
...
@@ -3,21 +3,22 @@ package com.wecloud.im.sdk.internal;
import
okhttp3.Response
;
import
okhttp3.Response
;
import
java.net.URL
;
import
java.net.URL
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.wecloud.im.sdk.common.ApiResult
;
import
com.wecloud.im.sdk.common.ApiResult
;
import
com.wecloud.im.sdk.common.HttpClient
;
import
com.wecloud.im.sdk.common.HttpClient
;
import
com.wecloud.im.sdk.common.HttpMethod
;
import
com.wecloud.im.sdk.common.HttpMethod
;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.common.RequestParamSigner
;
import
com.wecloud.im.sdk.common.auth.Credentials
;
import
com.wecloud.im.sdk.common.auth.Credentials
;
import
com.wecloud.im.sdk.exception.WecloudException
;
import
com.wecloud.im.sdk.exception.WecloudException
;
import
static
com
.
wecloud
.
im
.
sdk
.
utils
.
HttpHeaders
.
CONTENT_TYPE
;
/**
/**
*
*
* @Author luozh
* @Author luozh
...
@@ -38,17 +39,13 @@ public abstract class WecloudImOperation {
...
@@ -38,17 +39,13 @@ public abstract class WecloudImOperation {
this
.
appSecret
=
appSecret
;
this
.
appSecret
=
appSecret
;
}
}
protected
<
T
>
ApiResult
<
T
>
doOperation
(
RequestMessage
request
)
{
protected
<
T
>
ApiResult
<
T
>
doOperation
(
RequestMessage
request
,
ResponseParser
<
T
>
responseParser
)
{
// 请求头签名
ApiResult
<
T
>
result
=
send
(
request
,
responseParser
);
String
signature
=
RequestParamSigner
.
sign
(
request
.
getClientId
(),
request
.
getClientId
(),
this
.
appKey
,
return
result
;
this
.
appSecret
,
request
.
getPlatform
());
request
.
addHeader
(
ImHeaders
.
WECLOUD_SIGN
,
signature
);
return
send
(
request
);
}
}
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
private
<
T
>
ApiResult
<
T
>
send
(
RequestMessage
request
)
{
private
<
T
>
ApiResult
<
T
>
send
(
RequestMessage
request
,
ResponseParser
<
T
>
responseParser
)
{
try
{
try
{
// 组装请求
// 组装请求
Map
<
String
,
Object
>
parameters
=
BeanUtil
.
beanToMap
(
request
.
getOriginalRequest
(),
false
,
true
);
Map
<
String
,
Object
>
parameters
=
BeanUtil
.
beanToMap
(
request
.
getOriginalRequest
(),
false
,
true
);
...
@@ -57,6 +54,14 @@ public abstract class WecloudImOperation {
...
@@ -57,6 +54,14 @@ public abstract class WecloudImOperation {
finalParameters
.
put
(
k
,
v
.
toString
());
finalParameters
.
put
(
k
,
v
.
toString
());
});
});
Credentials
credentials
=
new
Credentials
(
appKey
,
appSecret
);
// 请求日期
String
date
=
DateUtil
.
formatHttpDate
(
new
Date
());
request
.
addHeader
(
ImHeaders
.
DATE
,
date
);
request
.
addHeader
(
CONTENT_TYPE
,
"application/json; charset=utf-8"
);
// 添加签名请求头
RequestSigner
signer
=
new
RequestSigner
(
request
.
getMethod
().
name
(),
request
.
getEndpoint
(),
credentials
);
signer
.
sign
(
request
);
URL
endpoint
=
new
URL
(
apiDomain
,
request
.
getEndpoint
());
URL
endpoint
=
new
URL
(
apiDomain
,
request
.
getEndpoint
());
HttpClient
httpClient
=
HttpClient
httpClient
=
HttpClient
.
builder
().
url
(
endpoint
).
addHeaders
(
request
.
getHeaders
()).
addParams
(
request
.
getParameters
()).
addParams
(
finalParameters
);
HttpClient
.
builder
().
url
(
endpoint
).
addHeaders
(
request
.
getHeaders
()).
addParams
(
request
.
getParameters
()).
addParams
(
finalParameters
);
...
@@ -73,11 +78,9 @@ public abstract class WecloudImOperation {
...
@@ -73,11 +78,9 @@ public abstract class WecloudImOperation {
}
}
assert
response
.
body
()
!=
null
;
assert
response
.
body
()
!=
null
;
String
responseBody
=
response
.
body
().
toString
();
String
responseBody
=
response
.
body
().
string
();
// 泛型的反序列化
return
responseParser
.
parse
(
responseBody
);
TypeReference
typeRef
=
new
TypeReference
<
ApiResult
<
T
>>()
{
};
return
(
ApiResult
<
T
>)
JSON
.
parseObject
(
responseBody
,
typeRef
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
WecloudException
(
"发送请求报错: "
+
e
.
getMessage
());
throw
new
WecloudException
(
"发送请求报错: "
+
e
.
getMessage
());
}
}
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/internal/
OSS
RequestMessageBuilder.java
→
im-sdk/src/main/java/com/wecloud/im/sdk/internal/
Wecloud
RequestMessageBuilder.java
View file @
e08508f7
...
@@ -15,7 +15,7 @@ import com.wecloud.im.sdk.model.WebServiceRequest;
...
@@ -15,7 +15,7 @@ import com.wecloud.im.sdk.model.WebServiceRequest;
* @Date 2022年04月13日 15:49
* @Date 2022年04月13日 15:49
* @Version 1.0
* @Version 1.0
*/
*/
public
class
OSS
RequestMessageBuilder
{
public
class
Wecloud
RequestMessageBuilder
{
private
String
endpoint
;
private
String
endpoint
;
...
@@ -31,7 +31,7 @@ public class OSSRequestMessageBuilder {
...
@@ -31,7 +31,7 @@ public class OSSRequestMessageBuilder {
return
endpoint
;
return
endpoint
;
}
}
public
OSS
RequestMessageBuilder
setEndpoint
(
String
endpoint
)
{
public
Wecloud
RequestMessageBuilder
setEndpoint
(
String
endpoint
)
{
this
.
endpoint
=
endpoint
;
this
.
endpoint
=
endpoint
;
return
this
;
return
this
;
}
}
...
@@ -40,7 +40,7 @@ public class OSSRequestMessageBuilder {
...
@@ -40,7 +40,7 @@ public class OSSRequestMessageBuilder {
return
method
;
return
method
;
}
}
public
OSS
RequestMessageBuilder
setMethod
(
HttpMethod
method
)
{
public
Wecloud
RequestMessageBuilder
setMethod
(
HttpMethod
method
)
{
this
.
method
=
method
;
this
.
method
=
method
;
return
this
;
return
this
;
}
}
...
@@ -49,17 +49,17 @@ public class OSSRequestMessageBuilder {
...
@@ -49,17 +49,17 @@ public class OSSRequestMessageBuilder {
return
Collections
.
unmodifiableMap
(
headers
);
return
Collections
.
unmodifiableMap
(
headers
);
}
}
public
OSS
RequestMessageBuilder
setHeaders
(
Map
<
String
,
String
>
headers
)
{
public
Wecloud
RequestMessageBuilder
setHeaders
(
Map
<
String
,
String
>
headers
)
{
this
.
headers
=
headers
;
this
.
headers
=
headers
;
return
this
;
return
this
;
}
}
public
OSS
RequestMessageBuilder
addHeaders
(
Map
<
String
,
String
>
headers
)
{
public
Wecloud
RequestMessageBuilder
addHeaders
(
Map
<
String
,
String
>
headers
)
{
this
.
headers
.
putAll
(
headers
);
this
.
headers
.
putAll
(
headers
);
return
this
;
return
this
;
}
}
public
OSS
RequestMessageBuilder
addHeader
(
String
key
,
String
value
)
{
public
Wecloud
RequestMessageBuilder
addHeader
(
String
key
,
String
value
)
{
headers
.
put
(
key
,
value
);
headers
.
put
(
key
,
value
);
return
this
;
return
this
;
}
}
...
@@ -68,12 +68,12 @@ public class OSSRequestMessageBuilder {
...
@@ -68,12 +68,12 @@ public class OSSRequestMessageBuilder {
return
Collections
.
unmodifiableMap
(
parameters
);
return
Collections
.
unmodifiableMap
(
parameters
);
}
}
public
OSS
RequestMessageBuilder
setParameters
(
Map
<
String
,
String
>
parameters
)
{
public
Wecloud
RequestMessageBuilder
setParameters
(
Map
<
String
,
String
>
parameters
)
{
this
.
parameters
=
parameters
;
this
.
parameters
=
parameters
;
return
this
;
return
this
;
}
}
public
OSS
RequestMessageBuilder
addParameter
(
String
key
,
String
value
)
{
public
Wecloud
RequestMessageBuilder
addParameter
(
String
key
,
String
value
)
{
parameters
.
put
(
key
,
value
);
parameters
.
put
(
key
,
value
);
return
this
;
return
this
;
}
}
...
@@ -82,7 +82,7 @@ public class OSSRequestMessageBuilder {
...
@@ -82,7 +82,7 @@ public class OSSRequestMessageBuilder {
return
originalRequest
;
return
originalRequest
;
}
}
public
OSS
RequestMessageBuilder
setOriginalRequest
(
WebServiceRequest
originalRequest
)
{
public
Wecloud
RequestMessageBuilder
setOriginalRequest
(
WebServiceRequest
originalRequest
)
{
this
.
originalRequest
=
originalRequest
;
this
.
originalRequest
=
originalRequest
;
return
this
;
return
this
;
}
}
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/sample/SignTest.java
View file @
e08508f7
...
@@ -10,15 +10,9 @@ import com.wecloud.im.sdk.common.HttpMethod;
...
@@ -10,15 +10,9 @@ import com.wecloud.im.sdk.common.HttpMethod;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.common.auth.HmacSHA256Signature
;
import
com.wecloud.im.sdk.common.auth.HmacSHA256Signature
;
import
com.wecloud.im.sdk.internal.ImHeaders
;
import
com.wecloud.im.sdk.internal.ImHeaders
;
import
com.wecloud.im.sdk.internal.OSSRequestMessageBuilder
;
import
com.wecloud.im.sdk.internal.SignUtils
;
import
com.wecloud.im.sdk.internal.SignUtils
;
import
com.wecloud.im.sdk.internal.WecloudRequestMessageBuilder
;
/**
*
* @Author luozh
* @Date 2022年04月14日 15:37
* @Version 1.0
*/
public
class
SignTest
{
public
class
SignTest
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
...
@@ -29,22 +23,17 @@ public class SignTest {
...
@@ -29,22 +23,17 @@ public class SignTest {
// 请求头
// 请求头
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
ImHeaders
.
DATE
,
date
);
headers
.
put
(
ImHeaders
.
DATE
,
date
);
headers
.
put
(
ImHeaders
.
CONTENT_TYPE
,
"application/json"
);
headers
.
put
(
ImHeaders
.
CONTENT_TYPE
,
"application/json
; charset=utf-8
"
);
// 请求参数
// 请求参数
Map
<
String
,
String
>
param
=
new
HashMap
<>();
Map
<
String
,
String
>
param
=
new
HashMap
<>();
param
.
put
(
"appKey"
,
"appKey"
);
param
.
put
(
"userId"
,
"1111222333"
);
param
.
put
(
"headPortrait"
,
""
);
param
.
put
(
"nickname"
,
"罗罗啦"
);
param
.
put
(
"deviceType"
,
"1"
);
// 发送请求
// 发送请求
RequestMessage
request
=
new
OSS
RequestMessageBuilder
().
setEndpoint
(
"/api/imClient/registerClient"
)
RequestMessage
request
=
new
Wecloud
RequestMessageBuilder
().
setEndpoint
(
"/api/imClient/registerClient"
)
.
setMethod
(
HttpMethod
.
POST
).
setParameters
(
param
).
addHeaders
(
headers
)
.
setMethod
(
HttpMethod
.
POST
).
setParameters
(
param
).
addHeaders
(
headers
)
.
setOriginalRequest
(
null
).
build
();
.
setOriginalRequest
(
null
).
build
();
String
canonicalString
=
SignUtils
.
buildCanonicalString
(
"POST"
,
resourcePath
,
request
);
String
canonicalString
=
SignUtils
.
buildCanonicalString
(
"POST"
,
resourcePath
,
request
);
String
signature
=
new
HmacSHA256Signature
().
computeSignature
(
"
secretAccessKey
"
,
canonicalString
);
String
signature
=
new
HmacSHA256Signature
().
computeSignature
(
"
287d04ds8099fb7de871e9dda845fa8b6b2302faf2ab3737
"
,
canonicalString
);
String
authorization
=
SignUtils
.
composeRequestAuthorization
(
"
accessKeyId
"
,
signature
);
String
authorization
=
SignUtils
.
composeRequestAuthorization
(
"
QizKVHcILRWp6Fd3
"
,
signature
);
System
.
out
.
println
(
"canonicalString: "
+
canonicalString
);
System
.
out
.
println
(
"canonicalString: "
+
canonicalString
);
System
.
out
.
println
(
"signature: "
+
signature
);
System
.
out
.
println
(
"signature: "
+
signature
);
System
.
out
.
println
(
"Authorization header: "
+
authorization
);
System
.
out
.
println
(
"Authorization header: "
+
authorization
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment