package com.azimo.tool.slack;
import com.azimo.tool.slack.model.SlackMessage;
import com.azimo.tool.slack.response.SlackPostMessageResponse;
import com.google.gson.Gson;
import okhttp3.*;
import rx.Observable;
import java.io.IOException;
/**
* Created by F1sherKK on 24/01/17.
*/
public class SlackService {
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
private OkHttpClient slackOkHttp;
private Gson gson;
public SlackService(OkHttpClient slackOkHttp, Gson gson) {
this.slackOkHttp = slackOkHttp;
this.gson = gson;
}
public Observable<SlackPostMessageResponse> postMessage(String url, SlackMessage message) {
return Observable.create(subscriber -> {
String jsonMessage = gson.toJson(message);
RequestBody body = RequestBody.create(JSON, jsonMessage);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try {
Response response = slackOkHttp.newCall(request).execute();
subscriber.onNext(new SlackPostMessageResponse(response.body().string()));
} catch (IOException e) {
e.printStackTrace();
subscriber.onError(e);
}
subscriber.onCompleted();
});
}
}