-
Notifications
You must be signed in to change notification settings - Fork 12
/
SyncGitterApiClient.java
161 lines (127 loc) · 5.2 KB
/
SyncGitterApiClient.java
1
2
3
4
5
6
7
8
9
10
11
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
101
102
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
157
158
159
160
161
package com.amatkivskiy.gitter.sdk.sync.client;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.amatkivskiy.gitter.sdk.Constants;
import com.amatkivskiy.gitter.sdk.api.builder.GitterApiBuilder;
import com.amatkivskiy.gitter.sdk.converter.UserJsonDeserializer;
import com.amatkivskiy.gitter.sdk.model.request.ChatMessagesRequestParams;
import com.amatkivskiy.gitter.sdk.model.request.UnreadRequestParam;
import com.amatkivskiy.gitter.sdk.model.request.UpdateRoomRequestParam;
import com.amatkivskiy.gitter.sdk.model.request.UserAccountType;
import com.amatkivskiy.gitter.sdk.model.response.BooleanResponse;
import com.amatkivskiy.gitter.sdk.model.response.OrgResponse;
import com.amatkivskiy.gitter.sdk.model.response.RepoResponse;
import com.amatkivskiy.gitter.sdk.model.response.SearchUsersResponse;
import com.amatkivskiy.gitter.sdk.model.response.UserResponse;
import com.amatkivskiy.gitter.sdk.model.response.message.MessageResponse;
import com.amatkivskiy.gitter.sdk.model.response.message.UnReadMessagesResponse;
import com.amatkivskiy.gitter.sdk.model.response.room.RoomResponse;
import com.amatkivskiy.gitter.sdk.model.response.room.SearchRoomsResponse;
import com.amatkivskiy.gitter.sdk.sync.api.SyncGitterApi;
import java.util.List;
import retrofit.converter.GsonConverter;
import static com.amatkivskiy.gitter.sdk.util.RequestUtils.convertChatMessagesParamsToMap;
public class SyncGitterApiClient {
private SyncGitterApi api;
public SyncGitterApiClient(SyncGitterApi api) {
this.api = api;
}
// User API
public UserResponse getCurrentUser() {
return api.getCurrentUser();
}
public List<OrgResponse> getUserOrgs(String userId) {
return api.getUserOrgs(userId);
}
public List<RepoResponse> getUserRepos(String userId) {
return api.getUserRepos(userId);
}
public List<UserResponse> searchUsers(UserAccountType type, String searchTerm) {
SearchUsersResponse response = api.searchUsers(type, searchTerm);
return response.results;
}
public List<UserResponse> searchUsers(String searchTerm) {
SearchUsersResponse response = api.searchUsers(searchTerm);
return response.results;
}
public List<RoomResponse> getCurrentUserRooms() {
return api.getCurrentUserRooms();
}
// Rooms API
public RoomResponse getUserRooms(String userId) {
return api.getUserRooms(userId);
}
public List<UserResponse> getRoomUsers(String roomId) {
return api.getRoomUsers(roomId);
}
public RoomResponse joinRoom(String userId, String roomId) {
return api.joinRoom(userId, roomId);
}
public RoomResponse updateRoom(String roomId, UpdateRoomRequestParam params) {
return api.updateRoom(roomId, params);
}
/**
* Removes specified user from the room. It can be used to leave room.
*
* @param roomId Id of the room.
* @param userId Id of the user to remove.
* @return true if successful.
*/
public BooleanResponse leaveRoom(String roomId, String userId) {
return api.leaveRoom(roomId, userId);
}
public List<RoomResponse> searchRooms(String searchTerm) {
SearchRoomsResponse response = api.searchRooms(searchTerm);
return response.results;
}
/**
* @return suggested rooms for the current user.
*/
public List<RoomResponse> getSuggestedRooms() {
return api.getSuggestedRooms();
}
public List<RoomResponse> searchRooms(String searchTerm, int limit) {
SearchRoomsResponse response = api.searchRooms(searchTerm, limit);
return response.results;
}
public BooleanResponse deleteRoom(String roomId) {
return api.deleteRoom(roomId);
}
// Messages API
public MessageResponse sendMessage(String roomId, String text) {
return api.sendMessage(roomId, text);
}
public List<MessageResponse> getRoomMessages(String roomId, ChatMessagesRequestParams params) {
return api.getRoomMessages(roomId, convertChatMessagesParamsToMap(params));
}
public List<MessageResponse> getRoomMessages(String roomId) {
return getRoomMessages(roomId, null);
}
public MessageResponse getRoomMessageById(String roomId, String messageId) {
return api.getRoomMessageById(roomId, messageId);
}
public MessageResponse updateMessage(String roomId, String chatMessageId, String text) {
return api.updateMessage(roomId, chatMessageId, text);
}
public BooleanResponse markReadMessages(String userId, String roomId, List<String> chatIds) {
return api.markReadMessages(userId, roomId, new UnreadRequestParam(chatIds));
}
public UnReadMessagesResponse getUnReadMessages(String userId, String roomId) {
return api.getUnReadMessages(userId, roomId);
}
public static class Builder extends GitterApiBuilder<Builder, SyncGitterApiClient> {
protected String getFullEndpointUrl() {
return Constants.GitterEndpoints.GITTER_API_ENDPOINT + "/" + apiVersion + "/";
}
@Override
public SyncGitterApiClient build() {
prepareDefaultBuilderConfig();
Gson gson = new GsonBuilder()
.registerTypeAdapter(UserResponse.class, new UserJsonDeserializer())
.create();
restAdapterBuilder.setConverter(new GsonConverter(gson));
SyncGitterApi api = restAdapterBuilder.build().create(SyncGitterApi.class);
return new SyncGitterApiClient(api);
}
}
}