Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. package com.brainshare.saldeo.api.client.core.service;
  2.  
  3. import java.net.URLEncoder;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.Random;
  10.  
  11. import org.apache.commons.codec.digest.DigestUtils;
  12. import org.apache.http.HttpEntity;
  13. import org.apache.http.HttpResponse;
  14. import org.apache.http.NameValuePair;
  15. import org.apache.http.client.entity.UrlEncodedFormEntity;
  16. import org.apache.http.client.methods.HttpGet;
  17. import org.apache.http.client.methods.HttpPost;
  18. import org.apache.http.client.utils.URIBuilder;
  19. import org.apache.http.impl.client.CloseableHttpClient;
  20. import org.apache.http.impl.client.HttpClients;
  21. import org.apache.http.message.BasicNameValuePair;
  22. import org.apache.http.util.EntityUtils;
  23.  
  24. public class ApiClient {
  25.  
  26. private static CloseableHttpClient client = HttpClients.createDefault();
  27.  
  28. private final static String SIGNATURE = "req_sig";
  29. private final static String FILE = "command";
  30. private final static String ID = "req_id";
  31. private final static String USER = "username";
  32. private static final String COMPANY_PROGRAM_ID_PARAM_NAME = "company_program_id";
  33.  
  34. private static final String serviceUrl = "http://192.168.1.108:8080/mvc";
  35. private static final String username = "bk";
  36. private static final String token = "token";
  37.  
  38. public static void main(String[] args) {
  39. contractorMerge();
  40. documentList();
  41. }
  42.  
  43. private static void documentList() {
  44. Map<String, String> params = new HashMap<String, String>();
  45. params.put(COMPANY_PROGRAM_ID_PARAM_NAME, "unique_company_program_id");
  46.  
  47. // XML as a String
  48. String results = get("/api/xml/1.0/document/list", params);
  49. // result is String with XML
  50. }
  51.  
  52. private static void contractorMerge() {
  53. // SEND_CONTRACTOR_FILE
  54. Map<String, String> params = new HashMap<String, String>();
  55. params.put(COMPANY_PROGRAM_ID_PARAM_NAME, "unique_company_program_id");
  56.  
  57. String content = null; // TODO - XML request as a String
  58. // TODO XML as a String
  59. String result = post("/api/xml/1.0/contractor/merge;", content, params);
  60. }
  61.  
  62. // TO SEND DATA from SaldeoSMART
  63. public static String post(String operationUrl, String content, Map<String, String> params) {
  64. HttpResponse response = null;
  65. try {
  66. HttpPost post = new HttpPost(serviceUrl + operationUrl);
  67.  
  68. ArrayList<NameValuePair> postParameters;
  69. postParameters = new ArrayList<NameValuePair>();
  70.  
  71. String id = getReqId();
  72.  
  73. params.put(USER, username);
  74. params.put(ID, id);
  75. params.put(FILE, content);
  76.  
  77. List<String> paramNames = new ArrayList<String>(params.keySet());
  78. Collections.sort(paramNames);
  79. StringBuilder sb = new StringBuilder();
  80. for (String paramName : paramNames) {
  81. sb.append(paramName).append("=");
  82. String paramVal = params.get(paramName);
  83. sb.append(paramVal);
  84. }
  85. String signatureBase = sb.toString();
  86. signatureBase = URLEncoder.encode(signatureBase, "UTF-8");
  87.  
  88. String calculatedSignature = DigestUtils.md5Hex(signatureBase + token);
  89. params.put(SIGNATURE, calculatedSignature);
  90.  
  91. paramNames = new ArrayList<String>(params.keySet());
  92. for (String paramName : paramNames) {
  93. postParameters.add(new BasicNameValuePair(paramName, params.get(paramName)));
  94. }
  95.  
  96. post.setEntity(new UrlEncodedFormEntity(postParameters));
  97. response = client.execute(post);
  98. int status = response.getStatusLine().getStatusCode();
  99. if (status >= 200 && status < 300) {
  100. HttpEntity entity = response.getEntity();
  101. return entity != null ? EntityUtils.toString(entity) : null;
  102. } else {
  103. HttpEntity entity = response.getEntity();
  104. return entity != null ? EntityUtils.toString(entity) : null;
  105. }
  106. } catch (Exception e) {
  107. return null;
  108. }
  109. }
  110.  
  111. // example of request id - should be something clever:)
  112. private static String getReqId() {
  113. Random rand = new Random();
  114. long requestId = System.currentTimeMillis() / 1000L;
  115. requestId += rand.nextLong();
  116. return String.valueOf(requestId);
  117. }
  118.  
  119. // TO GET DATA from SaldeoSMART
  120. public static String get(String operationUrl, Map<String, String> params) {
  121. URIBuilder uriBuiler = null;
  122.  
  123. try {
  124. uriBuiler = new URIBuilder(serviceUrl + operationUrl);
  125. } catch (Exception e) {
  126. return null;
  127. }
  128.  
  129. String id = getReqId();
  130.  
  131. params.put(USER, username);
  132. params.put(ID, id);
  133.  
  134. List<String> paramNames = new ArrayList<String>(params.keySet());
  135. Collections.sort(paramNames);
  136. StringBuilder sb = new StringBuilder();
  137. for (String paramName : paramNames) {
  138. sb.append(paramName).append("=");
  139. String paramVal = params.get(paramName);
  140. sb.append(paramVal);
  141. }
  142. try {
  143. String signatureBase = sb.toString();
  144. signatureBase = URLEncoder.encode(signatureBase, "UTF-8");
  145.  
  146. String calculatedSignature = DigestUtils.md5Hex(signatureBase + token);
  147. params.put(SIGNATURE, calculatedSignature);
  148.  
  149. paramNames = new ArrayList<String>(params.keySet());
  150. for (String paramName : paramNames) {
  151. uriBuiler.setParameter(paramName, params.get(paramName));
  152. }
  153.  
  154. HttpGet get = new HttpGet();
  155. get.setURI(uriBuiler.build());
  156.  
  157. HttpResponse response = client.execute(get);
  158. int status = response.getStatusLine().getStatusCode();
  159. if (status >= 200 && status < 300) {
  160. HttpEntity entity = response.getEntity();
  161. return entity != null ? EntityUtils.toString(entity) : null;
  162. } else {
  163. // TODO
  164. return null;
  165. }
  166. } catch (Exception e) {
  167. return null;
  168. }
  169. }
  170.  
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement