Skip to content

Commit 4cbd0ca

Browse files
committed
Merge pull request #11 from Gitteroid/dev
Updated sdk with latest changes in the API.
2 parents c854c3f + 615b737 commit 4cbd0ca

File tree

26 files changed

+395
-177
lines changed

26 files changed

+395
-177
lines changed

README.md

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ repositories {
3636
}
3737
3838
dependencies {
39-
compile 'com.github.amatkivskiy:gitter.sdk.rx:1.5'
39+
compile 'com.github.amatkivskiy:gitter.sdk.rx:1.5.1'
4040
}
4141
```
4242

@@ -47,7 +47,7 @@ repositories {
4747
}
4848
4949
dependencies {
50-
compile 'com.github.amatkivskiy:gitter.sdk.async:1.5'
50+
compile 'com.github.amatkivskiy:gitter.sdk.async:1.5.1'
5151
}
5252
```
5353

@@ -58,11 +58,18 @@ repositories {
5858
}
5959
6060
dependencies {
61-
compile 'com.github.amatkivskiy:gitter.sdk.sync:1.4'
61+
compile 'com.github.amatkivskiy:gitter.sdk.sync:1.5.1'
6262
}
6363
```
6464

6565
###<a name="ReleaseNotes">**Release notes**
66+
- **1.5.1** (07.05.2016)
67+
- Updated `RoomRepsonse` data structure.
68+
- Added `aroundId` and `q` params for chat messages request.
69+
- Added `Update room` request.
70+
- Fixed `Issue` data structure type.
71+
- Faye: added ability to set custom OkHttpClient.
72+
- Faye: changed `onSubscribed()` params, no it passes messages snapshots.
6673
- **1.5** (14.01.2016)
6774
- Added faye api support.
6875
- Added room events streaming api support.
@@ -351,34 +358,16 @@ client.getRoomEventsStream(roomId).subscribe(new Action1<RoomEvent>() {
351358
1 Setup ```AsyncGitterFayeClient```:
352359

353360
```java
354-
AsyncGitterFayeClient client = new AsyncGitterFayeClient("account_token");
355-
```
356-
357-
also you can provide disconnection listener (sometimes Faye server drops connection):
358-
359-
```java
360-
AsyncGitterFayeClient client = new AsyncGitterFayeClient(ACCOUNT_TOKEN, new DisconnectionListener() {
361-
@Override
362-
public void onDisconnected() {
363-
// Client has disconnected. You can reconnect it here.
364-
}
365-
});
366-
```
367-
368-
and you can provide error listener (is called when something went wrong):
369-
370-
```java
371-
AsyncGitterFayeClient client = new AsyncGitterFayeClient(ACCOUNT_TOKEN, new DisconnectionListener() {
372-
@Override
373-
public void onDisconnected() {
374-
// Client has disconnected. You can reconnect it here.
375-
}
376-
}, new FailListener() {
377-
@Override
378-
public void onFailed(Exception ex) {
379-
// Oh, something horrible happened.
380-
}
381-
});
361+
AsyncGitterFayeClient client = new AsyncGitterFayeClientBuilder()
362+
.withAccountToken("account_token")
363+
.withOnDisconnected(new DisconnectionListener() {
364+
@Override
365+
public void onDisconnected() {
366+
// Client has disconnected. You can reconnect it here.
367+
}
368+
})
369+
.withOkHttpClient(new OkHttpClient())
370+
.build();
382371
```
383372

384373
2 Connect it to the server:
@@ -439,7 +428,7 @@ public void onFailed(String channel,Exception ex){
439428
}
440429

441430
@Override
442-
public void onSubscribed(String channel){
431+
public void onSubscribed(String channel, List<MessageResponse> messagesSnapshot){
443432
}
444433

445434
@Override

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ buildscript {
66
}
77

88
allprojects {
9-
version '1.4'
9+
version '1.5.1'
1010

1111
repositories {
1212
jcenter()

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip

library/async/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ repositories {
1818
publish {
1919
groupId = 'com.github.amatkivskiy'
2020
artifactId = 'gitter.sdk.async'
21-
publishVersion = '1.5'
21+
publishVersion = '1.5.1'
2222
desc = 'Gitter.im Java SDK that facilitates communication with Gitter API and Gitter Faye API'
2323
licences = ['MIT']
2424
website = 'https://github.com/Gitteroid/GitterJavaSDK'
@@ -28,7 +28,7 @@ publish {
2828

2929
dependencies {
3030
// compile project(':library:core')
31-
compile 'com.github.amatkivskiy:gitter.sdk.core:1.4'
31+
compile 'com.github.amatkivskiy:gitter.sdk.core:1.5'
3232

3333
compile 'com.squareup.okio:okio:1.6.0'
3434
compile 'com.squareup.okhttp:okhttp:2.5.0'

library/async/src/main/java/com/amatkivskiy/gitter/sdk/async/api/AsyncGitterApi.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,33 @@
11
package com.amatkivskiy.gitter.sdk.async.api;
22

33
import com.amatkivskiy.gitter.sdk.model.request.UnreadRequestParam;
4+
import com.amatkivskiy.gitter.sdk.model.request.UpdateRoomRequestParam;
45
import com.amatkivskiy.gitter.sdk.model.request.UserAccountType;
5-
import com.amatkivskiy.gitter.sdk.model.response.*;
6+
import com.amatkivskiy.gitter.sdk.model.response.BooleanResponse;
7+
import com.amatkivskiy.gitter.sdk.model.response.OrgResponse;
8+
import com.amatkivskiy.gitter.sdk.model.response.RepoResponse;
9+
import com.amatkivskiy.gitter.sdk.model.response.SearchUsersResponse;
10+
import com.amatkivskiy.gitter.sdk.model.response.UserResponse;
611
import com.amatkivskiy.gitter.sdk.model.response.message.MessageResponse;
712
import com.amatkivskiy.gitter.sdk.model.response.message.UnReadMessagesResponse;
813
import com.amatkivskiy.gitter.sdk.model.response.room.RoomResponse;
914
import com.amatkivskiy.gitter.sdk.model.response.room.SearchRoomsResponse;
10-
import retrofit.Callback;
11-
import retrofit.http.*;
1215

1316
import java.util.List;
1417
import java.util.Map;
1518

19+
import retrofit.Callback;
20+
import retrofit.http.Body;
21+
import retrofit.http.DELETE;
22+
import retrofit.http.Field;
23+
import retrofit.http.FormUrlEncoded;
24+
import retrofit.http.GET;
25+
import retrofit.http.POST;
26+
import retrofit.http.PUT;
27+
import retrofit.http.Path;
28+
import retrofit.http.Query;
29+
import retrofit.http.QueryMap;
30+
1631
public interface AsyncGitterApi {
1732
@GET("/user")
1833
void getCurrentUser(Callback<UserResponse> callback);
@@ -32,7 +47,6 @@ public interface AsyncGitterApi {
3247
@GET("/user/{userId}/channels")
3348
void getUserChannels(@Path("userId") String userId, Callback<List<RoomResponse>> callback);
3449

35-
3650
@GET("/rooms/{roomId}/users")
3751
void getRoomUsers(@Path("roomId") String roomId, Callback<List<UserResponse>> callback);
3852

@@ -43,6 +57,10 @@ public interface AsyncGitterApi {
4357
@FormUrlEncoded
4458
void joinRoom(@Field("uri") String roomUri, Callback<RoomResponse> callback);
4559

60+
@PUT("/rooms/{roomId}")
61+
void updateRoom(@Path("roomId") String roomId, @Body UpdateRoomRequestParam param,
62+
Callback<RoomResponse> callback);
63+
4664
@GET("/rooms")
4765
void searchRooms(@Query("q") String searchTerm, Callback<SearchRoomsResponse> callback);
4866

library/async/src/main/java/com/amatkivskiy/gitter/sdk/async/client/AsyncGitterApiClient.java

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
package com.amatkivskiy.gitter.sdk.async.client;
22

3+
import com.google.gson.Gson;
4+
import com.google.gson.GsonBuilder;
5+
36
import com.amatkivskiy.gitter.sdk.Constants;
47
import com.amatkivskiy.gitter.sdk.api.builder.GitterApiBuilder;
58
import com.amatkivskiy.gitter.sdk.async.api.AsyncGitterApi;
69
import com.amatkivskiy.gitter.sdk.converter.UserJsonDeserializer;
710
import com.amatkivskiy.gitter.sdk.model.request.ChatMessagesRequestParams;
811
import com.amatkivskiy.gitter.sdk.model.request.UnreadRequestParam;
12+
import com.amatkivskiy.gitter.sdk.model.request.UpdateRoomRequestParam;
913
import com.amatkivskiy.gitter.sdk.model.request.UserAccountType;
10-
import com.amatkivskiy.gitter.sdk.model.response.*;
14+
import com.amatkivskiy.gitter.sdk.model.response.BooleanResponse;
15+
import com.amatkivskiy.gitter.sdk.model.response.OrgResponse;
16+
import com.amatkivskiy.gitter.sdk.model.response.RepoResponse;
17+
import com.amatkivskiy.gitter.sdk.model.response.SearchUsersResponse;
18+
import com.amatkivskiy.gitter.sdk.model.response.UserResponse;
1119
import com.amatkivskiy.gitter.sdk.model.response.message.MessageResponse;
1220
import com.amatkivskiy.gitter.sdk.model.response.message.UnReadMessagesResponse;
1321
import com.amatkivskiy.gitter.sdk.model.response.room.RoomResponse;
1422
import com.amatkivskiy.gitter.sdk.model.response.room.SearchRoomsResponse;
15-
import com.google.gson.Gson;
16-
import com.google.gson.GsonBuilder;
23+
24+
import java.util.List;
25+
1726
import retrofit.Callback;
1827
import retrofit.RetrofitError;
1928
import retrofit.client.Response;
2029
import retrofit.converter.GsonConverter;
2130

22-
import java.util.HashMap;
23-
import java.util.List;
31+
import static com.amatkivskiy.gitter.sdk.util.RequestUtils.convertChatMessagesParamsToMap;
2432

2533
public class AsyncGitterApiClient {
2634
private AsyncGitterApi api;
@@ -65,6 +73,11 @@ public void joinRoom(String roomUri, Callback<RoomResponse> callback) {
6573
api.joinRoom(roomUri, callback);
6674
}
6775

76+
public void updateRoom(String roomId, UpdateRoomRequestParam params,
77+
Callback<RoomResponse> callback) {
78+
api.updateRoom(roomId, params, callback);
79+
}
80+
6881
/**
6982
* Removes specified user from the room. It can be used to leave room.
7083
*
@@ -167,29 +180,6 @@ public void getUnReadMessages(String userId, String roomId, Callback<UnReadMessa
167180
api.getUnReadMessages(userId, roomId, callback);
168181
}
169182

170-
private HashMap<String, String> convertChatMessagesParamsToMap(ChatMessagesRequestParams params) {
171-
HashMap<String, String> options = new HashMap<>();
172-
if (params != null) {
173-
if (params.limit != null) {
174-
options.put(Constants.GitterRequestParams.LIMIT_PARAM, String.valueOf(params.limit.intValue()));
175-
}
176-
177-
if (params.afterId != null) {
178-
options.put(Constants.GitterRequestParams.AFTER_ID_PARAM, params.afterId);
179-
}
180-
181-
if (params.beforeId != null) {
182-
options.put(Constants.GitterRequestParams.BEFORE_ID_PARAM, params.beforeId);
183-
}
184-
185-
if (params.skipCount != null) {
186-
options.put(Constants.GitterRequestParams.SKIP_PARAM, String.valueOf(params.skipCount.intValue()));
187-
}
188-
}
189-
190-
return options;
191-
}
192-
193183
public static class Builder extends GitterApiBuilder<Builder, AsyncGitterApiClient> {
194184

195185
protected String getFullEndpointUrl() {

library/async/src/main/java/com/amatkivskiy/gitter/sdk/async/faye/client/AsyncGitterFayeClient.java

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public class AsyncGitterFayeClient {
4545

4646
private static final int DEFAULT_PING_INTERVAL_SEC = 5;
4747

48+
// Keep connection timer task
4849
private TimerTask pingTask;
4950
private Logger logger = new Logger() {
5051
@Override
@@ -56,10 +57,12 @@ public void log(String message) {
5657
private String accountToken;
5758
private String clientId;
5859
private WebSocket webSocket;
60+
private OkHttpClient okHttpClient;
5961
private HashMap<String, ChannelListener> channelListeners = new HashMap<>();
6062

6163
private boolean catchDisconnection = true;
62-
private WebSocketListener webSocketListener;
64+
65+
// State listeners
6366
private HandshakeListener handshakeListener;
6467
private ConnectionListener connectionListener;
6568
private DisconnectionListener disconnectionListener = new DisconnectionListener() {
@@ -68,27 +71,21 @@ public void onDisconnected() {
6871

6972
}
7073
};
71-
7274
private FailListener failListener = new FailListener() {
7375
@Override
7476
public void onFailed(Exception ex) {
7577
logger.log("Caught error: " + ex);
7678
}
7779
};
7880

79-
public AsyncGitterFayeClient(String accountToken) {
80-
this.accountToken = accountToken;
81-
}
82-
83-
public AsyncGitterFayeClient(String accountToken, DisconnectionListener onDisconnected) {
84-
this.accountToken = accountToken;
85-
this.disconnectionListener = onDisconnected;
86-
}
87-
88-
public AsyncGitterFayeClient(String accountToken, DisconnectionListener onDisconnected, FailListener failListener) {
81+
public AsyncGitterFayeClient(String accountToken,
82+
DisconnectionListener onDisconnected,
83+
FailListener failListener,
84+
OkHttpClient okHttpClient) {
8985
this.accountToken = accountToken;
90-
this.disconnectionListener = onDisconnected;
91-
this.failListener = failListener;
86+
if (onDisconnected != null) this.disconnectionListener = onDisconnected;
87+
if (failListener != null) this.failListener = failListener;
88+
if (okHttpClient != null) this.okHttpClient = okHttpClient;
9289
}
9390

9491
/**
@@ -184,7 +181,7 @@ public void onHandshakeFinished() {
184181
};
185182

186183
Request request = new Request.Builder().url(GITTER_FAYE_ENDPOINT).build();
187-
WebSocketCall.create(new OkHttpClient(), request).enqueue(this.webSocketListener = createWebSocketListener());
184+
WebSocketCall.create(this.okHttpClient, request).enqueue(createWebSocketListener());
188185
}
189186

190187
private void sendMessage(JsonObject message) {
@@ -256,7 +253,7 @@ public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws
256253
ChannelListener listener = channelListeners.get(subscriptionChannel);
257254
if (listener != null) {
258255
if (json.get(SUCCESS).getAsBoolean()) {
259-
listener.onSubscribed(channel);
256+
listener.onSubscribed(channel, Utils.parseSnapshotJson(json));
260257
} else {
261258
listener.onFailed(channel, new Exception(json.toString()));
262259
}
@@ -306,7 +303,6 @@ public void onClose(int code, String reason) {
306303

307304
private void cleanUp() {
308305
webSocket = null;
309-
webSocketListener = null;
310306

311307
channelListeners.clear();
312308
channelListeners = null;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.amatkivskiy.gitter.sdk.async.faye.client;
2+
3+
import com.amatkivskiy.gitter.sdk.async.faye.interfaces.DisconnectionListener;
4+
import com.amatkivskiy.gitter.sdk.async.faye.interfaces.FailListener;
5+
import com.squareup.okhttp.OkHttpClient;
6+
7+
public class AsyncGitterFayeClientBuilder {
8+
private String accountToken;
9+
private DisconnectionListener onDisconnected;
10+
private FailListener failListener;
11+
private OkHttpClient okHttpClient;
12+
13+
public AsyncGitterFayeClientBuilder withAccountToken(String accountToken) {
14+
this.accountToken = accountToken;
15+
return this;
16+
}
17+
18+
public AsyncGitterFayeClientBuilder withOnDisconnected(DisconnectionListener onDisconnected) {
19+
this.onDisconnected = onDisconnected;
20+
return this;
21+
}
22+
23+
public AsyncGitterFayeClientBuilder withFailListener(FailListener failListener) {
24+
this.failListener = failListener;
25+
return this;
26+
}
27+
28+
public AsyncGitterFayeClientBuilder withOkHttpClient(OkHttpClient okHttpClient) {
29+
this.okHttpClient = okHttpClient;
30+
return this;
31+
}
32+
33+
public AsyncGitterFayeClient build() {
34+
return new AsyncGitterFayeClient(accountToken, onDisconnected, failListener, okHttpClient);
35+
}
36+
}

0 commit comments

Comments
 (0)