Refactor codegen

This commit is contained in:
Ankit Mahato
2024-03-12 05:19:03 +05:30
parent fc7a051285
commit cb8bfebecd
19 changed files with 759 additions and 352 deletions

View File

@ -18,64 +18,40 @@ class Codegen {
String defaultUriScheme, {
String? boundary,
}) {
String url = requestModel.url;
if (url.isEmpty) {
url = kDefaultUri;
}
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
var rM = requestModel.copyWith(url: url);
switch (codegenLanguage) {
case CodegenLanguage.curl:
return cURLCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return cURLCodeGen().getCode(rM);
case CodegenLanguage.har:
return HARCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return HARCodeGen().getCode(rM, defaultUriScheme, boundary: boundary);
case CodegenLanguage.dartHttp:
return DartHttpCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return DartHttpCodeGen().getCode(rM);
case CodegenLanguage.dartDio:
return DartDioCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return DartDioCodeGen().getCode(rM);
case CodegenLanguage.jsAxios:
return AxiosCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return AxiosCodeGen().getCode(rM);
case CodegenLanguage.jsFetch:
return FetchCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return FetchCodeGen().getCode(rM);
case CodegenLanguage.nodejsAxios:
return AxiosCodeGen(isNodeJs: true).getCode(
requestModel,
defaultUriScheme,
);
return AxiosCodeGen(isNodeJs: true).getCode(rM);
case CodegenLanguage.nodejsFetch:
return FetchCodeGen(isNodeJs: true).getCode(
requestModel,
defaultUriScheme,
);
return FetchCodeGen(isNodeJs: true).getCode(rM);
case CodegenLanguage.kotlinOkHttp:
return KotlinOkHttpCodeGen().getCode(
requestModel,
defaultUriScheme,
);
return KotlinOkHttpCodeGen().getCode(rM);
case CodegenLanguage.pythonHttpClient:
return PythonHttpClientCodeGen().getCode(
requestModel,
defaultUriScheme,
boundary: boundary ?? getNewUuid(),
);
return PythonHttpClientCodeGen()
.getCode(rM, boundary: boundary ?? getNewUuid());
case CodegenLanguage.pythonRequests:
return PythonRequestsCodeGen().getCode(
requestModel,
defaultUriScheme,
boundary: boundary,
);
return PythonRequestsCodeGen().getCode(rM, boundary: boundary);
}
}
}

View File

@ -8,15 +8,10 @@ import 'shared.dart';
class DartDioCodeGen {
String? getCode(
RequestModel requestModel,
String defaultUriScheme,
) {
try {
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
final next = generatedDartCode(
url: url,
url: requestModel.url,
method: requestModel.method,
queryParams: requestModel.enabledParamsMap,
headers: requestModel.enabledHeadersMap,

View File

@ -9,15 +9,10 @@ import 'shared.dart';
class DartHttpCodeGen {
String? getCode(
RequestModel requestModel,
String defaultUriScheme,
) {
try {
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
final next = generatedDartCode(
url: url,
url: requestModel.url,
method: requestModel.method,
queryParams: requestModel.enabledParamsMap,
headers: {...requestModel.enabledHeadersMap},

View File

@ -73,7 +73,6 @@ async function buildFormData(fields) {
''';
String? getCode(
RequestModel requestModel,
String defaultUriScheme,
) {
try {
jj.Template kNodejsImportTemplate = jj.Template(kStringImportNode);
@ -91,17 +90,14 @@ async function buildFormData(fields) {
result += renderedMultiPartBody;
}
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
var rM = requestModel.copyWith(url: url);
var harJson = requestModelToHARJsonRequest(rM, useEnabled: true);
var harJson = requestModelToHARJsonRequest(
requestModel,
useEnabled: true,
);
var templateStart = jj.Template(kTemplateStart);
result += templateStart.render({
"url": stripUrlParams(url),
"url": stripUrlParams(requestModel.url),
"method": harJson["method"].toLowerCase(),
});
@ -124,7 +120,7 @@ async function buildFormData(fields) {
m[i["name"]] = i["value"];
}
if (requestModel.hasFormData) {
m['Content-Type'] = 'multipart/form-data';
m[kHeaderContentType] = 'multipart/form-data';
}
result += templateHeader
.render({"headers": padMultilineString(kEncoder.convert(m), 2)});

View File

@ -73,7 +73,6 @@ fetch(url, options)
String? getCode(
RequestModel requestModel,
String defaultUriScheme,
) {
try {
jj.Template kNodejsImportTemplate = jj.Template(kStringImportNode);
@ -89,13 +88,11 @@ fetch(url, options)
"fields_list": json.encode(requestModel.formDataMapList),
});
}
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
var rM = requestModel.copyWith(url: url);
var harJson = requestModelToHARJsonRequest(rM, useEnabled: true);
var harJson = requestModelToHARJsonRequest(
requestModel,
useEnabled: true,
);
var templateStart = jj.Template(kTemplateStart);
result += templateStart.render({
@ -109,7 +106,7 @@ fetch(url, options)
var templateHeader = jj.Template(kTemplateHeader);
var m = {};
if (requestModel.hasFormData) {
m["Content-Type"] = "multipart/form-data";
m[kHeaderContentType] = "multipart/form-data";
}
for (var i in headers) {
m[i["name"]] = i["value"];

View File

@ -75,7 +75,6 @@ import okhttp3.MultipartBody""";
String? getCode(
RequestModel requestModel,
String defaultUriScheme,
) {
try {
String result = "";
@ -83,13 +82,8 @@ import okhttp3.MultipartBody""";
bool hasBody = false;
bool hasFormData = false;
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
var rec = getValidRequestUri(
url,
requestModel.url,
requestModel.enabledRequestParams,
);
Uri? uri = rec.$1;

View File

@ -5,13 +5,15 @@ import 'package:apidash/models/models.dart' show RequestModel;
class HARCodeGen {
String? getCode(
RequestModel requestModel,
String defaultUriScheme,
) {
String defaultUriScheme, {
String? boundary,
}) {
try {
var harString = kEncoder.convert(requestModelToHARJsonRequest(
requestModel,
defaultUriScheme: defaultUriScheme,
useEnabled: true,
boundary: boundary,
));
return harString;
} catch (e) {

View File

@ -87,8 +87,7 @@ dataList = build_data_list({{fields_list}})
body = b'\r\n'.join(dataList)
''';
String? getCode(
RequestModel requestModel,
String defaultUriScheme, {
RequestModel requestModel, {
String? boundary,
}) {
try {
@ -97,11 +96,6 @@ body = b'\r\n'.join(dataList)
bool hasQuery = false;
bool hasBody = false;
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
var templateStartUrl = jj.Template(kTemplateStart);
result += templateStartUrl.render(
{
@ -109,7 +103,7 @@ body = b'\r\n'.join(dataList)
},
);
var rec = getValidRequestUri(
url,
requestModel.url,
requestModel.enabledRequestParams,
);

View File

@ -80,8 +80,7 @@ print('Response Body:', response.text)
}
String? getCode(
RequestModel requestModel,
String defaultUriScheme, {
RequestModel requestModel, {
String? boundary,
}) {
try {
@ -91,13 +90,8 @@ print('Response Body:', response.text)
bool hasBody = false;
bool hasJsonBody = false;
String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) {
url = "$defaultUriScheme://$url";
}
var rec = getValidRequestUri(
url,
requestModel.url,
requestModel.enabledRequestParams,
);
Uri? uri = rec.$1;