From 717c888f9e293cbb964e34c41eac65be73a94de6 Mon Sep 17 00:00:00 2001 From: FreeBono Date: Wed, 26 Feb 2025 22:47:55 +0900 Subject: [PATCH] modify core http_service --- .../details_card/request_pane/request_body.dart | 2 +- lib/utils/convert_utils.dart | 11 ----------- .../apidash_core/lib/services/http_service.dart | 5 ++++- .../apidash_core/lib/utils/http_request_utils.dart | 14 ++++++++++++++ packages/apidash_core/pubspec.yaml | 1 + pubspec.lock | 2 +- pubspec.yaml | 1 - 7 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_body.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_body.dart index 675cc038..376128a8 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_body.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_body.dart @@ -74,7 +74,7 @@ class EditRequestBody extends ConsumerWidget { ref .read(collectionStateNotifierProvider.notifier) - .update(body: removeJsonComments(value)); + .update(body: value); }, hintText: kHintJson, ), diff --git a/lib/utils/convert_utils.dart b/lib/utils/convert_utils.dart index 3832d400..6242f307 100644 --- a/lib/utils/convert_utils.dart +++ b/lib/utils/convert_utils.dart @@ -1,9 +1,7 @@ import 'dart:typed_data'; import 'dart:convert'; import 'package:apidash_core/apidash_core.dart'; -import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:json5/json5.dart' as json5; String humanizeDate(DateTime? date) { if (date == null) { @@ -84,12 +82,3 @@ Uint8List jsonMapToBytes(Map? map) { return bytes; } } - -String removeJsonComments(String json) { - try { - var parsed = json5.json5Decode(json); - return jsonEncode(parsed); - } catch (e) { - return json; - } -} diff --git a/packages/apidash_core/lib/services/http_service.dart b/packages/apidash_core/lib/services/http_service.dart index ad06a21d..2c651b99 100644 --- a/packages/apidash_core/lib/services/http_service.dart +++ b/packages/apidash_core/lib/services/http_service.dart @@ -41,7 +41,10 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest( if (kMethodsWithBody.contains(requestModel.method)) { var requestBody = requestModel.body; if (requestBody != null && !isMultiPartRequest) { - var contentLength = utf8.encode(requestBody).length; + if (requestModel.hasJsonData) { + requestBody = removeJsonComments(requestBody); + } + var contentLength = utf8.encode(requestBody!).length; if (contentLength > 0) { body = requestBody; headers[HttpHeaders.contentLengthHeader] = diff --git a/packages/apidash_core/lib/utils/http_request_utils.dart b/packages/apidash_core/lib/utils/http_request_utils.dart index 7a912ac1..f05132e0 100644 --- a/packages/apidash_core/lib/utils/http_request_utils.dart +++ b/packages/apidash_core/lib/utils/http_request_utils.dart @@ -1,8 +1,11 @@ +import 'dart:convert'; + import 'package:apidash_core/consts.dart'; import 'package:collection/collection.dart'; import 'package:seed/seed.dart'; import '../models/models.dart'; import 'graphql_utils.dart'; +import 'package:json5/json5.dart' as json5; Map? rowsToMap( List? kvRows, { @@ -101,3 +104,14 @@ String? getRequestBody(APIType type, HttpRequestModel httpRequestModel) { APIType.graphql => getGraphQLBody(httpRequestModel), }; } + +String? removeJsonComments(String? json) { + try { + if (json == null) return null; + + var parsed = json5.json5Decode(json); + return kJsonEncoder.convert(parsed); + } catch (e) { + return json; + } +} diff --git a/packages/apidash_core/pubspec.yaml b/packages/apidash_core/pubspec.yaml index d29330e4..1c3ab740 100644 --- a/packages/apidash_core/pubspec.yaml +++ b/packages/apidash_core/pubspec.yaml @@ -23,6 +23,7 @@ dependencies: path: ../insomnia_collection seed: ^0.0.3 xml: ^6.3.0 + json5: ^0.8.2 dev_dependencies: flutter_test: diff --git a/pubspec.lock b/pubspec.lock index 3ac578af..cd6e063b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -809,7 +809,7 @@ packages: source: hosted version: "0.7.1" json5: - dependency: "direct main" + dependency: transitive description: name: json5 sha256: b67d6e06c9e225c8277d3c43f796677af7975a2a2b0669ff12ba38ff466a31f4 diff --git a/pubspec.yaml b/pubspec.yaml index 36abffd1..e7a013b9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -66,7 +66,6 @@ dependencies: url: https://github.com/google/flutter-desktop-embedding.git path: plugins/window_size share_plus: ^10.1.4 - json5: ^0.8.2 dependency_overrides: extended_text_field: ^16.0.0