From 92c559d15e38accc01c740a5547760861f16ef23 Mon Sep 17 00:00:00 2001 From: StormGear Date: Mon, 6 Jan 2025 15:06:47 +0000 Subject: [PATCH] map insomnia resources to HttpRequestModel --- .../lib/import_export/insomia_io.dart | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 packages/apidash_core/lib/import_export/insomia_io.dart diff --git a/packages/apidash_core/lib/import_export/insomia_io.dart b/packages/apidash_core/lib/import_export/insomia_io.dart new file mode 100644 index 00000000..571ba468 --- /dev/null +++ b/packages/apidash_core/lib/import_export/insomia_io.dart @@ -0,0 +1,81 @@ +import 'package:insomnia/insomnia.dart' as ins; +import 'package:seed/seed.dart'; +import '../consts.dart'; +import '../models/models.dart'; +import '../utils/utils.dart'; + +class InsomiaIO { + List<(String?, HttpRequestModel)>? getHttpRequestModelList(String content) { + content = content.trim(); + try { + final ic = ins.insomniaCollectionFromJsonStr(content); + final requests = ins.getRequestsFromInsomniaCollection(ic); + return requests + .map((req) => (req.$1, insomniaRequestToHttpRequestModel(req.$2))) + .toList(); + } catch (e) { + return null; + } + } + + HttpRequestModel insomniaRequestToHttpRequestModel(ins.Resource request) { + HTTPVerb method; + + try { + method = HTTPVerb.values.byName((request.method ?? "").toLowerCase()); + } catch (e) { + method = kDefaultHttpMethod; + } + String url = stripUrlParams(request.url ?? ""); + List headers = []; + List isHeaderEnabledList = []; + + List params = []; + List isParamEnabledList = []; + + for (var header in request.headers ?? []) { + var name = header.name ?? ""; + var value = header.value; + var activeHeader = header.name?.isNotEmpty ?? false; + headers.add(NameValueModel(name: name, value: value)); + isHeaderEnabledList.add(!activeHeader); + } + + for (var query in request.parameters ?? []) { + var name = query.name ?? ""; + var value = query.value; + var activeQuery = query.name?.isNotEmpty ?? false; + params.add(NameValueModel(name: name, value: value)); + isParamEnabledList.add(!activeQuery); + } + + ContentType bodyContentType = kDefaultContentType; + String? body; + List? formData; + if (request.body != null) { + if (request.body?.mimeType != null) { + try { + bodyContentType = ContentType.values + .byName(request.body?.mimeType ?? ""); + } catch (e) { + bodyContentType = kDefaultContentType; + } + body = request.body?.text; + } + /// TODO: Handle formdata and text + } + + return HttpRequestModel( + method: method, + url: url, + headers: headers, + params: params, + isHeaderEnabledList: isHeaderEnabledList, + isParamEnabledList: isParamEnabledList, + body: body, + bodyContentType: bodyContentType, + formData: formData, + ); + } + +} \ No newline at end of file