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
232dda0b
Commit
232dda0b
authored
Apr 07, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加im-sdk模块
parent
89a22df1
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1073 additions
and
0 deletions
+1073
-0
im-sdk/pom.xml
+46
-0
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
+87
-0
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
+65
-0
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClientBuilder.java
+22
-0
im-sdk/src/main/java/com/wecloud/im/sdk/common/ApiCode.java
+173
-0
im-sdk/src/main/java/com/wecloud/im/sdk/common/ApiResult.java
+122
-0
im-sdk/src/main/java/com/wecloud/im/sdk/common/HttpClient.java
+285
-0
im-sdk/src/main/java/com/wecloud/im/sdk/enums/DeviceTypeEnum.java
+32
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/GetSignParam.java
+43
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImClient.java
+63
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImFriend.java
+57
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImTokenVerify.java
+38
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/Token.java
+39
-0
pom.xml
+1
-0
No files found.
im-sdk/pom.xml
0 → 100644
View file @
232dda0b
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<groupId>
com.wecloud
</groupId>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
im-sdk
</artifactId>
<version>
1.0
</version>
<description>
蔚可云IM SDK
</description>
<properties>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.target>
8
</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>
com.squareup.okhttp3
</groupId>
<artifactId>
okhttp
</artifactId>
<version>
3.14.7
</version>
</dependency>
<dependency>
<groupId>
com.squareup.okio
</groupId>
<artifactId>
okio
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.67
</version>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.16
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
</project>
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
;
import
com.wecloud.im.sdk.model.GetSignParam
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ImFriend
;
import
com.wecloud.im.sdk.model.ImTokenVerify
;
import
com.wecloud.im.sdk.model.Token
;
/**
* wecloud im
* @Author luozh
* @Date 2022年04月07日 16:36
* @Version 1.0
*/
public
interface
WecloudIm
{
/**
* 签名
* @Author luozh
* @Date 2022年04月07日 06:10:01
* @param signParam
* @Return
*/
String
sign
(
GetSignParam
signParam
);
/**
*
* @Author luozh
* @Date 2022年04月07日 05:59:58
* @param
* @Return
*/
Token
token
(
ImTokenVerify
tokenVerify
);
/**
* 获取用户客户端信息
* @Author luozh
* @Date 2022年04月07日 04:40:03
* @param userId 用户id
* @Return
*/
ImClient
getUserClient
(
Long
userId
);
/**
* 创建客户端
* @Author luozh
* @Date 2022年04月07日 04:41:50
* @param userId 用户id
* @param headPortrait 头像
* @param nickname 昵称
* @Return
*/
Boolean
createClient
(
Long
userId
,
String
headPortrait
,
String
nickname
,
Integer
deviceType
);
/**
* 获取朋友信息
* @Author luozh
* @Date 2022年04月07日 05:12:19
* @param clientId 当前客户端id
* @param userId 用户Id(朋友)
* @Return
*/
ImFriend
getFriendInfo
(
Long
clientId
,
Long
userId
);
/**
* 更新头像
* @Author luozh
* @Date 2022年04月07日 05:18:03
* @param clientId 当前客户端id
* @param headPortrait 头像
* @Return
*/
Boolean
updateHeadPortrait
(
Long
clientId
,
String
headPortrait
);
/**
* 更新昵称
* @Author luozh
* @Date 2022年04月07日 05:18:03
* @param clientId 当前客户端id
* @param nickname 昵称
* @Return
*/
Boolean
updateNickname
(
Long
clientId
,
String
nickname
);
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
;
import
java.net.URL
;
import
com.wecloud.im.sdk.model.GetSignParam
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ImFriend
;
import
com.wecloud.im.sdk.model.ImTokenVerify
;
import
com.wecloud.im.sdk.model.Token
;
/**
*
* @Author luozh
* @Date 2022年04月07日 16:25
* @Version 1.0
*/
public
class
WecloudImClient
implements
WecloudIm
{
private
URL
endpoint
;
private
String
appKey
;
private
String
appSecret
;
public
WecloudImClient
(
URL
endpoint
,
String
appKey
,
String
appSecret
)
{
this
.
endpoint
=
endpoint
;
this
.
appKey
=
appKey
;
this
.
appSecret
=
appSecret
;
}
@Override
public
String
sign
(
GetSignParam
signParam
)
{
return
null
;
}
@Override
public
Token
token
(
ImTokenVerify
tokenVerify
)
{
return
null
;
}
@Override
public
ImClient
getUserClient
(
Long
userId
)
{
return
null
;
}
@Override
public
Boolean
createClient
(
Long
userId
,
String
headPortrait
,
String
nickname
,
Integer
deviceType
)
{
return
null
;
}
@Override
public
ImFriend
getFriendInfo
(
Long
clientId
,
Long
userId
)
{
return
null
;
}
@Override
public
Boolean
updateHeadPortrait
(
Long
clientId
,
String
headPortrait
)
{
return
null
;
}
@Override
public
Boolean
updateNickname
(
Long
clientId
,
String
nickname
)
{
return
null
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClientBuilder.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
/**
*
* @Author luozh
* @Date 2022年04月07日 16:27
* @Version 1.0
*/
public
class
WecloudImClientBuilder
{
public
WecloudIm
build
(
String
endpoint
,
String
appKey
,
String
appSecret
)
{
try
{
URL
url
=
new
URL
(
endpoint
);
return
new
WecloudImClient
(
url
,
appKey
,
appSecret
);
}
catch
(
MalformedURLException
e
)
{
throw
new
IllegalArgumentException
(
e
);
}
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/common/ApiCode.java
0 → 100755
View file @
232dda0b
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
wecloud
.
im
.
sdk
.
common
;
/**
* <p>
* REST API 响应码
* </p>
*
* @author geekidea
* @since 2018-11-08
*/
public
enum
ApiCode
{
/**
* 操作成功
**/
SUCCESS
(
200
,
"api.response.code.SUCCESS"
),
/**
* 非法访问
**/
UNAUTHORIZED
(
401
,
"api.response.code.UNAUTHORIZED"
),
/**
* 没有权限
**/
NOT_PERMISSION
(
403
,
"api.response.code.NOT_PERMISSION"
),
/**
* 你请求的资源不存在
**/
NOT_FOUND
(
404
,
"api.response.code.NOT_FOUND"
),
/**
* 操作失败
**/
FAIL
(
500
,
"api.response.code.FAIL"
),
/**
* 登录失败
**/
LOGIN_EXCEPTION
(
4000
,
"api.response.code.LOGIN_EXCEPTION"
),
/**
* 系统异常
**/
SYSTEM_EXCEPTION
(
5000
,
"api.response.code.SYSTEM_EXCEPTION"
),
/**
* 请求参数校验异常
**/
PARAMETER_EXCEPTION
(
5001
,
"api.response.code.PARAMETER_EXCEPTION"
),
/**
* 请求参数解析异常
**/
PARAMETER_PARSE_EXCEPTION
(
5002
,
"api.response.code.PARAMETER_PARSE_EXCEPTION"
),
/**
* HTTP内容类型异常
**/
HTTP_MEDIA_TYPE_EXCEPTION
(
5003
,
"api.response.code.HTTP_MEDIA_TYPE_EXCEPTION"
),
/**
* 系统处理异常
**/
SPRING_BOOT_PLUS_EXCEPTION
(
5100
,
"api.response.code.SPRING_BOOT_PLUS_EXCEPTION"
),
/**
* 业务处理异常
**/
BUSINESS_EXCEPTION
(
5101
,
"api.response.code.BUSINESS_EXCEPTION"
),
/**
* 数据库处理异常
**/
DAO_EXCEPTION
(
5102
,
"api.response.code.DAO_EXCEPTION"
),
/**
* 验证码校验异常
**/
VERIFICATION_CODE_EXCEPTION
(
5103
,
"api.response.code.VERIFICATION_CODE_EXCEPTION"
),
/**
* 登录授权异常
**/
AUTHENTICATION_EXCEPTION
(
5104
,
"api.response.code.AUTHENTICATION_EXCEPTION"
),
/**
* 没有访问权限
**/
UNAUTHENTICATED_EXCEPTION
(
5105
,
"api.response.code.UNAUTHENTICATED_EXCEPTION"
),
/**
* 没有访问权限
**/
UNAUTHORIZED_EXCEPTION
(
5106
,
"api.response.code.UNAUTHORIZED_EXCEPTION"
),
/**
* JWT Token解析异常
**/
JWTDECODE_EXCEPTION
(
5107
,
"api.response.code.JWTDECODE_EXCEPTION"
),
/**
* 默认的异常处理
*/
HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION
(
5108
,
"api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION"
),
/**
* 已有会话,不能重复创建会话
*/
REPETITION_CONVERSATION
(
6010
,
"api.response.code.REPETITION_CONVERSATION"
),
/**
* 成员不存在,不能创建会话
*/
CLIENT_NOT_FOUNT
(
6011
,
"api.response.code.CLIENT_NOT_FOUNT"
),
/**
* 被对方拉黑
*/
IS_BE_BLACK
(
6012
,
"api.response.code.IS_BE_BLACK"
),
/**
* 你把对方拉黑
*/
IS_TO_BLACK
(
6013
,
"api.response.code.IS_TO_BLACK"
),
/**
* 已被踢出会话
*/
IS_BE_KICK_OUT
(
6014
,
"api.response.code.IS_BE_KICK_OUT"
),
/**
* 已被禁言
*/
IS_BE_MUTED
(
6015
,
"api.response.code.IS_BE_MUTED"
),
/**
* 群聊已解散
*/
IS_BE_DISBAND
(
6016
,
"api.response.code.IS_BE_DISBAND"
),
;
private
final
int
code
;
private
final
String
message
;
ApiCode
(
final
int
code
,
final
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
static
ApiCode
getApiCode
(
int
code
)
{
ApiCode
[]
ecs
=
ApiCode
.
values
();
for
(
ApiCode
ec
:
ecs
)
{
if
(
ec
.
getCode
()
==
code
)
{
return
ec
;
}
}
return
SUCCESS
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getMessage
()
{
return
message
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/common/ApiResult.java
0 → 100755
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
common
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* <p>
* REST API 返回结果
* 国际化message封装
* </p>
*
* @author geekidea
* @since 2018-11-08
*/
@Data
@Accessors
(
chain
=
true
)
@Builder
@AllArgsConstructor
public
class
ApiResult
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
8004487252556526569L
;
/**
* 响应码
*/
private
int
code
;
/**
* 响应消息
*/
private
String
message
;
/**
* 响应数据
*/
private
T
data
;
public
ApiResult
()
{
}
public
static
ApiResult
<
Boolean
>
result
(
boolean
flag
)
{
if
(
flag
)
{
return
ok
();
}
return
fail
();
}
public
static
ApiResult
<
Boolean
>
result
(
ApiCode
apiCode
)
{
return
result
(
apiCode
,
null
);
}
public
static
<
T
>
ApiResult
<
T
>
result
(
ApiCode
apiCode
,
T
data
)
{
return
result
(
apiCode
,
null
,
data
);
}
public
static
<
T
>
ApiResult
<
T
>
result
(
ApiCode
apiCode
,
T
data
,
String
language
)
{
return
result
(
apiCode
,
null
,
data
);
}
public
static
<
T
>
ApiResult
<
T
>
result
(
ApiCode
apiCode
,
String
message
,
T
data
)
{
return
(
ApiResult
<
T
>)
ApiResult
.
builder
()
.
code
(
apiCode
.
getCode
())
.
message
(
message
)
.
data
(
data
)
// .success(success)
// .time(new Date())
.
build
();
}
public
static
ApiResult
<
Boolean
>
ok
()
{
return
ok
(
null
);
}
public
static
<
T
>
ApiResult
<
T
>
ok
(
T
data
)
{
return
result
(
ApiCode
.
SUCCESS
,
data
);
}
public
static
ApiResult
<
Boolean
>
fail
(
ApiCode
apiCode
)
{
return
result
(
apiCode
,
null
);
}
public
static
<
T
>
ApiResult
<
T
>
fail
(
ApiCode
apiCode
,
String
language
)
{
return
result
(
apiCode
,
null
);
}
public
static
<
T
>
ApiResult
<
T
>
fail
(
ApiCode
apiCode
,
T
data
)
{
if
(
ApiCode
.
SUCCESS
==
apiCode
)
{
throw
new
RuntimeException
(
"失败结果状态码不能为"
+
ApiCode
.
SUCCESS
.
getCode
());
}
return
result
(
apiCode
,
data
);
}
public
static
ApiResult
<
String
>
fail
(
Integer
errorCode
,
String
message
)
{
return
new
ApiResult
<
String
>()
// .setSuccess(false)
.
setCode
(
errorCode
)
.
setMessage
(
message
);
}
public
static
ApiResult
<
Map
<
String
,
Object
>>
fail
(
String
key
,
Object
value
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>(
1
);
map
.
put
(
key
,
value
);
return
result
(
ApiCode
.
FAIL
,
map
);
}
public
static
ApiResult
<
Boolean
>
fail
()
{
return
fail
(
ApiCode
.
FAIL
);
}
public
static
ApiResult
<
Boolean
>
fail
(
String
language
)
{
return
fail
(
ApiCode
.
FAIL
,
language
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/common/HttpClient.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
common
;
import
okhttp3.Call
;
import
okhttp3.Callback
;
import
okhttp3.FormBody
;
import
okhttp3.MediaType
;
import
okhttp3.OkHttpClient
;
import
okhttp3.Request
;
import
okhttp3.RequestBody
;
import
okhttp3.Response
;
import
java.io.IOException
;
import
java.net.URLEncoder
;
import
java.security.SecureRandom
;
import
java.security.cert.X509Certificate
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
java.util.concurrent.Semaphore
;
import
java.util.concurrent.TimeUnit
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.SSLSocketFactory
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.X509TrustManager
;
import
com.alibaba.fastjson.JSON
;
/**
* 简易的http客户端 后续考虑参考RestTemplate获取aliyun oss sdk实现
* @Author luozh
* @Date 2022年04月07日 16:04
* @Version 1.0
*/
public
class
HttpClient
{
private
static
volatile
OkHttpClient
okHttpClient
=
null
;
private
static
volatile
Semaphore
semaphore
=
null
;
private
Map
<
String
,
String
>
headerMap
;
private
Map
<
String
,
String
>
paramMap
;
private
String
url
;
private
Request
.
Builder
request
;
/**
* 初始化okHttpClient,并且允许https访问
*/
private
HttpClient
()
{
if
(
okHttpClient
==
null
)
{
synchronized
(
HttpClient
.
class
)
{
if
(
okHttpClient
==
null
)
{
TrustManager
[]
trustManagers
=
buildTrustManagers
();
okHttpClient
=
new
OkHttpClient
.
Builder
()
.
connectTimeout
(
15
,
TimeUnit
.
SECONDS
)
.
writeTimeout
(
20
,
TimeUnit
.
SECONDS
)
.
readTimeout
(
20
,
TimeUnit
.
SECONDS
)
.
sslSocketFactory
(
createSSLSocketFactory
(
trustManagers
),
(
X509TrustManager
)
trustManagers
[
0
])
.
hostnameVerifier
((
hostName
,
session
)
->
true
)
.
retryOnConnectionFailure
(
true
)
.
build
();
addHeader
(
"User-Agent"
,
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
);
}
}
}
}
/**
* 用于异步请求时,控制访问线程数,返回结果
*
* @return
*/
private
static
Semaphore
getSemaphoreInstance
()
{
//只能1个线程同时访问
synchronized
(
HttpClient
.
class
)
{
if
(
semaphore
==
null
)
{
semaphore
=
new
Semaphore
(
0
);
}
}
return
semaphore
;
}
/**
* 创建OkHttpUtils
*
* @return
*/
public
static
HttpClient
builder
()
{
return
new
HttpClient
();
}
/**
* 添加url
*
* @param url
* @return
*/
public
HttpClient
url
(
String
url
)
{
this
.
url
=
url
;
return
this
;
}
/**
* 添加参数
*
* @param key 参数名
* @param value 参数值
* @return
*/
public
HttpClient
addParam
(
String
key
,
String
value
)
{
if
(
paramMap
==
null
)
{
paramMap
=
new
LinkedHashMap
<>(
16
);
}
paramMap
.
put
(
key
,
value
);
return
this
;
}
/**
* 添加请求头
*
* @param key 参数名
* @param value 参数值
* @return
*/
public
HttpClient
addHeader
(
String
key
,
String
value
)
{
if
(
headerMap
==
null
)
{
headerMap
=
new
LinkedHashMap
<>(
16
);
}
headerMap
.
put
(
key
,
value
);
return
this
;
}
/**
* 初始化get方法
*
* @return
*/
public
HttpClient
get
()
{
request
=
new
Request
.
Builder
().
get
();
StringBuilder
urlBuilder
=
new
StringBuilder
(
url
);
if
(
paramMap
!=
null
)
{
urlBuilder
.
append
(
"?"
);
try
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
paramMap
.
entrySet
())
{
urlBuilder
.
append
(
URLEncoder
.
encode
(
entry
.
getKey
(),
"utf-8"
)).
append
(
"="
).
append
(
URLEncoder
.
encode
(
entry
.
getValue
(),
"utf-8"
)).
append
(
"&"
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
urlBuilder
.
deleteCharAt
(
urlBuilder
.
length
()
-
1
);
}
request
.
url
(
urlBuilder
.
toString
());
return
this
;
}
/**
* 初始化post方法
*
* @param isJsonPost true等于json的方式提交数据,类似postman里post方法的raw
* false等于普通的表单提交
* @return
*/
public
HttpClient
post
(
boolean
isJsonPost
)
{
RequestBody
requestBody
;
if
(
isJsonPost
)
{
String
json
=
""
;
if
(
paramMap
!=
null
)
{
json
=
JSON
.
toJSONString
(
paramMap
);
}
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
json
);
}
else
{
FormBody
.
Builder
formBody
=
new
FormBody
.
Builder
();
if
(
paramMap
!=
null
)
{
paramMap
.
forEach
(
formBody:
:
add
);
}
requestBody
=
formBody
.
build
();
}
request
=
new
Request
.
Builder
().
post
(
requestBody
).
url
(
url
);
return
this
;
}
/**
* 同步请求
*
* @return
*/
public
String
sync
()
{
setHeader
(
request
);
try
{
Response
response
=
okHttpClient
.
newCall
(
request
.
build
()).
execute
();
assert
response
.
body
()
!=
null
;
return
response
.
body
().
string
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
"请求失败:"
+
e
.
getMessage
();
}
}
/**
* 异步请求,带有接口回调
*
* @param callBack
*/
public
void
async
(
ICallBack
callBack
)
{
setHeader
(
request
);
okHttpClient
.
newCall
(
request
.
build
()).
enqueue
(
new
Callback
()
{
@Override
public
void
onFailure
(
Call
call
,
IOException
e
)
{
callBack
.
onFailure
(
call
,
e
.
getMessage
());
}
@Override
public
void
onResponse
(
Call
call
,
Response
response
)
throws
IOException
{
assert
response
.
body
()
!=
null
;
callBack
.
onSuccessful
(
call
,
response
.
body
().
string
());
}
});
}
/**
* 为request添加请求头
*
* @param request
*/
private
void
setHeader
(
Request
.
Builder
request
)
{
if
(
headerMap
!=
null
)
{
try
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
headerMap
.
entrySet
())
{
request
.
addHeader
(
entry
.
getKey
(),
entry
.
getValue
());
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
/**
* 生成安全套接字工厂,用于https请求的证书跳过
*
* @return
*/
private
static
SSLSocketFactory
createSSLSocketFactory
(
TrustManager
[]
trustAllCerts
)
{
SSLSocketFactory
ssfFactory
=
null
;
try
{
SSLContext
sc
=
SSLContext
.
getInstance
(
"SSL"
);
sc
.
init
(
null
,
trustAllCerts
,
new
SecureRandom
());
ssfFactory
=
sc
.
getSocketFactory
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
ssfFactory
;
}
private
static
TrustManager
[]
buildTrustManagers
()
{
return
new
TrustManager
[]{
new
X509TrustManager
()
{
@Override
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
{
}
@Override
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
{
}
@Override
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
new
X509Certificate
[]{};
}
}
};
}
/**
* 自定义一个接口回调
*/
public
interface
ICallBack
{
void
onSuccessful
(
Call
call
,
String
data
);
void
onFailure
(
Call
call
,
String
errorMsg
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/enums/DeviceTypeEnum.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
enums
;
/**
* @Author wenzhida
* @Date 2022/3/2 17:15
* @Description 设备类型枚举
*/
public
enum
DeviceTypeEnum
{
IOS
(
1
,
"IOS端"
),
ANDROID
(
2
,
"安卓端"
),
WEB
(
3
,
"web端"
),
WIN
(
4
,
"PC-windows端"
),
MAC
(
5
,
"PC-macOs端"
);
private
final
Integer
code
;
private
final
String
desc
;
DeviceTypeEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
this
.
code
;
}
public
String
getDesc
()
{
return
this
.
desc
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/GetSignParam.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* sign
*
* @author wei
* @since 2021-04-29
*/
@Data
public
class
GetSignParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 时间戳
*/
private
String
timestamp
;
/**
* client客户端id
*/
private
String
clientId
;
/**
* appKey
*/
private
String
appKey
;
/**
* 客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs
*/
private
Integer
platform
;
/**
* 密钥
*/
private
String
appSecret
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImClient.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* im 客户端
* @Author luozh
* @Date 2022年04月07日 16:38
* @Version 1.0
*/
@Data
public
class
ImClient
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 客户端id
*/
private
Long
id
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 最后离线时间
*/
private
Date
lastOfflineTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
/**
* 应用appid
*/
private
Long
fkAppid
;
/**
* 可选 自定义属性,供开发者扩展使用。
*/
private
String
attributes
;
/**
* 客户方提供的唯一id
*/
private
String
clientId
;
/**
* 头像
*/
private
String
headPortrait
;
/**
* 主昵称
*/
private
String
nickname
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImFriend.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
*
* @Author luozh
* @Date 2022年04月07日 17:07
* @Version 1.0
*/
@Data
public
class
ImFriend
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键id
*/
private
Long
id
;
/**
* clientId
*/
private
String
clientId
;
/**
* 好友的client-id
*/
private
String
clientIdFriend
;
/**
* 申请者
*/
private
String
clientIdClaimer
;
/**
* 好友的昵称备注
*/
private
String
friendName
;
/**
* 好友拒绝原因
*/
private
String
rejectRemark
;
/**
* 好友请求说明
*/
private
String
requestRemark
;
/**
* 好友关系状态
*/
private
Integer
state
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImTokenVerify.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
/**
*
* @Author luozh
* @Date 2022年04月07日 18:02
* @Version 1.0
*/
@Data
public
class
ImTokenVerify
{
/**
* 时间戳,需与生成sign时的值一致
*/
private
String
timestamp
;
/**
* client客户端id,需与生成sign时的值一致
*/
private
String
clientId
;
/**
* appkey,需与生成sign时的值一致
*/
private
String
appKey
;
/**
* 客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs, 需与生成sign时的值一致
*/
private
Integer
platform
;
/**
* 签名sign
*/
private
String
sign
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/Token.java
0 → 100644
View file @
232dda0b
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
/**
*
* @Author luozh
* @Date 2022年04月07日 17:58
* @Version 1.0
*/
@Data
public
class
Token
{
/**
* websocket登陆令牌
*/
private
String
token
;
/**
* 客户端id
*/
private
Long
id
;
/**
* webSocket连接地址
*/
private
String
wsAddr
;
/**
* 加密密钥
*/
private
String
dataAesKey
;
/**
* 可选 自定义属性,供开发者扩展使用。
*/
private
String
attributes
;
}
pom.xml
View file @
232dda0b
...
...
@@ -69,6 +69,7 @@
<module>
core
</module>
<module>
client
</module>
<module>
scheduled
</module>
<module>
im-sdk
</module>
<!-- <module>api-app</module>-->
<!-- <module>distribution</module>-->
<!-- <module>admin</module>-->
...
...
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