Skip to content

Commit 55b2038

Browse files
authored
Merge pull request #1 from MuShare/develop/user-info
Fetch user infos
2 parents 1496df1 + 1a4f535 commit 55b2038

File tree

4 files changed

+87
-1
lines changed

4 files changed

+87
-1
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ publishing {
4545

4646
publications {
4747
maven(MavenPublication) {
48-
version '0.1.5'
48+
version '0.1.6'
4949
group 'org.mushare'
5050
from components.java
5151
}

src/main/java/org/mushare/pluto/Pluto.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
package org.mushare.pluto;
22

3+
import com.github.kevinsawicki.http.HttpRequest;
4+
import net.sf.json.JSONArray;
35
import net.sf.json.JSONObject;
46
import org.mushare.pluto.exception.PlutoErrorCode;
57
import org.mushare.pluto.exception.PlutoException;
68

79
import java.io.UnsupportedEncodingException;
810
import java.security.Signature;
11+
import java.util.ArrayList;
912
import java.util.Base64;
13+
import java.util.List;
14+
import java.util.stream.Collectors;
15+
import java.util.stream.IntStream;
1016

1117
public class Pluto {
1218

1319
private PublicKeyManager keyManager;
20+
private String server;
1421
private String appId;
1522

1623
private Pluto() {
@@ -21,6 +28,7 @@ private Pluto() {
2128

2229
public static void setup(String server, String appId) {
2330
shared.keyManager = new PublicKeyManager(server);
31+
shared.server = server;
2432
shared.appId = appId;
2533
}
2634

@@ -68,4 +76,31 @@ public static PlutoUser auth(String token) throws PlutoException {
6876
return new PlutoUser(payload);
6977
}
7078

79+
public static List<PlutoUserInfo> fetUserInfos(List<Long> userIds) {
80+
if (userIds == null || userIds.size() == 0) {
81+
return new ArrayList<>();
82+
}
83+
String ids = userIds.stream()
84+
.map(userId -> userId + "-")
85+
.reduce("", (s1, s2) -> {
86+
return s1 + s2;
87+
});
88+
ids = ids.substring(0, ids.length() - 1);
89+
String response = HttpRequest.get(shared.server + "api/user/info/" + ids).body();
90+
JSONArray body = JSONObject.fromObject(response).getJSONArray("body");
91+
return IntStream.range(0, body.size())
92+
.mapToObj(index -> {
93+
JSONObject object = body.getJSONObject(index);
94+
PlutoUserInfo info = new PlutoUserInfo();
95+
info.setUserId(object.getLong("id"));
96+
if (object.containsKey("err_code") && object.getInt("err_code") == 403) {
97+
return info;
98+
}
99+
info.setAvatar(object.getString("avatar"));
100+
info.setName(object.getString("name"));
101+
return info;
102+
})
103+
.collect(Collectors.toList());
104+
}
105+
71106
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.mushare.pluto;
2+
3+
public class PlutoUserInfo {
4+
private long userId;
5+
private String name;
6+
private String avatar;
7+
8+
public long getUserId() {
9+
return userId;
10+
}
11+
12+
public void setUserId(long userId) {
13+
this.userId = userId;
14+
}
15+
16+
public String getName() {
17+
return name;
18+
}
19+
20+
public void setName(String name) {
21+
this.name = name;
22+
}
23+
24+
public String getAvatar() {
25+
return avatar;
26+
}
27+
28+
public void setAvatar(String avatar) {
29+
this.avatar = avatar;
30+
}
31+
32+
@Override
33+
public String toString() {
34+
return "PlutoUserInfo{" +
35+
"userId=" + userId +
36+
", name='" + name + '\'' +
37+
", avatar='" + avatar + '\'' +
38+
'}';
39+
}
40+
}

src/test/java/org/mushare/pluto/PlutoTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import org.mushare.pluto.exception.PlutoErrorCode;
77
import org.mushare.pluto.exception.PlutoException;
88

9+
import java.util.stream.Collectors;
10+
import java.util.stream.Stream;
11+
912
import static org.junit.Assert.assertTrue;
1013

1114
public class PlutoTest {
@@ -41,5 +44,13 @@ public void testScopes() throws PlutoException {
4144
String token = "eyJ0eXBlIjoiand0IiwiYWxnIjoicnNhIn0.eyJ0eXBlIjoiYWNjZXNzIiwiY3JlYXRlX3RpbWUiOjE1ODU0NDg1MTcsImV4cGlyZV90aW1lIjoxNTg1NDUyMTE3LCJ1c2VySWQiOjQ4LCJkZXZpY2VJZCI6IkM5QTExQTIzLTg1QTMtNEMwRC04RjQxLTE5QURBNEIwOTJFRSIsImFwcElkIjoib3JnLm11c2hhcmUuZWFzeWphcGFuZXNlIiwic2NvcGVzIjpudWxsLCJsb2dpbl90eXBlIjoiZ29vZ2xlIn0.LyYEgEIxc1ghirESmvvpDE/EEd9B0U10BRgbKt3YdfiCb6L3URizHIqJVoc6IhPZOOBNy2x2Dk/sCZ5JV1rtaZ8niMdAb7VL7PwObZiWuWT8TieuV+7DaPxcJrPdzgz46GOOX7o3+fWRr64ucOYZeiY/g0PBCL07dMPRHYyzHK7e8Wrb/59rUjO4GCad5vM5qny9jTXihB+IokBPOYDkhKCinOfMAqOOFOtVRVdxt/mCLhnjkxexwWM/a7vmJQ4qOZYHxAB9mbgDq+mbBfzWafFWhbADdZdSqyKnKUDguBE1fPRODLqTIqB0KL4cttgSHKivlwwiVaaxZUEkwGN4GQ";
4245
Pluto.auth(token);
4346
}
47+
48+
@Test
49+
public void testFetchUserInfos() {
50+
Pluto.setup("https://staging.easyjapanese-api-gateway.mushare.cn/pluto/", "org.mushare.easyjapanese");
51+
Pluto.fetUserInfos(Stream.of(1L, 2L, 3L).collect(Collectors.toList())).forEach(plutoUserInfo -> {
52+
System.out.println(plutoUserInfo);
53+
});
54+
}
4455

4556
}

0 commit comments

Comments
 (0)