From 23130cd9c2ab028a2978208520736d93a7cc680d Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Wed, 25 Dec 2024 05:03:22 +0530 Subject: [PATCH] Move curl import to core --- lib/importer/import_dialog.dart | 13 ++++--- lib/importer/importer.dart | 3 +- packages/apidash_core/lib/apidash_core.dart | 1 + .../parsers/curl_to_http_request_model.dart | 13 +++++-- .../apidash_core/lib/parsers/parsers.dart | 2 + .../postman_to_http_request_model.dart | 0 packages/apidash_core/pubspec.yaml | 39 +------------------ packages/apidash_core/pubspec_overrides.yaml | 4 +- 8 files changed, 26 insertions(+), 49 deletions(-) rename lib/importer/curl/curl.dart => packages/apidash_core/lib/parsers/curl_to_http_request_model.dart (80%) create mode 100644 packages/apidash_core/lib/parsers/parsers.dart create mode 100644 packages/apidash_core/lib/parsers/postman_to_http_request_model.dart diff --git a/lib/importer/import_dialog.dart b/lib/importer/import_dialog.dart index 5c978c67..a0d4bab8 100644 --- a/lib/importer/import_dialog.dart +++ b/lib/importer/import_dialog.dart @@ -28,11 +28,14 @@ void importToCollectionPane( (content) { kImporter .getHttpRequestModel(importFormatType, content) - .then((importedRequestModel) { - if (importedRequestModel != null) { - ref - .read(collectionStateNotifierProvider.notifier) - .addRequestModel(importedRequestModel); + .then((importedRequestModels) { + if (importedRequestModels != null) { + for (var model in importedRequestModels) { + ref + .read(collectionStateNotifierProvider.notifier) + .addRequestModel(model); + } + // Solves - Do not use BuildContexts across async gaps if (!context.mounted) return; Navigator.of(context).pop(); diff --git a/lib/importer/importer.dart b/lib/importer/importer.dart index d6828e87..14795142 100644 --- a/lib/importer/importer.dart +++ b/lib/importer/importer.dart @@ -1,9 +1,8 @@ import 'package:apidash/consts.dart'; import 'package:apidash_core/apidash_core.dart'; -import 'curl/curl.dart'; class Importer { - Future getHttpRequestModel( + Future?> getHttpRequestModel( ImportFormat fileType, String content, ) async { diff --git a/packages/apidash_core/lib/apidash_core.dart b/packages/apidash_core/lib/apidash_core.dart index 2462c456..2b93aa0b 100644 --- a/packages/apidash_core/lib/apidash_core.dart +++ b/packages/apidash_core/lib/apidash_core.dart @@ -5,6 +5,7 @@ export 'extensions/extensions.dart'; export 'models/models.dart'; export 'utils/utils.dart'; export 'services/services.dart'; +export 'parsers/parsers.dart'; // Export 3rd party packages export 'package:collection/collection.dart'; diff --git a/lib/importer/curl/curl.dart b/packages/apidash_core/lib/parsers/curl_to_http_request_model.dart similarity index 80% rename from lib/importer/curl/curl.dart rename to packages/apidash_core/lib/parsers/curl_to_http_request_model.dart index e4c47df9..3e41ac19 100644 --- a/lib/importer/curl/curl.dart +++ b/packages/apidash_core/lib/parsers/curl_to_http_request_model.dart @@ -1,8 +1,10 @@ -import 'package:apidash_core/apidash_core.dart'; import 'package:curl_parser/curl_parser.dart'; +import '../consts.dart'; +import '../models/models.dart'; +import '../utils/utils.dart'; class CurlFileImport { - HttpRequestModel? getHttpRequestModel(String content) { + List? getHttpRequestModel(String content) { content = content.trim(); try { final curl = Curl.parse(content); @@ -19,14 +21,17 @@ class CurlFileImport { ? ContentType.formdata : (getContentTypeFromHeadersMap(curl.headers) ?? ContentType.text); - return HttpRequestModel( + return [ + HttpRequestModel( method: method, url: url, headers: headers, params: params, body: body, bodyContentType: contentType, - formData: formData); + formData: formData, + ), + ]; } catch (e) { return null; } diff --git a/packages/apidash_core/lib/parsers/parsers.dart b/packages/apidash_core/lib/parsers/parsers.dart new file mode 100644 index 00000000..ba81e7f3 --- /dev/null +++ b/packages/apidash_core/lib/parsers/parsers.dart @@ -0,0 +1,2 @@ +export 'curl_to_http_request_model.dart'; +export 'postman_to_http_request_model.dart'; diff --git a/packages/apidash_core/lib/parsers/postman_to_http_request_model.dart b/packages/apidash_core/lib/parsers/postman_to_http_request_model.dart new file mode 100644 index 00000000..e69de29b diff --git a/packages/apidash_core/pubspec.yaml b/packages/apidash_core/pubspec.yaml index ace8afb6..d41ae804 100644 --- a/packages/apidash_core/pubspec.yaml +++ b/packages/apidash_core/pubspec.yaml @@ -12,6 +12,8 @@ dependencies: flutter: sdk: flutter collection: ^1.18.0 + curl_parser: + path: ../curl_parser freezed_annotation: ^2.4.1 http: ^1.2.1 http_parser: ^4.0.2 @@ -25,40 +27,3 @@ dev_dependencies: flutter_lints: ^4.0.0 freezed: ^2.5.7 test: ^1.25.2 - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. -flutter: - - # To add assets to your package, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - # - # For details regarding assets in packages, see - # https://flutter.dev/to/asset-from-package - # - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/to/resolution-aware-images - - # To add custom fonts to your package, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts in packages, see - # https://flutter.dev/to/font-from-package diff --git a/packages/apidash_core/pubspec_overrides.yaml b/packages/apidash_core/pubspec_overrides.yaml index 8fa1ad79..e1c03143 100644 --- a/packages/apidash_core/pubspec_overrides.yaml +++ b/packages/apidash_core/pubspec_overrides.yaml @@ -1,4 +1,6 @@ -# melos_managed_dependency_overrides: seed +# melos_managed_dependency_overrides: seed,curl_parser dependency_overrides: + curl_parser: + path: ../curl_parser seed: path: ../seed