package com.cloudrail.loginwithsample; import com.cloudrail.si.interfaces.Profile; import com.cloudrail.si.servicecode.commands.json.jsonsimple.JSONObject; import com.cloudrail.si.servicecode.commands.json.jsonsimple.parser.JSONParser; import com.cloudrail.si.services.Facebook; import com.cloudrail.si.services.GooglePlus; import com.cloudrail.si.services.LinkedIn; import com.cloudrail.si.services.Twitter; import java.io.IOException; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class Communication { private static final String BASE = "http://10.0.2.2:5000"; public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); private OkHttpClient mClient = new OkHttpClient(); public String registerUserSync(Profile profile) { JSONObject body = new JSONObject(); body.put("state", profile.saveAsString()); body.put("name", getServiceName(profile)); RequestBody requestBody = RequestBody.create(JSON, body.toJSONString()); Request request = new Request.Builder().url(BASE + "/user/authenticate").post(requestBody).build(); Response response = null; try { response = mClient.newCall(request).execute(); } catch (IOException e) { e.printStackTrace(); } return response.header("Token"); } public String getStatus(String token) { Request request = new Request.Builder().url(BASE + "/user/status") .addHeader("Authorization", "token " + token).get().build(); Response response = null; String status = null; try { response = mClient.newCall(request).execute(); JSONObject resp = (JSONObject) new JSONParser().parse(response.body().string()); status = (String) resp.get("status"); } catch (Exception e) { e.printStackTrace(); } return status; } public void updateStatus(String status, String token) { JSONObject jsonObject = new JSONObject(); jsonObject.put("status", status); RequestBody requestBody = RequestBody.create(JSON, jsonObject.toJSONString()); Request request = new Request.Builder().url(BASE + "/user/status") .addHeader("Authorization", "token " + token).post(requestBody).build(); Response response = null; try { response = mClient.newCall(request).execute(); } catch (IOException e) { e.printStackTrace(); } if(response.code() != 200) { throw new RuntimeException("Updating status failed!"); } } private String getServiceName(Profile profile) { if (profile instanceof Facebook) return "Facebook"; if (profile instanceof GooglePlus) return "GooglePlus"; if (profile instanceof Twitter) return "Twitter"; if (profile instanceof LinkedIn) return "LinkedIn"; return null; } }