25
25
26
26
/**
27
27
* A Bridge between the Server and API objects.
28
- *
28
+ *
29
29
* Responsibilities: Make petitions to the browser with the right headers
30
30
* and arguments.
31
31
* @author Ubidots
32
32
*/
33
33
34
34
public class ServerBridge {
35
-
35
+
36
36
/* Final static variables */
37
37
public static final String DEFAULT_BASE_URL = "https://things.ubidots.com/api/v1.6/" ;
38
-
38
+
39
39
/* Instance variables */
40
40
private String baseUrl ;
41
41
private String apiKey ;
42
42
private String token ;
43
43
private Map <String , String > tokenHeader ;
44
44
private Map <String , String > apiKeyHeader ;
45
-
46
-
45
+
46
+
47
47
ServerBridge (String apiKey ) {
48
48
this (apiKey , DEFAULT_BASE_URL );
49
49
}
@@ -55,7 +55,7 @@ public class ServerBridge {
55
55
56
56
apiKeyHeader = new HashMap <>();
57
57
apiKeyHeader .put ("X-UBIDOTS-APIKEY" , this .apiKey );
58
-
58
+
59
59
initialize ();
60
60
}
61
61
@@ -68,65 +68,78 @@ public class ServerBridge {
68
68
tokenHeader .put ("X-AUTH-TOKEN" , token );
69
69
}
70
70
71
+ ServerBridge (String token , boolean isToken , String baseUrl ) {
72
+ this .token = token ;
73
+ this .baseUrl = baseUrl ;
74
+ apiKey = null ;
75
+
76
+ tokenHeader = new HashMap <>();
77
+ tokenHeader .put ("X-AUTH-TOKEN" , token );
78
+ }
79
+
71
80
public void initialize () {
72
81
recieveToken ();
73
82
}
74
-
83
+
84
+ public void setBaseUrl (String baseUrl ) {
85
+ this .baseUrl = baseUrl ;
86
+ }
87
+
75
88
private void recieveToken () {
76
89
Gson gson = new Gson ();
77
90
token = (String ) gson .fromJson (postWithApiKey ("auth/token" ), Map .class ).get ("token" );
78
-
91
+
79
92
tokenHeader = new HashMap <>();
80
93
tokenHeader .put ("X-AUTH-TOKEN" , token );
81
94
}
82
-
95
+
83
96
private String postWithApiKey (String path ) {
84
97
String response = null ; // return variable
85
- Map <String , String > headers = prepareHeaders (apiKeyHeader );
86
-
98
+ Map <String , String > headers = prepareHeaders (apiKeyHeader );
99
+
87
100
try (CloseableHttpClient client = HttpClientBuilder .create ().build ()) {
88
101
String url = baseUrl + path ;
89
102
90
103
HttpPost post = new HttpPost (url );
91
-
104
+
92
105
for (String name : headers .keySet ()) {
93
- post .setHeader (name , headers .get (name ));
106
+ post .setHeader (name , headers .get (name ));
94
107
}
95
-
108
+
96
109
HttpResponse resp = client .execute (post );
97
-
110
+
98
111
BufferedReader rd = new BufferedReader (
99
112
new InputStreamReader (resp .getEntity ().getContent ()));
100
113
101
114
StringBuffer result = new StringBuffer ();
102
115
String line ;
103
-
116
+
104
117
while ((line = rd .readLine ()) != null ) {
105
118
result .append (line );
106
119
}
107
120
108
121
response = result .toString ();
109
122
} catch (Exception e ) {
110
123
e .printStackTrace ();
111
- }
112
-
124
+ }
125
+
113
126
return response ;
114
127
}
115
-
128
+
116
129
private Map <String , String > getCustomHeaders () {
117
130
Map <String , String > customHeaders = new HashMap <>();
118
-
131
+
119
132
customHeaders .put ("content-type" , "application/json" );
120
-
133
+
121
134
return customHeaders ;
122
135
}
123
-
136
+
124
137
private Map <String , String > prepareHeaders (Map <String , String > arg ) {
125
138
Map <String , String > headers = new HashMap <>();
126
-
139
+
127
140
headers .putAll (getCustomHeaders ());
128
141
headers .putAll (arg );
129
-
142
+
130
143
return headers ;
131
144
}
132
145
@@ -167,19 +180,19 @@ String get(String path, Map<String, String> customParams) {
167
180
String url = baseUrl + path ;
168
181
169
182
HttpGet get = new HttpGet (url );
170
-
183
+
171
184
for (String name : headers .keySet ()) {
172
- get .setHeader (name , headers .get (name ));
185
+ get .setHeader (name , headers .get (name ));
173
186
}
174
-
187
+
175
188
HttpResponse resp = client .execute (get );
176
-
189
+
177
190
BufferedReader rd = new BufferedReader (
178
191
new InputStreamReader (resp .getEntity ().getContent ()));
179
192
180
193
StringBuffer result = new StringBuffer ();
181
194
String line ;
182
-
195
+
183
196
while ((line = rd .readLine ()) != null ) {
184
197
result .append (line );
185
198
}
@@ -195,7 +208,7 @@ String get(String path, Map<String, String> customParams) {
195
208
} catch (Exception e ) {
196
209
e .printStackTrace ();
197
210
}
198
-
211
+
199
212
return response ;
200
213
}
201
214
@@ -214,32 +227,32 @@ String post(String path, String json) {
214
227
String url = baseUrl + path ;
215
228
216
229
HttpPost post = new HttpPost (url );
217
-
230
+
218
231
for (String name : headers .keySet ()) {
219
- post .setHeader (name , headers .get (name ));
232
+ post .setHeader (name , headers .get (name ));
220
233
}
221
-
234
+
222
235
post .setEntity (new StringEntity (json ));
223
236
HttpResponse resp = client .execute (post );
224
-
237
+
225
238
BufferedReader rd = new BufferedReader (
226
239
new InputStreamReader (resp .getEntity ().getContent ()));
227
240
228
241
StringBuffer result = new StringBuffer ();
229
242
String line ;
230
-
243
+
231
244
while ((line = rd .readLine ()) != null ) {
232
245
result .append (line );
233
246
}
234
247
235
248
response = result .toString ();
236
249
} catch (Exception e ) {
237
250
e .printStackTrace ();
238
- }
239
-
251
+ }
252
+
240
253
return response ;
241
254
}
242
-
255
+
243
256
/**
244
257
* Perform a DELETE request on the API with a given path
245
258
* @param path Path to append to the base URL.
@@ -254,32 +267,32 @@ String delete(String path) {
254
267
String url = baseUrl + path ;
255
268
256
269
HttpDelete delete = new HttpDelete (url );
257
-
270
+
258
271
for (String name : headers .keySet ()) {
259
- delete .setHeader (name , headers .get (name ));
272
+ delete .setHeader (name , headers .get (name ));
260
273
}
261
-
274
+
262
275
HttpResponse resp = client .execute (delete );
263
-
276
+
264
277
if (resp .getEntity () == null ) {
265
278
response = "" ;
266
279
} else {
267
280
BufferedReader rd = new BufferedReader (
268
281
new InputStreamReader (resp .getEntity ().getContent ()));
269
-
282
+
270
283
StringBuffer result = new StringBuffer ();
271
284
String line ;
272
-
285
+
273
286
while ((line = rd .readLine ()) != null ) {
274
287
result .append (line );
275
288
}
276
-
289
+
277
290
response = result .toString ();
278
291
}
279
292
} catch (Exception e ) {
280
293
e .printStackTrace ();
281
- }
282
-
294
+ }
295
+
283
296
return response ;
284
297
}
285
298
}
0 commit comments