From 0ba5b5cbf07f263db49bd475f60a75e9703a97bc Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Thu, 26 Dec 2024 05:13:57 +0530 Subject: [PATCH] Update postman_io.dart --- .../lib/import_export/postman_io.dart | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/packages/apidash_core/lib/import_export/postman_io.dart b/packages/apidash_core/lib/import_export/postman_io.dart index e69de29b..25ba1866 100644 --- a/packages/apidash_core/lib/import_export/postman_io.dart +++ b/packages/apidash_core/lib/import_export/postman_io.dart @@ -0,0 +1,101 @@ +import 'package:postman/postman.dart' as pm; +import 'package:seed/seed.dart'; +import '../consts.dart'; +import '../models/models.dart'; +import '../utils/utils.dart'; + +class PostmanIO { + List<(String?, HttpRequestModel)>? getHttpRequestModelList(String content) { + content = content.trim(); + try { + final pc = pm.postmanCollectionFromJsonStr(content); + final requests = pm.getRequestsFromPostmanCollection(pc); + return requests + .map((req) => (req.$1, postmanRequestToHttpRequestModel(req.$2))) + .toList(); + } catch (e) { + return null; + } + } + + HttpRequestModel postmanRequestToHttpRequestModel(pm.Request request) { + HTTPVerb method; + + try { + method = HTTPVerb.values.byName((request.method ?? "").toLowerCase()); + } catch (e) { + method = kDefaultHttpMethod; + } + String url = stripUrlParams(request.url?.raw ?? ""); + List headers = []; + List isHeaderEnabledList = []; + + List params = []; + List isParamEnabledList = []; + + for (var header in request.header ?? []) { + var name = header.key ?? ""; + var value = header.value; + var activeHeader = header.disabled ?? false; + headers.add(NameValueModel(name: name, value: value)); + isHeaderEnabledList.add(!activeHeader); + } + + for (var query in request.url?.query ?? []) { + var name = query.key ?? ""; + var value = query.value; + var activeQuery = query.disabled ?? 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?.mode == 'raw') { + try { + bodyContentType = ContentType.values + .byName(request.body?.options?.raw?.language ?? ""); + } catch (e) { + bodyContentType = kDefaultContentType; + } + body = request.body?.raw; + } + if (request.body?.mode == 'formdata') { + bodyContentType = ContentType.formdata; + formData = []; + for (var fd in request.body?.formdata ?? []) { + var name = fd.key ?? ""; + FormDataType formDataType; + try { + formDataType = FormDataType.values.byName(fd.type ?? ""); + } catch (e) { + formDataType = FormDataType.text; + } + var value = switch (formDataType) { + FormDataType.text => fd.value ?? "", + FormDataType.file => fd.src ?? "" + }; + formData.add(FormDataModel( + name: name, + value: value, + type: formDataType, + )); + } + } + } + + return HttpRequestModel( + method: method, + url: url, + headers: headers, + params: params, + isHeaderEnabledList: isHeaderEnabledList, + isParamEnabledList: isParamEnabledList, + body: body, + bodyContentType: bodyContentType, + formData: formData, + ); + } +}