· 6 years ago · Mar 09, 2019, 10:16 PM
1package rest;
2
3import main.Config;
4import main.Console;
5import main.Constants;
6import org.apache.commons.codec.binary.Hex;
7import org.apache.http.HttpEntity;
8import org.apache.http.HttpResponse;
9import org.apache.http.StatusLine;
10import org.apache.http.client.HttpClient;
11import org.apache.http.client.methods.*;
12import org.apache.http.client.protocol.HttpClientContext;
13import org.apache.http.entity.StringEntity;
14import org.apache.http.impl.client.BasicCookieStore;
15import org.apache.http.impl.client.HttpClientBuilder;
16
17import javax.crypto.Mac;
18import javax.crypto.spec.SecretKeySpec;
19import java.io.BufferedReader;
20import java.io.IOException;
21import java.io.InputStreamReader;
22import java.io.UnsupportedEncodingException;
23import java.security.InvalidKeyException;
24import java.security.NoSuchAlgorithmException;
25
26public class RestClient {
27
28 private String server;
29 private HttpClientBuilder clientBuilder = HttpClientBuilder.create();
30
31 public RestClient(String server) {
32 this.server = server;
33 clientBuilder.setDefaultCookieStore(new BasicCookieStore());
34 }
35
36 public RestResponse pingServer() {
37 HttpGet request = new HttpGet(server + "/ping");
38 return executeRequest(request);
39 }
40
41 private RestResponse doPost(String uri, HttpEntity entity) {
42 HttpPost request = new HttpPost(uri);
43 if(entity != null) {
44 request.setEntity(entity);
45 }
46 return executeRequest(request);
47 }
48
49 private RestResponse doDelete(String uri) {
50 HttpDelete request = new HttpDelete(uri);
51 return executeRequest(request);
52 }
53
54 private RestResponse doPut(String uri, String payload) {
55 HttpPut request = new HttpPut(uri);
56 request.setEntity(new StringEntity(payload, "utf-8"));
57 return executeRequest(request);
58 }
59
60 private RestResponse doGet(String uri) {
61 HttpGet request = new HttpGet(uri);
62 return executeRequest(request);
63 }
64
65 private RestResponse executeRequest(HttpRequestBase request) {
66 if (request != null) {
67 HttpResponse response = null;
68 StringBuffer result = null;;
69 try {
70
71 HttpClient httpclient = clientBuilder.build();
72 HttpClientContext context = HttpClientContext.create();
73
74 //request.setHeader("X-MBX-APIKEY", Config.BINANCE_API_KEY);
75
76 if (request.getMethod().equalsIgnoreCase("POST")) {
77 request.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
78 }else {
79 request.setHeader("Content-Type", "application/json; charset=UTF-8");
80 }
81 response = httpclient.execute(request, context);
82
83 BufferedReader rd = new BufferedReader(
84 new InputStreamReader(response.getEntity().getContent(), "UTF8"));
85
86 result = new StringBuffer();
87 String line = "";
88 while ((line = rd.readLine()) != null) {
89 result.append(line);
90 }
91 } catch (IOException e) {
92 e.printStackTrace();
93 }
94 int statusCode = 0;
95 String payload = null;
96 if (response != null) {
97 if(response.getStatusLine() != null) {
98 StatusLine statusLine = response.getStatusLine();
99 statusCode = statusLine.getStatusCode();
100 }
101 }
102 if (result != null) {
103 payload = result.toString();
104 }
105 RestResponse restResponse = new RestResponse(statusCode, payload);
106 return restResponse;
107 } else {
108 Console.logError("Request object was null, no request done");
109 return new RestResponse(0, null);
110 }
111 }
112
113 private static String encode(String data) {
114 try {
115 Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
116 SecretKeySpec secret_key = new SecretKeySpec(Config.SECRET.getBytes("UTF-8"), "HmacSHA256");
117 sha256_HMAC.init(secret_key);
118 return Hex.encodeHexString(sha256_HMAC.doFinal(data.getBytes("UTF-8")));
119 } catch (NoSuchAlgorithmException e) {
120 e.printStackTrace();
121 } catch (InvalidKeyException e) {
122 e.printStackTrace();
123 } catch (UnsupportedEncodingException e) {
124 e.printStackTrace();
125 }
126 return data;
127 }
128
129 /*
130 public RestResponse logon(String username, String pswd) {
131 System.out.println("TRY LOGON");
132 try {
133 return doGet(server + "/api/Logon?u=" + username + "&p=" + URLEncoder.encode(pswd, "UTF-8"));
134 } catch (UnsupportedEncodingException e) {
135 e.printStackTrace();
136 return null;
137 }
138 }
139
140 public RestResponse logoff() {
141 RestResponse resp = doGet(server + "/api/Logoff");
142 return resp;
143 }
144
145 public RestResponse getProjects() {
146 return doGet(server + "/api/rest/Project");
147 }
148
149 public RestResponse getProject(String projectID) {
150 return doGet(server + "/api/rest/Project?r="+projectID);
151 }
152
153 public RestResponse getProjectFolders(String projectID) {
154 return doGet(server + "/api/rest/Folder?admin=admin&p="+projectID);
155 }
156
157 public RestResponse deleteProjectLogo(String projectID) {
158 return doPut(server + "/api/rest/Project?a=CHANGE_IMAGE&r="+projectID, "");
159 }
160
161 public RestResponse activateProject(String projectID) {
162 return doPut(server + "/api/rest/Project?a=ACTIVATE&r="+projectID, "");
163 }
164
165 public RestResponse getFolderSubFolders(String projectID, String folderID) {
166 return doGet(server + "/api/rest/Folder?p="+projectID+"&parent="+folderID);
167 }
168
169 public RestResponse getDocuments(String folderID) {
170 return doGet(server + "/api/rest/Document?f="+folderID);
171 }
172
173 public RestResponse deleteDocument(String documentID) {
174 return doDelete(server + "/api/rest/Document?r=" + documentID);
175 }
176
177 public RestResponse deleteFolder(String folderID) {
178 return doDelete(server + "/api/rest/Folder?r=" + folderID);
179 }
180
181 public RestResponse emptyProjectRecyclebin(String projectID) {
182 return doGet(server + "/api/rest/RecycleBin?a=DELETE&withitems=true&itemkey=PROJECT_"+projectID);
183 }
184
185 public RestResponse getLinks(String folderID) {
186 return doGet(server + "/api/rest/Url?f=" + folderID);
187 }
188
189 public RestResponse deleteLink(String urlID) {
190 return doDelete(server + "/api/rest/Url?r=" + urlID);
191 }
192
193 public RestResponse getMessages(String folderID) {
194 return doGet(server + "/api/rest/Message?f=" + folderID);
195 }
196
197 public RestResponse deleteMessage(String messageID) {
198 return doDelete(server + "/api/rest/Message?r=" + messageID);
199 }
200
201 public RestResponse getContacts(String folderID) {
202 return doGet(server + "/api/rest/Contact?f=" + folderID);
203 }
204
205 public RestResponse deleteContact(String contactID, String folderID) {
206 return doDelete(server + "/api/rest/Contact?r=" + contactID+"&f=" + folderID);
207 }
208
209 public RestResponse getOrganizations(String folderID) {
210 return doGet(server + "/api/rest/Organization?f=" + folderID);
211 }
212
213 public RestResponse deleteOrginazation(String organizationID, String folderID) {
214 return doDelete(server + "/api/rest/Organization?r=" + organizationID +"&f=" + folderID);
215 }
216
217 public RestResponse getEvents(String folderID) {
218 return doGet(server + "/api/rest/Event?f=" + folderID);
219 }
220
221 public RestResponse deleteEvent(String eventID) {
222 return doDelete(server + "/api/rest/Event?r=" + eventID);
223 }
224
225 public RestResponse getForumPosts(String folderID) {
226 return doGet(server + "/api/rest/ForumPost?f=" + folderID);
227 }
228
229 public RestResponse deleteForumPost(String forumPostID) {
230 return doDelete(server + "/api/rest/ForumPost?r=" + forumPostID);
231 }
232
233 public RestResponse getWorkflows(String folderID) {
234 return doGet(server + "/api/rest/Workflow?f=" + folderID);
235 }
236
237 public RestResponse deleteWorkflow(String workflowID) {
238 return doDelete(server + "/api/rest/Workflow?r=" + workflowID);
239 }
240
241 public RestResponse getForms(String folderID) {
242 return doGet(server + "/api/rest/Form?f=" + folderID);
243 }
244
245 public RestResponse deleteForm(String formID) {
246 return doDelete(server + "/api/rest/Form?r=" + formID);
247 }
248
249 public RestResponse getReports(String folderID) {
250 return doGet(server + "/api/rest/Report?f=" + folderID);
251 }
252
253 public RestResponse deleteReport(String reportID) {
254 return doDelete(server + "/api/rest/Report?r=" + reportID);
255 }
256
257 public RestResponse getUsers(String projectID) {
258 return doGet(server + "/api/rest/User?p=" + projectID);
259 }
260
261 public RestResponse deleteUser(String userID, String projectID) {
262 return doDelete(server + "/api/rest/User?r=" + userID + "&p=" + projectID);
263 }
264
265 public RestResponse getRoles(String projectID) {
266 return doGet(server + "/api/rest/Role?p=" + projectID);
267 }
268
269 public RestResponse deleteRole(String roleID) {
270 return doDelete(server + "/api/rest/Role?r=" + roleID);
271 }
272
273 public RestResponse deleteProject(String projectID, String payload) {
274 return doPut(server + "/api/rest/Project?r=" + projectID, payload);
275 }
276
277 public RestResponse setFullAccessOnFolder(String roleID, String payload) {
278 return doPut(server + "/api/rest/FolderAccess?role=" + roleID, payload);
279 }
280
281 public RestResponse getRecycleBinItems(String projectID) {
282 return doGet(server + "/api/rest/RecycleBin?p=" + projectID);
283 }
284
285 public RestResponse deleteReycleBinItem(String itemkey) {
286 return doPost(server + "/api/rest/RecycleBin?a=DELETE&itemkey="+itemkey, null);
287 }
288 */
289
290}