From 060683ed2cb50dc34da9a004354b584b04b2f4af Mon Sep 17 00:00:00 2001 From: ydag Date: Mon, 15 Jul 2024 12:30:11 +0200 Subject: [PATCH] Make `RequestBuilder headers` unmodifiable to prevent reference issues --- lib/src/requests/request_builder.dart | 4 +- lib/src/sep/0006/transfer_server_service.dart | 57 ++++++++++--------- lib/src/sep/0012/kyc_service.dart | 32 +++++------ lib/src/sep/0024/sep24_service.dart | 28 +++++---- 4 files changed, 64 insertions(+), 57 deletions(-) diff --git a/lib/src/requests/request_builder.dart b/lib/src/requests/request_builder.dart index 93dd6c3..96d67a6 100644 --- a/lib/src/requests/request_builder.dart +++ b/lib/src/requests/request_builder.dart @@ -64,10 +64,10 @@ abstract class RequestBuilder { late List _segments; bool _segmentsAdded = false; late Map queryParameters; - static final Map headers = { + static final Map headers = Map.unmodifiable({ "X-Client-Name": "stellar_flutter_sdk", "X-Client-Version": StellarSDK.versionNumber - }; + }); RequestBuilder( http.Client httpClient, Uri serverURI, List? defaultSegment) { diff --git a/lib/src/sep/0006/transfer_server_service.dart b/lib/src/sep/0006/transfer_server_service.dart index 6552b43..ee9e4e3 100644 --- a/lib/src/sep/0006/transfer_server_service.dart +++ b/lib/src/sep/0006/transfer_server_service.dart @@ -721,10 +721,11 @@ class _DepositRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map depositHeaders = RequestBuilder.headers; - if (jwt != null) { - depositHeaders["Authorization"] = "Bearer $jwt"; - } + final Map depositHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; + return await httpClient.get(uri, headers: depositHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -1275,10 +1276,10 @@ class _WithdrawRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map withdrawHeaders = RequestBuilder.headers; - if (jwt != null) { - withdrawHeaders["Authorization"] = "Bearer $jwt"; - } + final Map withdrawHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: withdrawHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -1704,10 +1705,10 @@ class _InfoRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map infoHeaders = RequestBuilder.headers; - if (jwt != null) { - infoHeaders["Authorization"] = "Bearer $jwt"; - } + final Map infoHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: infoHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -1772,10 +1773,10 @@ class _FeeRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map feeHeaders = RequestBuilder.headers; - if (jwt != null) { - feeHeaders["Authorization"] = "Bearer $jwt"; - } + final Map feeHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: feeHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -2207,10 +2208,10 @@ class _AnchorTransactionsRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map atHeaders = RequestBuilder.headers; - if (jwt != null) { - atHeaders["Authorization"] = "Bearer $jwt"; - } + final Map atHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: atHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -2277,10 +2278,10 @@ class _AnchorTransactionRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map atHeaders = RequestBuilder.headers; - if (jwt != null) { - atHeaders["Authorization"] = "Bearer $jwt"; - } + final Map atHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: atHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -2320,10 +2321,10 @@ class _PatchTransactionRequestBuilder extends RequestBuilder { static Future requestExecute(http.Client httpClient, Uri uri, Map fields, String? jwt) async { - final Map atHeaders = RequestBuilder.headers; - if (jwt != null) { - atHeaders["Authorization"] = "Bearer $jwt"; - } + final Map atHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.patch(uri, body: {"transaction": json.encode(fields)}, headers: atHeaders); } diff --git a/lib/src/sep/0012/kyc_service.dart b/lib/src/sep/0012/kyc_service.dart index 41949fa..3b25eab 100644 --- a/lib/src/sep/0012/kyc_service.dart +++ b/lib/src/sep/0012/kyc_service.dart @@ -440,10 +440,10 @@ class _PutCustomerInfoRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map hHeaders = RequestBuilder.headers; - if (jwt != null) { - hHeaders["Authorization"] = "Bearer $jwt"; - } + final Map hHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; var request = http.MultipartRequest('PUT', uri); request.headers.addAll(hHeaders); if (fields != null) { @@ -495,10 +495,10 @@ class _PutCustomerVerificationRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map hHeaders = RequestBuilder.headers; - if (jwt != null) { - hHeaders["Authorization"] = "Bearer $jwt"; - } + final Map hHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; var request = http.MultipartRequest('PUT', uri); request.headers.addAll(hHeaders); @@ -531,10 +531,10 @@ class _DeleteCustomerRequestBuilder extends RequestBuilder { static Future requestExecute( http.Client httpClient, Uri uri, Map? fields, String? jwt) async { - final Map hHeaders = RequestBuilder.headers; - if (jwt != null) { - hHeaders["Authorization"] = "Bearer $jwt"; - } + final Map hHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; var request = http.MultipartRequest('DELETE', uri); request.headers.addAll(hHeaders); @@ -589,10 +589,10 @@ class _PutCustomerCallbackRequestBuilder extends RequestBuilder { static Future requestExecute( http.Client httpClient, Uri uri, Map? fields, String? jwt) async { - final Map hHeaders = RequestBuilder.headers; - if (jwt != null) { - hHeaders["Authorization"] = "Bearer $jwt"; - } + final Map hHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; var request = http.MultipartRequest('PUT', uri); request.headers.addAll(hHeaders); diff --git a/lib/src/sep/0024/sep24_service.dart b/lib/src/sep/0024/sep24_service.dart index db4b581..862227e 100644 --- a/lib/src/sep/0024/sep24_service.dart +++ b/lib/src/sep/0024/sep24_service.dart @@ -584,7 +584,7 @@ class _InfoRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map infoHeaders = RequestBuilder.headers; + final Map infoHeaders = {...RequestBuilder.headers}; return await httpClient.get(uri, headers: infoHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -640,10 +640,10 @@ class _FeeRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map feeHeaders = RequestBuilder.headers; - if (jwt != null) { - feeHeaders["Authorization"] = "Bearer $jwt"; - } + final Map feeHeaders = { + ...RequestBuilder.headers, + if (jwt != null) "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: feeHeaders).then((response) { return responseHandler.handleResponse(response); @@ -764,8 +764,10 @@ class _PostRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map hHeaders = RequestBuilder.headers; - hHeaders["Authorization"] = "Bearer $jwt"; + final Map hHeaders = { + ...RequestBuilder.headers, + "Authorization": "Bearer $jwt", + }; var request = http.MultipartRequest('POST', uri); request.headers.addAll(hHeaders); if (fields != null) { @@ -1093,8 +1095,10 @@ class _AnchorTransactionsRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map atHeaders = RequestBuilder.headers; - atHeaders["Authorization"] = "Bearer $jwt"; + final Map atHeaders = { + ...RequestBuilder.headers, + "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: atHeaders).then((response) { return responseHandler.handleResponse(response); }); @@ -1199,8 +1203,10 @@ class _AnchorTransactionRequestBuilder extends RequestBuilder { ResponseHandler responseHandler = ResponseHandler(type); - final Map atHeaders = RequestBuilder.headers; - atHeaders["Authorization"] = "Bearer $jwt"; + final Map atHeaders = { + ...RequestBuilder.headers, + "Authorization": "Bearer $jwt", + }; return await httpClient.get(uri, headers: atHeaders).then((response) { return responseHandler.handleResponse(response); });