Newer
Older
package it.inaf.ia2.gms.client;
import com.fasterxml.jackson.databind.ObjectMapper;
import it.inaf.ia2.client.BaseClient;
import it.inaf.ia2.gms.client.call.AddInvitedRegistrationCall;
import it.inaf.ia2.gms.client.call.AddMemberCall;
import it.inaf.ia2.gms.client.call.AddPermissionCall;
import it.inaf.ia2.gms.client.call.CreateGroupCall;
import it.inaf.ia2.gms.client.call.DeleteGroupCall;
import it.inaf.ia2.gms.client.call.GetGroupPermissionsCall;
import it.inaf.ia2.gms.client.call.GetGroupStatusCall;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import it.inaf.ia2.gms.client.call.GetMemberEmailAddresses;
import it.inaf.ia2.gms.client.call.GetUserGroupsCall;
import it.inaf.ia2.gms.client.call.GetUserPermissionsCall;
import it.inaf.ia2.gms.client.call.ListGroupsCall;
import it.inaf.ia2.gms.client.call.RemoveMemberCall;
import it.inaf.ia2.gms.client.call.RemovePermissionCall;
import it.inaf.ia2.gms.client.call.SetPermissionCall;
import it.inaf.ia2.gms.client.model.GroupPermission;
import it.inaf.ia2.gms.client.model.Permission;
import it.inaf.ia2.gms.client.model.UserPermission;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
public class GmsClient extends BaseClient {
private static final ObjectMapper MAPPER = new ObjectMapper();
private String accessToken;
public GmsClient(String gmsBaseUri) {
super(gmsBaseUri);
}
public GmsClient setAccessToken(String accessToken) {
this.accessToken = accessToken;
return this;
}
public List<String> getMyGroups(String prefix) {
return new GetUserGroupsCall(this).getUserGroups(prefix);
}
@Override
public HttpRequest.Builder newRequest(String endpoint) {
if (accessToken == null) {
throw new IllegalStateException("Access token is null");
}
return super.newRequest(getUri(endpoint))
.setHeader("Authorization", "Bearer " + accessToken);
}
@Override
public HttpRequest.Builder newRequest(URI uri) {
if (accessToken == null) {
throw new IllegalStateException("Access token is null");
}
return super.newRequest(uri)
.setHeader("Authorization", "Bearer " + accessToken);
}
@Override
protected <T> String getInvalidStatusCodeExceptionMessage(HttpRequest request, HttpResponse<T> response) {
return response.headers().firstValue("Content-Type")
.map(contentType -> {
try {
if (contentType.startsWith("text/plain")) {
String errorResponseBody = null;
if (response.body() instanceof String) {
errorResponseBody = (String) response.body();
} else if (response.body() instanceof InputStream) {
errorResponseBody = new String(((InputStream) response.body()).readAllBytes(), StandardCharsets.UTF_8);
}
if (errorResponseBody != null && !errorResponseBody.isBlank()) {
return errorResponseBody;
}
} else if (contentType.startsWith("application/json")
|| contentType.startsWith("text/json")) {
Map<String, Object> errorResponseBody = null;
if (response.body() instanceof String) {
errorResponseBody = MAPPER.readValue((String) response.body(), Map.class);
} else if (response.body() instanceof InputStream) {
errorResponseBody = MAPPER.readValue((InputStream) response.body(), Map.class);
}
if (errorResponseBody != null && errorResponseBody.containsKey("error")) {
return (String) errorResponseBody.get("error");
}
}
} catch (IOException ex) {
}
return null;
}).orElse(super.getInvalidStatusCodeExceptionMessage(request, response));
}
public List<String> listGroups(String prefix, boolean recursive) {
return new ListGroupsCall(this).listGroups(prefix, recursive);
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
}
public List<String> getUserGroups(String userId) {
return new GetUserGroupsCall(this).getUserGroups(userId);
}
public List<String> getUserGroups(String userId, String prefix) {
return new GetUserGroupsCall(this).getUserGroups(userId, prefix);
}
public void createGroup(String completeGroupName, boolean leaf) {
new CreateGroupCall(this).createGroup(completeGroupName, leaf);
}
public void deleteGroup(String completeGroupName) {
new DeleteGroupCall(this).deleteGroup(completeGroupName);
}
public void addMember(String completeGroupName, String userId) {
new AddMemberCall(this).addMember(completeGroupName, userId);
}
public void removeMember(String completeGroupName, String userId) {
new RemoveMemberCall(this).removeMember(completeGroupName, userId);
}
public String addPermission(String completeGroupName, String userId, Permission permission) {
return new AddPermissionCall(this).addPermission(completeGroupName, userId, permission);
}
public String setPermission(String completeGroupName, String userId, Permission permission) {
return new SetPermissionCall(this).setPermission(completeGroupName, userId, permission);
}
public void removePermission(String completeGroupName, String userId) {
new RemovePermissionCall(this).removePermission(completeGroupName, userId);
}
public List<UserPermission> getUserPermissions(String userId) {
return new GetUserPermissionsCall(this).getUserPermissions(userId);
}
public List<GroupPermission> getGroupPermissions(String groupId) {
return new GetGroupPermissionsCall(this).getGroupPermissions(groupId);
}
public void addInvitedRegistration(String token, String email, Map<String, Permission> groupsPermissions) {
new AddInvitedRegistrationCall(this).addInvitedRegistration(token, email, groupsPermissions);
}
public List<String> getMemberEmailAddresses(String groupId, Permission permission) {
return new GetMemberEmailAddresses(this).getMemberEmailAddresses(groupId, permission);
}
public List<String[]> getStatus(String groupCompleteName) {
return new GetGroupStatusCall(this).getStatus(groupCompleteName);