mirror of
https://github.com/foss42/apidash.git
synced 2025-06-05 10:20:44 +08:00
Merge branch 'main' into form_data_imp
This commit is contained in:
@ -20,9 +20,10 @@ class DartHttpCodeGen {
|
|||||||
url: url,
|
url: url,
|
||||||
method: requestModel.method,
|
method: requestModel.method,
|
||||||
queryParams: requestModel.enabledParamsMap,
|
queryParams: requestModel.enabledParamsMap,
|
||||||
headers: requestModel.enabledHeadersMap,
|
headers: {...requestModel.enabledHeadersMap},
|
||||||
body: requestModel.requestBody,
|
|
||||||
contentType: requestModel.requestBodyContentType,
|
contentType: requestModel.requestBodyContentType,
|
||||||
|
hasContentTypeHeader: requestModel.hasContentTypeHeader,
|
||||||
|
body: requestModel.requestBody,
|
||||||
formData: requestModel.formDataMapList,
|
formData: requestModel.formDataMapList,
|
||||||
);
|
);
|
||||||
return next;
|
return next;
|
||||||
@ -36,8 +37,9 @@ class DartHttpCodeGen {
|
|||||||
required HTTPVerb method,
|
required HTTPVerb method,
|
||||||
required Map<String, String> queryParams,
|
required Map<String, String> queryParams,
|
||||||
required Map<String, String> headers,
|
required Map<String, String> headers,
|
||||||
required String? body,
|
|
||||||
required ContentType contentType,
|
required ContentType contentType,
|
||||||
|
required String? body,
|
||||||
|
required bool hasContentTypeHeader,
|
||||||
required List<Map<String, dynamic>> formData,
|
required List<Map<String, dynamic>> formData,
|
||||||
}) {
|
}) {
|
||||||
final uri = Uri.parse(url);
|
final uri = Uri.parse(url);
|
||||||
@ -50,16 +52,12 @@ class DartHttpCodeGen {
|
|||||||
final uriExp =
|
final uriExp =
|
||||||
declareVar('uri').assign(refer('Uri.parse').call([literalString(url)]));
|
declareVar('uri').assign(refer('Uri.parse').call([literalString(url)]));
|
||||||
|
|
||||||
final composeHeaders = headers;
|
|
||||||
Expression? dataExp;
|
Expression? dataExp;
|
||||||
if (kMethodsWithBody.contains(method) && (body?.isNotEmpty ?? false)) {
|
if (kMethodsWithBody.contains(method) && (body?.isNotEmpty ?? false)) {
|
||||||
final strContent = CodeExpression(Code('r\'\'\'$body\'\'\''));
|
final strContent = CodeExpression(Code('r\'\'\'$body\'\'\''));
|
||||||
dataExp = declareVar('body', type: refer('String')).assign(strContent);
|
dataExp = declareVar('body', type: refer('String')).assign(strContent);
|
||||||
|
|
||||||
final hasContentTypeHeader = composeHeaders.keys
|
|
||||||
.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
|
|
||||||
if (!hasContentTypeHeader) {
|
if (!hasContentTypeHeader) {
|
||||||
composeHeaders.putIfAbsent(HttpHeaders.contentTypeHeader,
|
headers.putIfAbsent(HttpHeaders.contentTypeHeader,
|
||||||
() => kContentTypeMap[contentType] ?? '');
|
() => kContentTypeMap[contentType] ?? '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,10 +152,7 @@ body = b'\r\n'.join(dataList)
|
|||||||
|
|
||||||
if (headers.isNotEmpty || hasBody) {
|
if (headers.isNotEmpty || hasBody) {
|
||||||
hasHeaders = true;
|
hasHeaders = true;
|
||||||
bool hasContentTypeHeader = headers.keys
|
if (hasBody && !requestModel.hasContentTypeHeader) {
|
||||||
.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
|
|
||||||
|
|
||||||
if (hasBody && !hasContentTypeHeader) {
|
|
||||||
headers[HttpHeaders.contentTypeHeader] =
|
headers[HttpHeaders.contentTypeHeader] =
|
||||||
kContentTypeMap[requestModel.requestBodyContentType] ?? "";
|
kContentTypeMap[requestModel.requestBodyContentType] ?? "";
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import 'dart:io';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import '../utils/utils.dart'
|
import '../utils/utils.dart'
|
||||||
show
|
show
|
||||||
@ -63,6 +64,9 @@ class RequestModel {
|
|||||||
rowsToFormDataMapList(requestFormDataList) ?? [];
|
rowsToFormDataMapList(requestFormDataList) ?? [];
|
||||||
bool get isFormDataRequest => requestBodyContentType == ContentType.formdata;
|
bool get isFormDataRequest => requestBodyContentType == ContentType.formdata;
|
||||||
|
|
||||||
|
bool get hasContentTypeHeader => enabledHeadersMap.keys
|
||||||
|
.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
|
||||||
|
|
||||||
RequestModel duplicate({
|
RequestModel duplicate({
|
||||||
required String id,
|
required String id,
|
||||||
}) {
|
}) {
|
||||||
|
@ -29,9 +29,7 @@ Future<(http.Response?, Duration?, String?)> request(
|
|||||||
if (contentLength > 0) {
|
if (contentLength > 0) {
|
||||||
body = requestBody;
|
body = requestBody;
|
||||||
headers[HttpHeaders.contentLengthHeader] = contentLength.toString();
|
headers[HttpHeaders.contentLengthHeader] = contentLength.toString();
|
||||||
final hasContentTypeHeader = headers.keys
|
if (!requestModel.hasContentTypeHeader) {
|
||||||
.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
|
|
||||||
if (!hasContentTypeHeader) {
|
|
||||||
headers[HttpHeaders.contentTypeHeader] =
|
headers[HttpHeaders.contentTypeHeader] =
|
||||||
kContentTypeMap[requestModel.requestBodyContentType] ?? "";
|
kContentTypeMap[requestModel.requestBodyContentType] ?? "";
|
||||||
}
|
}
|
||||||
|
@ -136,10 +136,7 @@ Map<String, dynamic> requestModelToHARJsonRequest(
|
|||||||
var headers =
|
var headers =
|
||||||
useEnabled ? requestModel.enabledHeadersMap : requestModel.headersMap;
|
useEnabled ? requestModel.enabledHeadersMap : requestModel.headersMap;
|
||||||
if (headers.isNotEmpty || hasBody) {
|
if (headers.isNotEmpty || hasBody) {
|
||||||
bool hasContentTypeHeader = headers.keys
|
if (hasBody && !requestModel.hasContentTypeHeader) {
|
||||||
.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
|
|
||||||
|
|
||||||
if (hasBody && !hasContentTypeHeader) {
|
|
||||||
var m = {
|
var m = {
|
||||||
"name": "Content-Type",
|
"name": "Content-Type",
|
||||||
"value": kContentTypeMap[requestModel.requestBodyContentType] ?? ""
|
"value": kContentTypeMap[requestModel.requestBodyContentType] ?? ""
|
||||||
|
Reference in New Issue
Block a user