package com.goka.rssts.request; import com.goka.rssts.Config; import com.goka.rssts.util.LogUtils; import com.squareup.okhttp.OkHttpClient; import org.json.JSONObject; import java.io.File; import java.util.concurrent.TimeUnit; import retrofit.Callback; import retrofit.RestAdapter; import retrofit.client.OkClient; import retrofit.http.Multipart; import retrofit.http.POST; import retrofit.http.Part; import retrofit.mime.TypedFile; /** * Created by katsuyagoto on 2015/04/26. */ public class SlackClient { public static final String BASE_API = "https://slack.com/api"; public static final String SLACK_FILE_UPLOAD = "/files.upload"; public interface Slack { @Multipart @POST(SLACK_FILE_UPLOAD) void sendScreenShot( @Part("token") String token, @Part("title") String title, @Part("file") TypedFile screenShotFile, @Part("channels") String channels, Callback<JSONObject> callback ); } private static Slack sSlack; public static void initialize() { RestAdapter.Log restLogs = new RestAdapter.Log() { @Override public void log(String s) { LogUtils.D("CLIENT", s); } }; // create client OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setReadTimeout(1, TimeUnit.MINUTES); okHttpClient.setWriteTimeout(1, TimeUnit.MINUTES); okHttpClient.setConnectTimeout(1, TimeUnit.MINUTES); //slack RestAdapter slackRestAdapter = new RestAdapter.Builder() .setEndpoint(BASE_API) .setLog(restLogs) .setClient(new OkClient(okHttpClient)) .setLogLevel(RestAdapter.LogLevel.FULL) .build(); sSlack = slackRestAdapter.create(Slack.class); } /** * Upload Screenshot to slack channel * */ public static void uploadScreenShot(String title, File screenshotFile, Callback<JSONObject> callback) { TypedFile typedScreenshotFile = new TypedFile("multipart/form-data", screenshotFile); sSlack.sendScreenShot(Config.SLACK_TOKEN, title, typedScreenshotFile, Config.SLACK_CHANNELS, callback); } }