PageRenderTime 41ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/app/src/main/java/coo/app/baseline/fax/HttpClient.java

https://bitbucket.org/bindalgangaaram/rc-my-job
Java | 91 lines | 72 code | 19 blank | 0 comment | 1 complexity | c2afce348b6947fb416d464a860be3a0 MD5 | raw file
  1. package coo.app.baseline.fax;
  2. import com.alibaba.fastjson.JSON;
  3. import com.ringcentral.RestException;
  4. import java.io.IOException;
  5. import java.lang.reflect.Type;
  6. import okhttp3.FormBody;
  7. import okhttp3.HttpUrl;
  8. import okhttp3.MediaType;
  9. import okhttp3.MultipartBody;
  10. import okhttp3.Request;
  11. import okhttp3.RequestBody;
  12. import okhttp3.ResponseBody;
  13. public abstract class HttpClient {
  14. private static final MediaType jsonMediaType = MediaType.parse("application/json; charset=utf-8");
  15. protected String server;
  16. public abstract ResponseBody request(Request.Builder builder) throws IOException, com.ringcentral.RestException;
  17. private HttpUrl buildUrl(String endpoint, QueryParameter... queryParameters) {
  18. HttpUrl.Builder urlBuilder = HttpUrl.parse(server).newBuilder(endpoint);
  19. for (QueryParameter queryParameter : queryParameters) {
  20. urlBuilder = urlBuilder.addQueryParameter(queryParameter.key, queryParameter.value);
  21. }
  22. return urlBuilder.build();
  23. }
  24. public ResponseBody get(String endpoint, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  25. HttpUrl url = buildUrl(endpoint, queryParameters);
  26. return request(new Request.Builder().url(url));
  27. }
  28. public ResponseBody post(String endpoint, Object object, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  29. RequestBody body = RequestBody.create(jsonMediaType, JSON.toJSONString(object));
  30. HttpUrl url = buildUrl(endpoint, queryParameters);
  31. return request(new Request.Builder().url(url).post(body));
  32. }
  33. public ResponseBody post(String endpoint, RequestBody requestBody, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  34. HttpUrl url = buildUrl(endpoint, queryParameters);
  35. return request(new Request.Builder().url(url).post(requestBody));
  36. }
  37. public ResponseBody put(String endpoint, Object object, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  38. RequestBody body = RequestBody.create(jsonMediaType, JSON.toJSONString(object));
  39. HttpUrl url = buildUrl(endpoint, queryParameters);
  40. return request(new Request.Builder().url(url).put(body));
  41. }
  42. public ResponseBody delete(String endpoint, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  43. HttpUrl url = buildUrl(endpoint, queryParameters);
  44. return request(new Request.Builder().url(url).delete());
  45. }
  46. public ResponseBody postBinary(String endpoint, String name, String fileName, String mediaType, byte[] fileContent) throws IOException, com.ringcentral.RestException {
  47. RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
  48. .addFormDataPart(name, fileName, RequestBody.create(MediaType.parse(mediaType), fileContent))
  49. .build();
  50. return request(new Request.Builder().url(server + endpoint).post(requestBody));
  51. }
  52. public <T> T get(String endpoint, Type type, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  53. return JSON.parseObject(get(endpoint, queryParameters).string(), type);
  54. }
  55. public <T> T post(String endpoint, FormBody formBody, Type type, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  56. return JSON.parseObject(post(endpoint, formBody, queryParameters).string(), type);
  57. }
  58. public <T> T post(String endpoint, Object object, Type type, QueryParameter... queryParameters) throws IOException, com.ringcentral.RestException {
  59. return JSON.parseObject(post(endpoint, object, queryParameters).string(), type);
  60. }
  61. public <T> T put(String endpoint, Object object, Type type, QueryParameter... queryParameters) throws IOException, RestException {
  62. return JSON.parseObject(put(endpoint, object, queryParameters).string(), type);
  63. }
  64. public static final class QueryParameter {
  65. String key;
  66. String value;
  67. QueryParameter(String key, String value) {
  68. this.key = key;
  69. this.value = value;
  70. }
  71. }
  72. }