Unverified Commit b0964296 authored by Yang Libin's avatar Yang Libin Committed by GitHub

feat: update imclient and add junit test (#5)

parent 99bf2023
......@@ -36,7 +36,12 @@
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
......@@ -6,8 +6,8 @@ import com.qcloud.im.model.core.Profile;
import com.qcloud.im.model.core.SNS;
import com.qcloud.im.util.SigUtil;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadLocalRandom;
/**
......@@ -15,19 +15,19 @@ import java.util.concurrent.ConcurrentHashMap;
* @since 2021/07/29 16:11
*/
public class IMClient {
private static ConcurrentHashMap<String, IMClient> imClient = new ConcurrentHashMap<String, IMClient>();
private static String FORMAT_URL = "https://console.tim.qq.com/%s/%s/%s?sdkappid=%s&identifier=%s&usersig=%s&random=%d&contenttype=json";
private static ConcurrentHashMap<String, IMClient> imClient = new ConcurrentHashMap<>();
private static String FORMAT_URL = "https://console.tim.qq.com/%s/%s/%s?sdkappid=%d&identifier=%s&usersig=%s&random=%d&contenttype=json";
/**
* core methods
*/
private Account account;
private Message message;
private Profile profile;
private SNS sns;
public Account account;
public Message message;
public Profile profile;
public SNS sns;
/**
* init property
*/
private String ver = "v4";
private String version = "v4";
private Long sdkAppId;
private String userId;
private String userSig;
......@@ -40,21 +40,28 @@ public class IMClient {
return imClient.get(identify);
}
public static IMClient getInstance(Long sdkAppId, String userId, String key) {
String identify = sdkAppId + "_" + userId;
if (imClient.get(identify) == null) {
imClient.putIfAbsent(identify, new IMClient(sdkAppId, userId, key, 24 * 60 * 60L));
}
return imClient.get(identify);
}
public IMClient(Long sdkAppId, String userId, String key, Long expire) {
this.sdkAppId = sdkAppId;
this.userId = userId;
this.userSig = SigUtil.genUserSig(sdkAppId, userId, key, expire);
this.userSig = SigUtil.genUserSig(sdkAppId, key, userId, expire);
account = new Account(this);
message = new Message(this);
profile = new Profile(this);
sns = new SNS(this);
}
public IMClient() {
}
public String getUrl(String serviceName, String command) {
return String.format(FORMAT_URL, this.ver, serviceName, command,
this.sdkAppId, this.userId, this.userSig, new Random().nextInt());
// 随机生成32位无符号整数
long random = ThreadLocalRandom.current().nextLong(0, 0x100000000L);
return String.format(FORMAT_URL, this.version, serviceName, command,
this.sdkAppId, this.userId, this.userSig, random);
}
}
package com.qcloud.im.model.core;
import com.qcloud.im.IMClient;
import com.qcloud.im.model.request.ImportMsgRequest;
import com.qcloud.im.model.request.AccountImportRequest;
import com.qcloud.im.model.response.AccountImportResult;
import com.qcloud.im.util.HttpUtil;
import com.qcloud.im.util.JsonUtil;
......@@ -18,9 +18,9 @@ public class Account {
private IMClient imClient;
public AccountImportResult accountImport(ImportMsgRequest importMsgRequest) throws IOException {
public AccountImportResult accountImport(AccountImportRequest accountImportRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, ACCOUNT_IMPORT_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(importMsgRequest), null);
String result = HttpUtil.post(url, JsonUtil.obj2Str(accountImportRequest), null);
return JsonUtil.str2Obj(result, AccountImportResult.class);
}
......
......@@ -48,4 +48,13 @@ public abstract class GenericResult {
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
@Override
public String toString() {
return "GenericResult{" +
"actionStatus='" + actionStatus + '\'' +
", errorInfo='" + errorInfo + '\'' +
", errorCode='" + errorCode + '\'' +
'}';
}
}
......@@ -10,7 +10,7 @@ import java.util.List;
*/
public class IMGetAttrResult extends GenericResult {
@JsonProperty("UserAttrs")
List<UserAttrItem> userAttrs;
private List<UserAttrItem> userAttrs;
public List<UserAttrItem> getUserAttrs() {
return userAttrs;
......
package com.qcloud.im;
import com.qcloud.im.model.request.AccountImportRequest;
import com.qcloud.im.model.response.AccountImportResult;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
/**
* @author bingo
* @since 2021/7/30 16:17
*/
public class AccountTest {
@Test
public void testAccountImport() throws IOException {
long appId = 11212L;
String key = "xxx";
String userId = "test";
IMClient client = IMClient.getInstance(appId, userId, key);
AccountImportRequest request = new AccountImportRequest();
request.setFaceUrl("http://www.qq.com");
request.setIdentifier("bingo123");
request.setNick("bingo");
AccountImportResult accountImportResult = client.account.accountImport(request);
Assert.assertEquals(accountImportResult.getActionStatus(), "OK");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment