From 805f82a6775d5a7e02e421556a2105da972c861f Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Sun, 7 Jan 2024 15:44:19 +0530 Subject: [PATCH] hasContentTypeHeader getter added to RequestModel --- lib/codegen/dart/http.dart | 9 ++++----- lib/codegen/python/http_client.dart | 5 +---- lib/models/request_model.dart | 4 ++++ lib/services/http_service.dart | 4 +--- lib/utils/har_utils.dart | 5 +---- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/lib/codegen/dart/http.dart b/lib/codegen/dart/http.dart index 708ae859..3b70db65 100644 --- a/lib/codegen/dart/http.dart +++ b/lib/codegen/dart/http.dart @@ -21,9 +21,10 @@ class DartHttpCodeGen { url: url, method: requestModel.method, queryParams: requestModel.enabledParamsMap, - headers: requestModel.enabledHeadersMap, + headers: {...requestModel.enabledHeadersMap}, body: requestModel.requestBody, contentType: requestModel.requestBodyContentType, + hasContentTypeHeader: requestModel.hasContentTypeHeader, ); return next; } catch (e) { @@ -38,6 +39,7 @@ class DartHttpCodeGen { required Map headers, required String? body, required ContentType contentType, + required bool hasContentTypeHeader, }) { final uri = Uri.parse(url); @@ -49,16 +51,13 @@ class DartHttpCodeGen { final uriExp = declareVar('uri').assign(refer('Uri.parse').call([literalString(url)])); - final composeHeaders = headers; Expression? dataExp; if (kMethodsWithBody.contains(method) && (body?.isNotEmpty ?? false)) { final strContent = CodeExpression(Code('r\'\'\'$body\'\'\'')); dataExp = declareVar('body', type: refer('String')).assign(strContent); - final hasContentTypeHeader = composeHeaders.keys - .any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader); if (!hasContentTypeHeader) { - composeHeaders.putIfAbsent(HttpHeaders.contentTypeHeader, + headers.putIfAbsent(HttpHeaders.contentTypeHeader, () => kContentTypeMap[contentType] ?? ''); } } diff --git a/lib/codegen/python/http_client.dart b/lib/codegen/python/http_client.dart index 35f97b9f..1c72f138 100644 --- a/lib/codegen/python/http_client.dart +++ b/lib/codegen/python/http_client.dart @@ -105,10 +105,7 @@ print(data.decode("utf-8")) var headers = requestModel.enabledHeadersMap; if (headers.isNotEmpty || hasBody) { hasHeaders = true; - bool hasContentTypeHeader = headers.keys - .any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader); - - if (hasBody && !hasContentTypeHeader) { + if (hasBody && !requestModel.hasContentTypeHeader) { headers[HttpHeaders.contentTypeHeader] = kContentTypeMap[requestModel.requestBodyContentType] ?? ""; } diff --git a/lib/models/request_model.dart b/lib/models/request_model.dart index df49ba1e..265d2c3f 100644 --- a/lib/models/request_model.dart +++ b/lib/models/request_model.dart @@ -1,3 +1,4 @@ +import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:apidash/consts.dart'; import 'package:apidash/utils/utils.dart' @@ -53,6 +54,9 @@ class RequestModel { Map get headersMap => rowsToMap(requestHeaders) ?? {}; Map get paramsMap => rowsToMap(requestParams) ?? {}; + bool get hasContentTypeHeader => enabledHeadersMap.keys + .any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader); + RequestModel duplicate({ required String id, }) { diff --git a/lib/services/http_service.dart b/lib/services/http_service.dart index 17708c53..485ad862 100644 --- a/lib/services/http_service.dart +++ b/lib/services/http_service.dart @@ -28,9 +28,7 @@ Future<(http.Response?, Duration?, String?)> request( if (contentLength > 0) { body = requestBody; headers[HttpHeaders.contentLengthHeader] = contentLength.toString(); - final hasContentTypeHeader = headers.keys - .any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader); - if (!hasContentTypeHeader) { + if (!requestModel.hasContentTypeHeader) { headers[HttpHeaders.contentTypeHeader] = kContentTypeMap[requestModel.requestBodyContentType] ?? ""; } diff --git a/lib/utils/har_utils.dart b/lib/utils/har_utils.dart index c74a1750..87f9a3fb 100644 --- a/lib/utils/har_utils.dart +++ b/lib/utils/har_utils.dart @@ -134,10 +134,7 @@ Map requestModelToHARJsonRequest( var headers = useEnabled ? requestModel.enabledHeadersMap : requestModel.headersMap; if (headers.isNotEmpty || hasBody) { - bool hasContentTypeHeader = headers.keys - .any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader); - - if (hasBody && !hasContentTypeHeader) { + if (hasBody && !requestModel.hasContentTypeHeader) { var m = { "name": "Content-Type", "value": kContentTypeMap[requestModel.requestBodyContentType] ?? ""