@@ -128,17 +128,27 @@ private void tryToGetResponse(final ResponseData responseData) {
128
128
129
129
try {
130
130
ActivityPackage activityPackage = responseData .activityPackage ;
131
+ Map <String , String > activityPackageParameters =
132
+ new HashMap <>(activityPackage .getParameters ());
131
133
Map <String , String > sendingParameters = responseData .sendingParameters ;
132
134
135
+ String authorizationHeader = buildAndExtractAuthorizationHeader (
136
+ activityPackageParameters ,
137
+ activityPackage .getActivityKind ());
138
+
133
139
boolean shouldUseGET =
134
140
responseData .activityPackage .getActivityKind () == ActivityKind .ATTRIBUTION ;
135
141
final String urlString ;
136
142
if (shouldUseGET ) {
137
- extractEventCallbackId (activityPackage . getParameters () );
143
+ extractEventCallbackId (activityPackageParameters );
138
144
139
- urlString = generateUrlStringForGET (activityPackage , sendingParameters );
145
+ urlString = generateUrlStringForGET (activityPackage .getActivityKind (),
146
+ activityPackage .getPath (),
147
+ activityPackageParameters ,
148
+ sendingParameters );
140
149
} else {
141
- urlString = generateUrlStringForPOST (activityPackage );
150
+ urlString = generateUrlStringForPOST (activityPackage .getActivityKind (),
151
+ activityPackage .getPath ());
142
152
}
143
153
144
154
final URL url = new URL (urlString );
@@ -148,18 +158,18 @@ private void tryToGetResponse(final ResponseData responseData) {
148
158
// get and apply connection options (default or for tests)
149
159
connectionOptions .applyConnectionOptions (connection , activityPackage .getClientSdk ());
150
160
151
- String authorizationHeader = buildAuthorizationHeader (activityPackage );
152
161
if (authorizationHeader != null ) {
153
162
connection .setRequestProperty ("Authorization" , authorizationHeader );
154
163
}
155
164
156
165
if (shouldUseGET ) {
157
166
dataOutputStream = configConnectionForGET (connection );
158
167
} else {
159
- extractEventCallbackId (activityPackage . getParameters () );
168
+ extractEventCallbackId (activityPackageParameters );
160
169
161
- dataOutputStream =
162
- configConnectionForPOST (connection , activityPackage , sendingParameters );
170
+ dataOutputStream = configConnectionForPOST (connection ,
171
+ activityPackageParameters ,
172
+ sendingParameters );
163
173
}
164
174
165
175
// read connection response
@@ -249,26 +259,28 @@ private String errorMessage(final Throwable throwable,
249
259
return Util .formatString ("%s. (%s)" , failureMessage , reasonString );
250
260
}
251
261
252
- private String generateUrlStringForGET (final ActivityPackage activityPackage ,
262
+ private String generateUrlStringForGET (final ActivityKind activityKind ,
263
+ final String activityPackagePath ,
264
+ final Map <String , String > activityPackageParameters ,
253
265
final Map <String , String > sendingParameters )
254
266
throws MalformedURLException
255
267
{
256
- String targetUrl = urlStrategy .targetUrlByActivityKind (activityPackage . getActivityKind () );
268
+ String targetUrl = urlStrategy .targetUrlByActivityKind (activityKind );
257
269
258
270
// extra path, if present, has the format '/X/Y'
259
271
String urlWithPath =
260
- urlWithExtraPathByActivityKind (activityPackage . getActivityKind () , targetUrl );
272
+ urlWithExtraPathByActivityKind (activityKind , targetUrl );
261
273
262
274
final URL urlObject = new URL (urlWithPath );
263
275
final Uri .Builder uriBuilder = new Uri .Builder ();
264
276
uriBuilder .scheme (urlObject .getProtocol ());
265
277
uriBuilder .encodedAuthority (urlObject .getAuthority ());
266
278
uriBuilder .path (urlObject .getPath ());
267
- uriBuilder .appendPath (activityPackage . getPath () );
279
+ uriBuilder .appendPath (activityPackagePath );
268
280
269
281
logger .debug ("Making request to url: %s" , uriBuilder .toString ());
270
282
271
- for (final Map .Entry <String , String > entry : activityPackage . getParameters () .entrySet ()) {
283
+ for (final Map .Entry <String , String > entry : activityPackageParameters .entrySet ()) {
272
284
uriBuilder .appendQueryParameter (entry .getKey (), entry .getValue ());
273
285
}
274
286
@@ -281,19 +293,20 @@ private String generateUrlStringForGET(final ActivityPackage activityPackage,
281
293
return uriBuilder .build ().toString ();
282
294
}
283
295
284
- private String generateUrlStringForPOST (final ActivityPackage activityPackage )
296
+ private String generateUrlStringForPOST (final ActivityKind activityKind ,
297
+ final String activityPackagePath )
285
298
{
286
299
String targetUrl =
287
- urlStrategy .targetUrlByActivityKind (activityPackage . getActivityKind () );
300
+ urlStrategy .targetUrlByActivityKind (activityKind );
288
301
289
302
// extra path, if present, has the format '/X/Y'
290
303
String urlWithPath =
291
- urlWithExtraPathByActivityKind (activityPackage . getActivityKind () , targetUrl );
304
+ urlWithExtraPathByActivityKind (activityKind , targetUrl );
292
305
293
306
294
307
// 'targetUrl' does not end with '/', but activity package paths that are sent by POST
295
308
// do start with '/', so it's not added om between
296
- String urlString = Util .formatString ("%s%s" , urlWithPath , activityPackage . getPath () );
309
+ String urlString = Util .formatString ("%s%s" , urlWithPath , activityPackagePath );
297
310
298
311
logger .debug ("Making request to url : %s" , urlString );
299
312
@@ -322,7 +335,7 @@ private DataOutputStream configConnectionForGET(final HttpsURLConnection connect
322
335
}
323
336
324
337
private DataOutputStream configConnectionForPOST (final HttpsURLConnection connection ,
325
- final ActivityPackage activityPackage ,
338
+ final Map < String , String > activityPackageParameters ,
326
339
final Map <String , String > sendingParameters )
327
340
throws ProtocolException ,
328
341
UnsupportedEncodingException ,
@@ -339,7 +352,7 @@ private DataOutputStream configConnectionForPOST(final HttpsURLConnection connec
339
352
340
353
// build POST body
341
354
final String postBodyString = generatePOSTBodyString (
342
- activityPackage . getParameters () ,
355
+ activityPackageParameters ,
343
356
sendingParameters );
344
357
345
358
if (postBodyString == null ) {
@@ -510,9 +523,9 @@ private void parseResponse(final ResponseData responseData, final String respons
510
523
Util .getSdkPrefixPlatform (clientSdk ));
511
524
}
512
525
513
- private String buildAuthorizationHeader (final ActivityPackage activityPackage ) {
514
- Map < String , String > parameters = activityPackage . getParameters ();
515
- String activityKindString = activityPackage . getActivityKind () .toString ();
526
+ private String buildAndExtractAuthorizationHeader (final Map < String , String > parameters ,
527
+ final ActivityKind activityKind ) {
528
+ String activityKindString = activityKind .toString ();
516
529
517
530
String secretId = extractSecretId (parameters );
518
531
String headersId = extractHeadersId (parameters );
0 commit comments