import 'package:better_networking/consts.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, { bool isHeader = false, }) { if (kvRows == null) { return null; } Map finalMap = {}; for (var row in kvRows) { if (row.name.trim() != "") { String key = row.name; if (isHeader) { key = key.toLowerCase(); } finalMap[key] = row.value.toString(); } } return finalMap; } List? mapToRows(Map? kvMap) { if (kvMap == null) { return null; } List finalRows = []; for (var k in kvMap.keys) { finalRows.add(NameValueModel(name: k, value: kvMap[k])); } return finalRows; } List>? rowsToFormDataMapList(List? kvRows) { if (kvRows == null) { return null; } List> finalMap = kvRows .map( (FormDataModel formData) => (formData.name.trim().isEmpty && formData.value.trim().isEmpty) ? null : { "name": formData.name, "value": formData.value, "type": formData.type.name, }, ) .nonNulls .toList(); return finalMap; } List? mapListToFormDataModelRows(List? kvMap) { if (kvMap == null) { return null; } List finalRows = kvMap.map((formData) { return FormDataModel( name: formData["name"], value: formData["value"], type: getFormDataType(formData["type"]), ); }).toList(); return finalRows; } FormDataType getFormDataType(String? type) { return FormDataType.values.firstWhere( (element) => element.name == type, orElse: () => FormDataType.text, ); } List? getEnabledRows( List? rows, List? isRowEnabledList, ) { if (rows == null || isRowEnabledList == null) { return rows; } List finalRows = rows .where((element) => isRowEnabledList[rows.indexOf(element)]) .toList(); return finalRows == [] ? null : finalRows; } String? getRequestBody(APIType type, HttpRequestModel httpRequestModel) { return switch (type) { APIType.rest => (httpRequestModel.hasJsonData || httpRequestModel.hasTextData) ? httpRequestModel.body : null, APIType.graphql => getGraphQLBody(httpRequestModel), }; } // TODO: Expose this function to remove JSON comments String? removeJsonComments(String? json) { try { if (json == null) return null; var parsed = json5.json5Decode(json); return kJsonEncoder.convert(parsed); } catch (e) { return json; } }