Skip to content

Commit 7756bed

Browse files
committed
Implement fetUserInfos
1 parent a7a90ec commit 7756bed

3 files changed

Lines changed: 52 additions & 3 deletions

File tree

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

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
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;
12+
import java.util.Arrays;
913
import java.util.Base64;
1014
import java.util.List;
15+
import java.util.stream.Collectors;
16+
import java.util.stream.IntStream;
17+
import java.util.stream.Stream;
1118

1219
public class Pluto {
1320

@@ -71,9 +78,31 @@ public static PlutoUser auth(String token) throws PlutoException {
7178
return new PlutoUser(payload);
7279
}
7380

74-
public static List<PlutoUserInfo> fetUserInfos(long[] userIds) {
75-
76-
return null;
81+
public static List<PlutoUserInfo> fetUserInfos(List<Long> userIds) {
82+
if (userIds == null || userIds.size() == 0) {
83+
return new ArrayList<>();
84+
}
85+
String ids = userIds.stream()
86+
.map(userId -> userId + "-")
87+
.reduce("", (s1, s2) -> {
88+
return s1 + s2;
89+
});
90+
ids = ids.substring(0, ids.length() - 1);
91+
String response = HttpRequest.get(shared.server + "api/user/info/" + ids).body();
92+
JSONArray body = JSONObject.fromObject(response).getJSONArray("body");
93+
return IntStream.range(0, body.size())
94+
.mapToObj(index -> {
95+
JSONObject object = body.getJSONObject(index);
96+
PlutoUserInfo info = new PlutoUserInfo();
97+
info.setUserId(object.getLong("id"));
98+
if (object.containsKey("err_code") && object.getInt("err_code") == 403) {
99+
return info;
100+
}
101+
info.setAvatar(object.getString("avatar"));
102+
info.setName(object.getString("name"));
103+
return info;
104+
})
105+
.collect(Collectors.toList());
77106
}
78107

79108
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,13 @@ public String getAvatar() {
2828
public void setAvatar(String avatar) {
2929
this.avatar = avatar;
3030
}
31+
32+
@Override
33+
public String toString() {
34+
return "PlutoUserInfo{" +
35+
"userId=" + userId +
36+
", name='" + name + '\'' +
37+
", avatar='" + avatar + '\'' +
38+
'}';
39+
}
3140
}

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)