mirror of
https://github.com/foss42/apidash.git
synced 2025-05-31 14:23:45 +08:00
Merge branch 'foss42:main' into add-feature-mobile-layout
This commit is contained in:
12
README.md
12
README.md
@ -2,7 +2,17 @@
|
||||
|
||||
[](https://bit.ly/heyfoss)
|
||||
|
||||
We are participating in GSoC 2024 🎉 [More Details ...](https://summerofcode.withgoogle.com/programs/2024/organizations/api-dash)
|
||||
🚨 We are participating in GSoC 2024 🎉
|
||||
|
||||
<img src="https://github.com/foss42/apidash/assets/615622/493ce57f-06c3-4789-b7ae-9fa63bca8183" alt="GSoC" width="500">
|
||||
|
||||
| | Link |
|
||||
|--|--|
|
||||
| Learn about GSoC | [Link](https://summerofcode.withgoogle.com) |
|
||||
| Organization page on GSoC | [Link](https://summerofcode.withgoogle.com/programs/2024/organizations/api-dash) |
|
||||
| Project Ideas List | [Link](https://github.com/foss42/apidash/discussions/112) |
|
||||
| Application Guide | [Link](https://github.com/foss42/apidash/discussions/111) |
|
||||
| Discord Channel | [Link](https://discord.com/invite/2s49SCNfyJ) |
|
||||
|
||||
### Please support this initiative by giving this project a Star ⭐️
|
||||
|
||||
|
@ -1,47 +1,72 @@
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart' show getNewUuid;
|
||||
import 'dart/http.dart';
|
||||
import 'dart/dio.dart';
|
||||
import 'go/http.dart';
|
||||
import 'kotlin/okhttp.dart';
|
||||
import 'python/http_client.dart';
|
||||
import 'python/requests.dart';
|
||||
import 'rust/actix.dart';
|
||||
import 'rust/reqwest.dart';
|
||||
import 'rust/ureq.dart';
|
||||
import 'js/axios.dart';
|
||||
import 'js/fetch.dart';
|
||||
import 'others/har.dart';
|
||||
import 'others/curl.dart';
|
||||
import 'julia/http.dart';
|
||||
|
||||
class Codegen {
|
||||
String? getCode(
|
||||
CodegenLanguage codegenLanguage,
|
||||
RequestModel requestModel,
|
||||
String defaultUriScheme,
|
||||
) {
|
||||
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);
|
||||
.getCode(rM, boundary: boundary ?? getNewUuid());
|
||||
case CodegenLanguage.pythonRequests:
|
||||
return PythonRequestsCodeGen().getCode(requestModel, defaultUriScheme);
|
||||
return PythonRequestsCodeGen().getCode(rM, boundary: boundary);
|
||||
case CodegenLanguage.rustActix:
|
||||
return RustActixCodeGen().getCode(rM, boundary: boundary);
|
||||
case CodegenLanguage.rustReqwest:
|
||||
return RustReqwestCodeGen().getCode(rM);
|
||||
case CodegenLanguage.rustUreq:
|
||||
return RustUreqCodeGen().getCode(rM, boundary: boundary);
|
||||
case CodegenLanguage.goHttp:
|
||||
return GoHttpCodeGen().getCode(rM);
|
||||
case CodegenLanguage.juliaHttp:
|
||||
return JuliaHttpClientCodeGen().getCode(rM);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
15
lib/codegen/codegen_utils.dart
Normal file
15
lib/codegen/codegen_utils.dart
Normal file
@ -0,0 +1,15 @@
|
||||
String jsonToPyDict(String jsonString) {
|
||||
Map<String, String> replaceWithMap = {
|
||||
"null": "None",
|
||||
"true": "True",
|
||||
"false": "False"
|
||||
};
|
||||
String pyDict = jsonString;
|
||||
for (var k in replaceWithMap.keys) {
|
||||
RegExp regExp = RegExp(k + r'(?=([^"]*"[^"]*")*[^"]*$)');
|
||||
pyDict = pyDict.replaceAllMapped(regExp, (match) {
|
||||
return replaceWithMap[match.group(0)] ?? match.group(0)!;
|
||||
});
|
||||
}
|
||||
return pyDict;
|
||||
}
|
@ -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,
|
||||
@ -60,12 +55,17 @@ class DartDioCodeGen {
|
||||
final List<Map<String,String>> formDataList = ${json.encode(formData)};
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
formData.files.add(MapEntry(
|
||||
formField['name'],
|
||||
await MultipartFile.fromFile(formField['value'], filename: formField['value']),
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
formData.fields.add(MapEntry(formField['name'], formField['value']));
|
||||
if (formField['value'] != null) {
|
||||
data.fields.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
''');
|
||||
@ -84,16 +84,16 @@ class DartDioCodeGen {
|
||||
dataExp = declareFinal('data').assign(strContent);
|
||||
// when add new type of [ContentType], need update [dataExp].
|
||||
case ContentType.formdata:
|
||||
dataExp = declareFinal('data').assign(refer('FormData()'));
|
||||
dataExp = declareFinal('data').assign(refer('dio.FormData()'));
|
||||
}
|
||||
}
|
||||
final responseExp = declareFinal('response').assign(InvokeExpression.newOf(
|
||||
refer('dio.Dio'),
|
||||
refer('dio.Dio()'),
|
||||
[literalString(url)],
|
||||
{
|
||||
if (queryParamExp != null) 'queryParameters': refer('queryParams'),
|
||||
if (headerExp != null)
|
||||
'options': refer('Options').newInstance(
|
||||
'options': refer('dio.Options').newInstance(
|
||||
[],
|
||||
{'headers': refer('headers')},
|
||||
),
|
||||
@ -117,7 +117,7 @@ class DartDioCodeGen {
|
||||
refer('print').call([refer('response').property('data')]),
|
||||
],
|
||||
onError: {
|
||||
'DioException': [
|
||||
'dio.DioException': [
|
||||
refer('print').call([
|
||||
refer('e').property('response').nullSafeProperty('statusCode'),
|
||||
]),
|
||||
|
@ -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},
|
||||
|
172
lib/codegen/go/http.dart
Normal file
172
lib/codegen/go/http.dart
Normal file
@ -0,0 +1,172 @@
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/utils/utils.dart' show getValidRequestUri;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
|
||||
class GoHttpCodeGen {
|
||||
final String kTemplateStart = """package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"{% if hasBody %}
|
||||
"bytes"{% if hasFormData %}
|
||||
"mime/multipart"{% if hasFileInFormData %}
|
||||
"os"{% endif %}{% endif %}{% endif %}
|
||||
)
|
||||
|
||||
func main() {
|
||||
client := &http.Client{}
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateUrl = """
|
||||
url, _ := url.Parse("{{url}}")
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateBody = """
|
||||
{% if body %}payload := bytes.NewBuffer([]byte(`{{body}}`)){% endif %}
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateFormData = """
|
||||
payload := &bytes.Buffer{}
|
||||
writer := multipart.NewWriter(payload){% if hasFileInFormData %}
|
||||
var (
|
||||
file *os.File
|
||||
part io.Writer
|
||||
){% endif %}
|
||||
{% for field in fields %}
|
||||
{% if field.type == "file" %}file, _ = os.Open("{{field.value}}")
|
||||
defer file.Close()
|
||||
part, _ = writer.CreateFormFile("{{field.name}}", "{{field.value}}")
|
||||
io.Copy(part, file)
|
||||
{% else %}writer.WriteField("{{field.name}}", "{{field.value}}"){% endif %}{% endfor %}
|
||||
writer.Close()
|
||||
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateHeader = """
|
||||
{% if headers %}{% for header, value in headers %}
|
||||
req.Header.Set("{{header}}", "{{value}}"){% endfor %}
|
||||
{% endif %}
|
||||
""";
|
||||
|
||||
String kStringFormDataHeader = """
|
||||
req.Header.Set("Content-Type", writer.FormDataContentType())
|
||||
""";
|
||||
|
||||
String kTemplateQueryParam = """
|
||||
query := url.Query()
|
||||
{% for key, value in params %}
|
||||
query.Set("{{key}}", "{{value}}"){% endfor %}
|
||||
|
||||
url.RawQuery = query.Encode()
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateRequest = """
|
||||
req, _ := http.NewRequest("{{method}}", url.String(), {% if hasBody %}payload{% else %}nil{% endif %})
|
||||
|
||||
""";
|
||||
|
||||
final String kTemplateEnd = """
|
||||
|
||||
response, err := client.Do(req)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
fmt.Println("Status Code:", response.StatusCode)
|
||||
body, _ := io.ReadAll(response.Body)
|
||||
fmt.Println("Response body:", string(body))
|
||||
}""";
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
) {
|
||||
try {
|
||||
String result = "";
|
||||
var hasBody = false;
|
||||
var requestBody = requestModel.requestBody;
|
||||
|
||||
String url = requestModel.url;
|
||||
|
||||
var templateStart = jj.Template(kTemplateStart);
|
||||
result += templateStart.render({
|
||||
"hasBody": requestModel.hasData,
|
||||
"hasFormData": requestModel.hasFormData,
|
||||
"hasFileInFormData": requestModel.hasFileInFormData,
|
||||
});
|
||||
|
||||
var templateUrl = jj.Template(kTemplateUrl);
|
||||
result += templateUrl.render({"url": url});
|
||||
|
||||
var rec = getValidRequestUri(
|
||||
url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
|
||||
Uri? uri = rec.$1;
|
||||
|
||||
if (uri != null) {
|
||||
if (requestModel.hasTextData || requestModel.hasJsonData) {
|
||||
hasBody = true;
|
||||
var templateRawBody = jj.Template(kTemplateBody);
|
||||
result += templateRawBody.render({"body": requestBody});
|
||||
} else if (requestModel.hasFormData) {
|
||||
hasBody = true;
|
||||
var templateFormData = jj.Template(kTemplateFormData);
|
||||
result += templateFormData.render({
|
||||
"hasFileInFormData": requestModel.hasFileInFormData,
|
||||
"fields": requestModel.formDataMapList,
|
||||
});
|
||||
}
|
||||
|
||||
if (uri.hasQuery) {
|
||||
var params = uri.queryParameters;
|
||||
if (params.isNotEmpty) {
|
||||
var templateQueryParam = jj.Template(kTemplateQueryParam);
|
||||
result += templateQueryParam.render({"params": params});
|
||||
}
|
||||
}
|
||||
|
||||
var method = requestModel.method.name.toUpperCase();
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": method,
|
||||
"hasBody": hasBody,
|
||||
});
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || requestModel.hasData) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||
headers.putIfAbsent(kHeaderContentType,
|
||||
() => requestModel.requestBodyContentType.header);
|
||||
}
|
||||
if (headers.isNotEmpty) {
|
||||
var templateHeader = jj.Template(kTemplateHeader);
|
||||
result += templateHeader.render({
|
||||
"headers": headers,
|
||||
});
|
||||
}
|
||||
}
|
||||
if (requestModel.hasFormData) {
|
||||
result += kStringFormDataHeader;
|
||||
}
|
||||
|
||||
result += kTemplateEnd;
|
||||
}
|
||||
|
||||
return result;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ class AxiosCodeGen {
|
||||
|
||||
String kStringImportNode = """{% if isNodeJs %}import axios from 'axios';
|
||||
|
||||
{% endif %}{% if isFormDataRequest and isNodeJs %}const fs = require('fs');{% endif %}
|
||||
{% endif %}{% if hasFormData and isNodeJs %}const fs = require('fs');{% endif %}
|
||||
""";
|
||||
|
||||
String kTemplateStart = """let config = {
|
||||
@ -73,18 +73,16 @@ async function buildFormData(fields) {
|
||||
''';
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
String defaultUriScheme,
|
||||
) {
|
||||
try {
|
||||
jj.Template kNodejsImportTemplate = jj.Template(kStringImportNode);
|
||||
String importsData = kNodejsImportTemplate.render({
|
||||
"isFormDataRequest": requestModel.isFormDataRequest,
|
||||
"hasFormData": requestModel.hasFormData,
|
||||
"isNodeJs": isNodeJs,
|
||||
});
|
||||
|
||||
String result = importsData;
|
||||
if (requestModel.isFormDataRequest &&
|
||||
requestModel.formDataMapList.isNotEmpty) {
|
||||
if (requestModel.hasFormData && requestModel.formDataMapList.isNotEmpty) {
|
||||
var templateMultiPartBody = jj.Template(kMultiPartBodyTemplate);
|
||||
var renderedMultiPartBody = templateMultiPartBody.render({
|
||||
"isNodeJs": isNodeJs,
|
||||
@ -92,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(),
|
||||
});
|
||||
|
||||
@ -118,22 +113,21 @@ async function buildFormData(fields) {
|
||||
}
|
||||
|
||||
var headers = harJson["headers"];
|
||||
if (headers.isNotEmpty || requestModel.isFormDataRequest) {
|
||||
if (headers.isNotEmpty || requestModel.hasFormData) {
|
||||
var templateHeader = jj.Template(kTemplateHeader);
|
||||
var m = {};
|
||||
for (var i in headers) {
|
||||
m[i["name"]] = i["value"];
|
||||
}
|
||||
if (requestModel.isFormDataRequest) {
|
||||
m['Content-Type'] = 'multipart/form-data';
|
||||
if (requestModel.hasFormData) {
|
||||
m[kHeaderContentType] = 'multipart/form-data';
|
||||
}
|
||||
result += templateHeader
|
||||
.render({"headers": padMultilineString(kEncoder.convert(m), 2)});
|
||||
}
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
|
||||
if (requestModel.isFormDataRequest &&
|
||||
requestModel.formDataMapList.isNotEmpty) {
|
||||
if (requestModel.hasFormData && requestModel.formDataMapList.isNotEmpty) {
|
||||
var getFieldDataTemplate = jj.Template(kGetFormDataTemplate);
|
||||
|
||||
result += templateBody.render({
|
||||
|
@ -12,7 +12,7 @@ class FetchCodeGen {
|
||||
|
||||
String kStringImportNode = """
|
||||
import fetch from 'node-fetch';
|
||||
{% if isFormDataRequest %}const fs = require('fs');{% endif %}
|
||||
{% if hasFormData %}const fs = require('fs');{% endif %}
|
||||
|
||||
""";
|
||||
|
||||
@ -73,29 +73,26 @@ fetch(url, options)
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
String defaultUriScheme,
|
||||
) {
|
||||
try {
|
||||
jj.Template kNodejsImportTemplate = jj.Template(kStringImportNode);
|
||||
String importsData = kNodejsImportTemplate.render({
|
||||
"isFormDataRequest": requestModel.isFormDataRequest,
|
||||
"hasFormData": requestModel.hasFormData,
|
||||
});
|
||||
|
||||
String result = isNodeJs ? importsData : "";
|
||||
if (requestModel.isFormDataRequest) {
|
||||
if (requestModel.hasFormData) {
|
||||
var templateMultiPartBody = jj.Template(kMultiPartBodyTemplate);
|
||||
result += templateMultiPartBody.render({
|
||||
"isNodeJs": isNodeJs,
|
||||
"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({
|
||||
@ -108,8 +105,8 @@ fetch(url, options)
|
||||
if (headers.isNotEmpty) {
|
||||
var templateHeader = jj.Template(kTemplateHeader);
|
||||
var m = {};
|
||||
if (requestModel.isFormDataRequest) {
|
||||
m["Content-Type"] = "multipart/form-data";
|
||||
if (requestModel.hasFormData) {
|
||||
m[kHeaderContentType] = "multipart/form-data";
|
||||
}
|
||||
for (var i in headers) {
|
||||
m[i["name"]] = i["value"];
|
||||
@ -124,7 +121,7 @@ fetch(url, options)
|
||||
result += templateBody.render({
|
||||
"body": kEncoder.convert(harJson["postData"]["text"]),
|
||||
});
|
||||
} else if (requestModel.isFormDataRequest) {
|
||||
} else if (requestModel.hasFormData) {
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({
|
||||
"body": 'payload',
|
||||
|
198
lib/codegen/julia/http.dart
Normal file
198
lib/codegen/julia/http.dart
Normal file
@ -0,0 +1,198 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getNewUuid, getValidRequestUri, padMultilineString, stripUriParams;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
|
||||
class JuliaHttpClientCodeGen {
|
||||
final String kTemplateStart = """using HTTP,JSON
|
||||
|
||||
url = "{{url}}"
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateParams = """
|
||||
{% set new_params = params | replace(":", "=>") | replace("{", "(") | replace("}", ")") %}
|
||||
|
||||
params = Dict{{new_params}}
|
||||
""";
|
||||
|
||||
int kParamsPadding = 9;
|
||||
|
||||
String kTemplateBody = '''
|
||||
{% set new_params = body | replace(":", "=>") | replace("{", "(") | replace("}", ")") %}
|
||||
|
||||
payload = Dict{{new_params}}
|
||||
''';
|
||||
|
||||
String kTemplateJson = """
|
||||
{% set new_params = body | replace(":", "=>") | replace("{", "(") | replace("}", ")") %}
|
||||
|
||||
payload = Dict{{new_params}}
|
||||
""";
|
||||
|
||||
String kTemplateHeaders = """
|
||||
{% set new_params = headers | replace(":", "=>") | replace("{", "(") | replace("}", ")") %}
|
||||
|
||||
headers = Dict{{new_params}}
|
||||
""";
|
||||
|
||||
String kTemplateFormHeaderContentType = '''
|
||||
multipart/form-data; boundary={{boundary}}''';
|
||||
|
||||
int kHeadersPadding = 10;
|
||||
|
||||
String kTemplateRequest = """
|
||||
|
||||
|
||||
response = HTTP.{{method}}(url
|
||||
""";
|
||||
|
||||
final String kStringFormDataBody = r'''
|
||||
function build_data_list(fields)
|
||||
dataList = []
|
||||
for field in fields
|
||||
name = field["name"]
|
||||
value = field["value"]
|
||||
type_ = get(field, "type", "text")
|
||||
|
||||
push!(dataList, b"--{{boundary}}")
|
||||
if type_ == "text"
|
||||
push!(dataList, b"Content-Disposition: form-data; name=\"$name\"")
|
||||
push!(dataList, b"Content-Type: text/plain")
|
||||
push!(dataList, b"")
|
||||
push!(dataList, codeunits(value))
|
||||
elseif type_ == "file"
|
||||
push!(dataList, b"Content-Disposition: form-data; name=\"$name\"; filename=\"$value\"")
|
||||
push!(dataList, b"Content-Type: $value")
|
||||
push!(dataList, b"")
|
||||
push!(dataList, String(read(value)))
|
||||
end
|
||||
end
|
||||
push!(dataList, "--{{boundary}}--")
|
||||
push!(dataList, b"")
|
||||
return dataList
|
||||
end
|
||||
|
||||
dataList = build_data_list({{fields_list}})
|
||||
payload = join(dataList, b"\r\n")
|
||||
''';
|
||||
|
||||
String kStringRequestParams = """, query=params""";
|
||||
|
||||
String kStringRequestBody = """, payload=payload""";
|
||||
|
||||
String kStringRequestJson = """, JSON.json(payload)""";
|
||||
|
||||
String kStringRequestHeaders = """, headers=headers""";
|
||||
|
||||
final String kStringRequestEnd = """
|
||||
)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
|
||||
String? getCode(RequestModel requestModel) {
|
||||
try {
|
||||
String result = "";
|
||||
bool hasQuery = false;
|
||||
bool hasHeaders = false;
|
||||
bool hasBody = false;
|
||||
bool hasJsonBody = false;
|
||||
String uuid = getNewUuid();
|
||||
|
||||
var rec = getValidRequestUri(
|
||||
requestModel.url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
Uri? uri = rec.$1;
|
||||
if (uri != null) {
|
||||
var templateStartUrl = jj.Template(kTemplateStart);
|
||||
result += templateStartUrl.render({
|
||||
"url": stripUriParams(uri),
|
||||
});
|
||||
|
||||
if (uri.hasQuery) {
|
||||
var params = uri.queryParameters;
|
||||
if (params.isNotEmpty) {
|
||||
hasQuery = true;
|
||||
var templateParams = jj.Template(kTemplateParams);
|
||||
var paramsString = kEncoder.convert(params);
|
||||
paramsString = padMultilineString(paramsString, kParamsPadding);
|
||||
result += templateParams.render({"params": paramsString});
|
||||
}
|
||||
}
|
||||
|
||||
if (requestModel.hasJsonData) {
|
||||
hasJsonBody = true;
|
||||
var templateBody = jj.Template(kTemplateJson);
|
||||
result += templateBody.render({"body": requestModel.requestBody});
|
||||
} else if (requestModel.hasTextData) {
|
||||
hasBody = true;
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestModel.requestBody});
|
||||
}
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || hasBody) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (requestModel.hasFormData) {
|
||||
var formHeaderTemplate =
|
||||
jj.Template(kTemplateFormHeaderContentType);
|
||||
headers[HttpHeaders.contentTypeHeader] = formHeaderTemplate.render({
|
||||
"boundary": uuid,
|
||||
});
|
||||
}
|
||||
if (headers.isNotEmpty || hasBody) {
|
||||
hasHeaders = true;
|
||||
if (hasBody) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
var headersString = kEncoder.convert(headers);
|
||||
headersString = padMultilineString(headersString, kHeadersPadding);
|
||||
var templateHeaders = jj.Template(kTemplateHeaders);
|
||||
result += templateHeaders.render({"headers": headersString});
|
||||
}
|
||||
}
|
||||
if (requestModel.hasFormData) {
|
||||
var formDataBodyData = jj.Template(kStringFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"fields_list": json.encode(requestModel.formDataMapList),
|
||||
"boundary": uuid,
|
||||
},
|
||||
);
|
||||
}
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": requestModel.method.name.toLowerCase(),
|
||||
});
|
||||
|
||||
if (hasQuery) {
|
||||
result += kStringRequestParams;
|
||||
}
|
||||
|
||||
if (hasBody || requestModel.hasFormData) {
|
||||
result += kStringRequestBody;
|
||||
}
|
||||
|
||||
if (hasJsonBody || requestModel.hasFormData) {
|
||||
result += kStringRequestJson;
|
||||
}
|
||||
|
||||
if (hasHeaders || requestModel.hasFormData) {
|
||||
result += kStringRequestHeaders;
|
||||
}
|
||||
|
||||
result += kStringRequestEnd;
|
||||
}
|
||||
return result;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
@ -113,7 +107,7 @@ import okhttp3.MultipartBody""";
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (requestModel.isFormDataRequest) {
|
||||
if (requestModel.hasFormData) {
|
||||
hasFormData = true;
|
||||
var formDataTemplate = jj.Template(kFormDataBody);
|
||||
|
||||
@ -152,7 +146,7 @@ import okhttp3.MultipartBody""";
|
||||
var templateRequestEnd = jj.Template(kTemplateRequestEnd);
|
||||
result += templateRequestEnd.render({
|
||||
"method": method.name.toLowerCase(),
|
||||
"hasBody": (hasBody || requestModel.isFormDataRequest) ? "body" : "",
|
||||
"hasBody": (hasBody || requestModel.hasFormData) ? "body" : "",
|
||||
});
|
||||
}
|
||||
return result;
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/utils/utils.dart' show requestModelToHARJsonRequest;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
import 'package:apidash/consts.dart';
|
||||
|
||||
// ignore: camel_case_types
|
||||
class cURLCodeGen {
|
||||
@ -11,7 +12,7 @@ class cURLCodeGen {
|
||||
--header '{{name}}: {{value}}'
|
||||
""";
|
||||
String kTemplateFormData = """ \\
|
||||
--form '{{name}}: {{value}}'
|
||||
--form '{{name}}={{value}}'
|
||||
""";
|
||||
|
||||
String kTemplateBody = """ \\
|
||||
@ -20,25 +21,21 @@ class cURLCodeGen {
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
String defaultUriScheme,
|
||||
) {
|
||||
try {
|
||||
String result = "";
|
||||
|
||||
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({
|
||||
"method": switch (harJson["method"]) {
|
||||
"GET" => "",
|
||||
"HEAD" => " --head",
|
||||
_ => " --request ${harJson["method"]} \\\n"
|
||||
_ => " --request ${harJson["method"]} \\\n "
|
||||
},
|
||||
"url": harJson["url"],
|
||||
});
|
||||
@ -46,33 +43,31 @@ class cURLCodeGen {
|
||||
var headers = harJson["headers"];
|
||||
if (headers.isNotEmpty) {
|
||||
for (var item in headers) {
|
||||
if (requestModel.hasFormData && item["name"] == kHeaderContentType) {
|
||||
continue;
|
||||
}
|
||||
var templateHeader = jj.Template(kTemplateHeader);
|
||||
result += templateHeader
|
||||
.render({"name": item["name"], "value": item["value"]});
|
||||
}
|
||||
}
|
||||
if (harJson['formData'] != null) {
|
||||
var formDataList = harJson['formData'] as List<Map<String, dynamic>>;
|
||||
for (var formData in formDataList) {
|
||||
|
||||
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestModel.requestBody});
|
||||
} else if (requestModel.hasFormData) {
|
||||
for (var formData in requestModel.formDataList) {
|
||||
var templateFormData = jj.Template(kTemplateFormData);
|
||||
if (formData['type'] != null &&
|
||||
formData['name'] != null &&
|
||||
formData['value'] != null &&
|
||||
formData['name']!.isNotEmpty &&
|
||||
formData['value']!.isNotEmpty) {
|
||||
if (formData.name.isNotEmpty && formData.value.isNotEmpty) {
|
||||
result += templateFormData.render({
|
||||
"name": formData["name"],
|
||||
"name": formData.name,
|
||||
"value":
|
||||
"${formData['type'] == 'file' ? '@' : ''}${formData["value"]}",
|
||||
"${formData.type == FormDataType.file ? '@' : ''}${formData.value}",
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (harJson["postData"]?["text"] != null) {
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": harJson["postData"]["text"]});
|
||||
}
|
||||
return result;
|
||||
} catch (e) {
|
||||
return null;
|
||||
|
@ -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) {
|
||||
|
@ -1,14 +1,13 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getNewUuid, getValidRequestUri, padMultilineString;
|
||||
import 'package:apidash/utils/utils.dart' show getValidRequestUri;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
import 'package:apidash/consts.dart';
|
||||
|
||||
class PythonHttpClientCodeGen {
|
||||
final String kTemplateStart = """import http.client
|
||||
{% if isFormDataRequest %}import mimetypes
|
||||
{% if hasFormData %}import mimetypes
|
||||
from codecs import encode
|
||||
{% endif %}
|
||||
""";
|
||||
@ -20,7 +19,6 @@ queryParams = {{params}}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
""";
|
||||
int kParamsPadding = 14;
|
||||
|
||||
String kTemplateBody = """
|
||||
|
||||
@ -36,8 +34,6 @@ headers = {{headers}}
|
||||
String kTemplateFormHeaderContentType = '''
|
||||
multipart/form-data; boundary={{boundary}}''';
|
||||
|
||||
int kHeadersPadding = 10;
|
||||
|
||||
String kTemplateConnection = """
|
||||
|
||||
conn = http.client.HTTP{{isHttps}}Connection("{{authority}}")""";
|
||||
@ -87,30 +83,23 @@ dataList = build_data_list({{fields_list}})
|
||||
body = b'\r\n'.join(dataList)
|
||||
''';
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
String defaultUriScheme,
|
||||
) {
|
||||
String uuid = getNewUuid();
|
||||
|
||||
RequestModel requestModel, {
|
||||
String? boundary,
|
||||
}) {
|
||||
try {
|
||||
String result = "";
|
||||
bool hasHeaders = false;
|
||||
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(
|
||||
{
|
||||
"isFormDataRequest": requestModel.isFormDataRequest,
|
||||
"hasFormData": requestModel.hasFormData,
|
||||
},
|
||||
);
|
||||
var rec = getValidRequestUri(
|
||||
url,
|
||||
requestModel.url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
|
||||
@ -123,53 +112,48 @@ body = b'\r\n'.join(dataList)
|
||||
hasQuery = true;
|
||||
var templateParams = jj.Template(kTemplateParams);
|
||||
var paramsString = kEncoder.convert(params);
|
||||
paramsString = padMultilineString(paramsString, kParamsPadding);
|
||||
result += templateParams.render({"params": paramsString});
|
||||
}
|
||||
}
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(method) &&
|
||||
requestBody != null &&
|
||||
!requestModel.isFormDataRequest) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
hasBody = true;
|
||||
if (requestModel.hasData) {
|
||||
hasBody = true;
|
||||
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
result += templateBody.render({"body": requestModel.requestBody});
|
||||
}
|
||||
}
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || hasBody) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (requestModel.isFormDataRequest) {
|
||||
var formHeaderTemplate =
|
||||
jj.Template(kTemplateFormHeaderContentType);
|
||||
headers[HttpHeaders.contentTypeHeader] = formHeaderTemplate.render({
|
||||
"boundary": uuid,
|
||||
});
|
||||
}
|
||||
|
||||
if (headers.isNotEmpty || hasBody) {
|
||||
hasHeaders = true;
|
||||
if (hasBody && !requestModel.hasContentTypeHeader) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
} else if (requestModel.hasFormData) {
|
||||
var formHeaderTemplate =
|
||||
jj.Template(kTemplateFormHeaderContentType);
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
formHeaderTemplate.render({
|
||||
"boundary": boundary,
|
||||
});
|
||||
}
|
||||
}
|
||||
var headersString = kEncoder.convert(headers);
|
||||
headersString = padMultilineString(headersString, kHeadersPadding);
|
||||
var templateHeaders = jj.Template(kTemplateHeaders);
|
||||
result += templateHeaders.render({"headers": headersString});
|
||||
}
|
||||
}
|
||||
if (requestModel.isFormDataRequest) {
|
||||
if (requestModel.hasFormData) {
|
||||
var formDataBodyData = jj.Template(kStringFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"fields_list": json.encode(requestModel.formDataMapList),
|
||||
"boundary": uuid,
|
||||
"boundary": boundary,
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -181,16 +165,16 @@ body = b'\r\n'.join(dataList)
|
||||
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": method.name.toUpperCase(),
|
||||
"method": requestModel.method.name.toUpperCase(),
|
||||
"path": uri.path,
|
||||
"queryParamsStr": hasQuery ? " + queryParamsStr" : "",
|
||||
});
|
||||
|
||||
if (hasBody || requestModel.isFormDataRequest) {
|
||||
if (hasBody || requestModel.hasFormData) {
|
||||
result += kStringRequestBody;
|
||||
}
|
||||
|
||||
if (hasHeaders || requestModel.isFormDataRequest) {
|
||||
if (hasHeaders || requestModel.hasFormData) {
|
||||
result += kStringRequestHeaders;
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,14 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getNewUuid, getValidRequestUri, padMultilineString, stripUriParams;
|
||||
show getValidRequestUri, stripUriParams, getFilenameFromPath;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
import '../codegen_utils.dart';
|
||||
|
||||
class PythonRequestsCodeGen {
|
||||
final String kTemplateStart = """import requests
|
||||
{% if isFormDataRequest %}import mimetypes
|
||||
from codecs import encode
|
||||
{% if hasFormData %}from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
{% endif %}
|
||||
url = '{{url}}'
|
||||
|
||||
@ -20,7 +19,6 @@ url = '{{url}}'
|
||||
params = {{params}}
|
||||
|
||||
""";
|
||||
int kParamsPadding = 9;
|
||||
|
||||
String kTemplateBody = """
|
||||
|
||||
@ -39,44 +37,27 @@ payload = {{body}}
|
||||
headers = {{headers}}
|
||||
|
||||
""";
|
||||
String kTemplateFormHeaderContentType = '''
|
||||
multipart/form-data; boundary={{boundary}}''';
|
||||
|
||||
int kHeadersPadding = 10;
|
||||
|
||||
String kTemplateRequest = """
|
||||
|
||||
response = requests.{{method}}(url
|
||||
""";
|
||||
|
||||
final String kStringFormDataBody = r'''
|
||||
final String kTemplateFormDataBody = r'''
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
payload = MultipartEncoder({
|
||||
{{formdata_payload}}
|
||||
}{% if boundary != '' %},
|
||||
boundary="{{boundary}}"
|
||||
{% endif %})
|
||||
|
||||
dataList.append(encode('--{{boundary}}'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode('--{{boundary}}--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list({{fields_list}})
|
||||
payload = b'\r\n'.join(dataList)
|
||||
''';
|
||||
|
||||
String kTemplateFormDataRowText = r""" "{{name}}": "{{value}}",""";
|
||||
|
||||
String kTemplateFormDataRowFile =
|
||||
r""" "{{name}}": ("{{filename}}", open("{{path}}", "rb")),""";
|
||||
|
||||
String kStringRequestParams = """, params=params""";
|
||||
|
||||
String kStringRequestBody = """, data=payload""";
|
||||
@ -91,25 +72,26 @@ print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
|
||||
String kStringFormDataContentType = "payload.content_type";
|
||||
|
||||
String refactorHeaderString(String headerString) {
|
||||
return headerString.replaceAll(
|
||||
'"$kStringFormDataContentType"', kStringFormDataContentType);
|
||||
}
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
String defaultUriScheme,
|
||||
) {
|
||||
RequestModel requestModel, {
|
||||
String? boundary,
|
||||
}) {
|
||||
try {
|
||||
String result = "";
|
||||
bool hasQuery = false;
|
||||
bool hasHeaders = false;
|
||||
bool hasBody = false;
|
||||
bool hasJsonBody = false;
|
||||
String uuid = getNewUuid();
|
||||
|
||||
String url = requestModel.url;
|
||||
if (!url.contains("://") && url.isNotEmpty) {
|
||||
url = "$defaultUriScheme://$url";
|
||||
}
|
||||
|
||||
var rec = getValidRequestUri(
|
||||
url,
|
||||
requestModel.url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
Uri? uri = rec.$1;
|
||||
@ -117,7 +99,7 @@ print('Response Body:', response.text)
|
||||
var templateStartUrl = jj.Template(kTemplateStart);
|
||||
result += templateStartUrl.render({
|
||||
"url": stripUriParams(uri),
|
||||
'isFormDataRequest': requestModel.isFormDataRequest
|
||||
'hasFormData': requestModel.hasFormData
|
||||
});
|
||||
|
||||
if (uri.hasQuery) {
|
||||
@ -126,77 +108,85 @@ print('Response Body:', response.text)
|
||||
hasQuery = true;
|
||||
var templateParams = jj.Template(kTemplateParams);
|
||||
var paramsString = kEncoder.convert(params);
|
||||
paramsString = padMultilineString(paramsString, kParamsPadding);
|
||||
result += templateParams.render({"params": paramsString});
|
||||
}
|
||||
}
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(method) && requestBody != null) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
if (requestModel.requestBodyContentType == ContentType.json) {
|
||||
hasJsonBody = true;
|
||||
var templateBody = jj.Template(kTemplateJson);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
} else if (!requestModel.isFormDataRequest) {
|
||||
hasBody = true;
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
if (requestModel.hasFormData) {
|
||||
hasBody = true;
|
||||
List<String> formdataPayload = [];
|
||||
for (var item in requestModel.formDataList) {
|
||||
if (item.type == FormDataType.text) {
|
||||
formdataPayload.add(jj.Template(kTemplateFormDataRowText).render({
|
||||
"name": item.name,
|
||||
"value": item.value,
|
||||
}));
|
||||
}
|
||||
if (item.type == FormDataType.file) {
|
||||
formdataPayload.add(jj.Template(kTemplateFormDataRowFile).render({
|
||||
"name": item.name,
|
||||
"filename": getFilenameFromPath(item.value),
|
||||
"path": item.value,
|
||||
}));
|
||||
}
|
||||
}
|
||||
var formDataBodyData = jj.Template(kTemplateFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"formdata_payload": formdataPayload.join("\n"),
|
||||
"boundary": boundary ?? '',
|
||||
},
|
||||
);
|
||||
} else if (requestModel.hasJsonData) {
|
||||
hasJsonBody = true;
|
||||
var templateBody = jj.Template(kTemplateJson);
|
||||
var pyDict = jsonToPyDict(requestModel.requestBody ?? "");
|
||||
result += templateBody.render({"body": pyDict});
|
||||
} else if (requestModel.hasTextData) {
|
||||
hasBody = true;
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestModel.requestBody});
|
||||
}
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || hasBody) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (requestModel.isFormDataRequest) {
|
||||
var formHeaderTemplate =
|
||||
jj.Template(kTemplateFormHeaderContentType);
|
||||
headers[HttpHeaders.contentTypeHeader] = formHeaderTemplate.render({
|
||||
"boundary": uuid,
|
||||
});
|
||||
}
|
||||
if (headers.isNotEmpty || hasBody) {
|
||||
hasHeaders = true;
|
||||
if (hasBody) {
|
||||
if (hasBody) {
|
||||
if (requestModel.hasFormData) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
kStringFormDataContentType;
|
||||
} else {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
}
|
||||
if (headers.isNotEmpty) {
|
||||
hasHeaders = true;
|
||||
var headersString = kEncoder.convert(headers);
|
||||
headersString = padMultilineString(headersString, kHeadersPadding);
|
||||
headersString = refactorHeaderString(headersString);
|
||||
var templateHeaders = jj.Template(kTemplateHeaders);
|
||||
result += templateHeaders.render({"headers": headersString});
|
||||
}
|
||||
}
|
||||
if (requestModel.isFormDataRequest) {
|
||||
var formDataBodyData = jj.Template(kStringFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"fields_list": json.encode(requestModel.formDataMapList),
|
||||
"boundary": uuid,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": method.name.toLowerCase(),
|
||||
"method": requestModel.method.name.toLowerCase(),
|
||||
});
|
||||
|
||||
if (hasQuery) {
|
||||
result += kStringRequestParams;
|
||||
}
|
||||
|
||||
if (hasBody || requestModel.isFormDataRequest) {
|
||||
if (hasBody) {
|
||||
result += kStringRequestBody;
|
||||
}
|
||||
|
||||
if (hasJsonBody || requestModel.isFormDataRequest) {
|
||||
if (hasJsonBody) {
|
||||
result += kStringRequestJson;
|
||||
}
|
||||
|
||||
if (hasHeaders || requestModel.isFormDataRequest) {
|
||||
if (hasHeaders) {
|
||||
result += kStringRequestHeaders;
|
||||
}
|
||||
|
||||
|
217
lib/codegen/rust/actix.dart
Normal file
217
lib/codegen/rust/actix.dart
Normal file
@ -0,0 +1,217 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getNewUuid, getValidRequestUri, stripUriParams;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
|
||||
class RustActixCodeGen {
|
||||
final String kTemplateStart = """
|
||||
{%- if isFormDataRequest -%}
|
||||
use std::io::Read;
|
||||
{% endif -%}
|
||||
#[actix_rt::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let url = "{{url}}";
|
||||
let client = awc::Client::default();
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateParams =
|
||||
"""\n .query(&{{ params }})\n .unwrap()""";
|
||||
|
||||
String kTemplateBody = """
|
||||
|
||||
let payload = r#"{{body}}"#;
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateJson = """
|
||||
|
||||
let payload = serde_json::json!({{body}});
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateHeaders =
|
||||
"""\n {% for key, val in headers -%}.insert_header(("{{key}}", "{{val}}")){% if not loop.last %}{{ '\n ' }}{% endif %}{%- endfor -%}""";
|
||||
|
||||
String kTemplateFormHeaderContentType = '''
|
||||
multipart/form-data; boundary={{boundary}}''';
|
||||
|
||||
String kTemplateRequest = """
|
||||
|
||||
let mut response = client\n .{{method}}(url)
|
||||
""";
|
||||
|
||||
final String kStringFormDataBody = r"""
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
{%- for formitem in fields_list %}
|
||||
FormDataItem {
|
||||
{%- for key, val in formitem %}
|
||||
{% if key == "type" %}field_type: "{{ val }}".to_string(),{% else %}{{ key }}: "{{ val }}".to_string(),{% endif %}
|
||||
{%- endfor %}
|
||||
},
|
||||
{%- endfor %}
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--{{boundary}}\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--{{boundary}}--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
""";
|
||||
|
||||
String kStringRequestBody = """\n .send_body(payload)""";
|
||||
|
||||
String kStringRequestJson = """\n .send_json(&payload)""";
|
||||
|
||||
String kStringRequestNormal = """\n .send()""";
|
||||
|
||||
final String kStringRequestEnd = """\n .await\n .unwrap();
|
||||
|
||||
let body_bytes = response.body().await.unwrap();
|
||||
let body = std::str::from_utf8(&body_bytes).unwrap();
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {:?}", body);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel, {
|
||||
String? boundary,
|
||||
}) {
|
||||
try {
|
||||
String uuid = getNewUuid();
|
||||
String result = "";
|
||||
bool hasBody = false;
|
||||
bool hasJsonBody = false;
|
||||
|
||||
String url = requestModel.url;
|
||||
|
||||
var rec = getValidRequestUri(
|
||||
url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
Uri? uri = rec.$1;
|
||||
if (uri != null) {
|
||||
var templateStartUrl = jj.Template(kTemplateStart);
|
||||
result += templateStartUrl.render({
|
||||
"url": stripUriParams(uri),
|
||||
'isFormDataRequest': requestModel.hasFormData,
|
||||
"method": requestModel.method.name.toLowerCase()
|
||||
});
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(method) && requestBody != null) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
if (requestModel.requestBodyContentType == ContentType.json) {
|
||||
hasJsonBody = true;
|
||||
var templateBody = jj.Template(kTemplateJson);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
} else if (!requestModel.hasFormData) {
|
||||
hasBody = true;
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requestModel.hasFormData) {
|
||||
var formDataBodyData = jj.Template(kStringFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"fields_list": requestModel.formDataMapList,
|
||||
"boundary": boundary ?? uuid,
|
||||
},
|
||||
);
|
||||
}
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": method.name.toLowerCase(),
|
||||
});
|
||||
|
||||
if (uri.hasQuery) {
|
||||
var params = uri.queryParameters;
|
||||
if (params.isNotEmpty) {
|
||||
var tupleStrings = params.entries
|
||||
.map((entry) => '("${entry.key}", "${entry.value}")')
|
||||
.toList();
|
||||
var paramsString = "[${tupleStrings.join(', ')}]";
|
||||
var templateParms = jj.Template(kTemplateParams);
|
||||
result += templateParms.render({"params": paramsString});
|
||||
}
|
||||
}
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || hasBody || requestModel.hasFormData) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (requestModel.hasFormData) {
|
||||
var formHeaderTemplate =
|
||||
jj.Template(kTemplateFormHeaderContentType);
|
||||
headers[HttpHeaders.contentTypeHeader] = formHeaderTemplate.render({
|
||||
"boundary": boundary ?? uuid,
|
||||
});
|
||||
} else if (hasBody) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
|
||||
if (headers.isNotEmpty) {
|
||||
var templateHeaders = jj.Template(kTemplateHeaders);
|
||||
result += templateHeaders.render({"headers": headers});
|
||||
}
|
||||
}
|
||||
|
||||
if (hasBody || requestModel.hasFormData) {
|
||||
result += kStringRequestBody;
|
||||
} else if (hasJsonBody) {
|
||||
result += kStringRequestJson;
|
||||
} else {
|
||||
result += kStringRequestNormal;
|
||||
}
|
||||
|
||||
result += kStringRequestEnd;
|
||||
}
|
||||
return result;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
180
lib/codegen/rust/reqwest.dart
Normal file
180
lib/codegen/rust/reqwest.dart
Normal file
@ -0,0 +1,180 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getValidRequestUri, stripUriParams;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
|
||||
class RustReqwestCodeGen {
|
||||
final String kTemplateStart =
|
||||
"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "{{url}}";
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateParams = """\n .query(&{{params}})""";
|
||||
|
||||
String kTemplateBody = """
|
||||
|
||||
let payload = r#"{{body}}"#;
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateJson = """
|
||||
|
||||
let payload = serde_json::json!({{body}});
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateHeaders =
|
||||
"""\n {% for key, val in headers -%}.header("{{key}}", "{{val}}"){% if not loop.last %}{{ '\n ' }}{% endif %}{%- endfor -%}""";
|
||||
|
||||
String kTemplateRequest = """
|
||||
|
||||
let response = client\n .{{method}}(url)
|
||||
""";
|
||||
|
||||
final String kStringFormDataBody = r'''
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
{%- for formitem in fields_list %}
|
||||
FormDataItem {
|
||||
{%- for key, val in formitem %}
|
||||
{% if key == "type" %}field_type: "{{ val }}".to_string(),{% else %}{{ key }}: "{{ val }}".to_string(),{% endif %}
|
||||
{%- endfor %}
|
||||
},
|
||||
{%- endfor %}
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
''';
|
||||
|
||||
String kStringRequestBody = """\n .body(payload)""";
|
||||
|
||||
String kStringRequestJson = """\n .json(&payload)""";
|
||||
|
||||
String kStringRequestForm = """\n .multipart(form)""";
|
||||
|
||||
final String kStringRequestEnd = """\n .send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel,
|
||||
) {
|
||||
try {
|
||||
String result = "";
|
||||
bool hasBody = false;
|
||||
bool hasJsonBody = false;
|
||||
|
||||
String url = requestModel.url;
|
||||
|
||||
var rec = getValidRequestUri(
|
||||
url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
Uri? uri = rec.$1;
|
||||
if (uri != null) {
|
||||
var templateStartUrl = jj.Template(kTemplateStart);
|
||||
result += templateStartUrl.render({
|
||||
"url": stripUriParams(uri),
|
||||
'isFormDataRequest': requestModel.hasFormData,
|
||||
'isJson': requestModel.requestBodyContentType == ContentType.json
|
||||
});
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(method) && requestBody != null) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
if (requestModel.requestBodyContentType == ContentType.json) {
|
||||
hasJsonBody = true;
|
||||
var templateBody = jj.Template(kTemplateJson);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
} else if (!requestModel.hasFormData) {
|
||||
hasBody = true;
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requestModel.hasFormData) {
|
||||
var formDataBodyData = jj.Template(kStringFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"fields_list": requestModel.formDataMapList,
|
||||
},
|
||||
);
|
||||
}
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": method.name.toLowerCase(),
|
||||
});
|
||||
|
||||
if (uri.hasQuery) {
|
||||
var params = uri.queryParameters;
|
||||
if (params.isNotEmpty) {
|
||||
var tupleStrings = params.entries
|
||||
.map((entry) => '("${entry.key}", "${entry.value}")')
|
||||
.toList();
|
||||
var paramsString = "[${tupleStrings.join(', ')}]";
|
||||
var templateParams = jj.Template(kTemplateParams);
|
||||
result += templateParams.render({"params": paramsString});
|
||||
}
|
||||
}
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || hasBody) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (hasBody) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
if (headers.isNotEmpty) {
|
||||
var templateHeaders = jj.Template(kTemplateHeaders);
|
||||
result += templateHeaders.render({"headers": headers});
|
||||
}
|
||||
}
|
||||
|
||||
if (hasBody && !requestModel.hasFormData) {
|
||||
result += kStringRequestBody;
|
||||
}
|
||||
|
||||
if (hasJsonBody) {
|
||||
result += kStringRequestJson;
|
||||
}
|
||||
|
||||
if (requestModel.hasFormData) {
|
||||
result += kStringRequestForm;
|
||||
}
|
||||
|
||||
result += kStringRequestEnd;
|
||||
}
|
||||
return result;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
211
lib/codegen/rust/ureq.dart
Normal file
211
lib/codegen/rust/ureq.dart
Normal file
@ -0,0 +1,211 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:jinja/jinja.dart' as jj;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getNewUuid, getValidRequestUri, stripUriParams;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
|
||||
class RustUreqCodeGen {
|
||||
final String kTemplateStart = """
|
||||
{%- if isFormDataRequest -%}
|
||||
use std::io::Read;
|
||||
{% endif -%}
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "{{url}}";
|
||||
""";
|
||||
|
||||
// String kTemplateParams = """\n .query_pairs({{ params }})""";
|
||||
String kTemplateParams =
|
||||
"""\n {% for key, val in params -%}.query("{{key}}", "{{val}}"){% if not loop.last %}{{ '\n ' }}{% endif %}{%- endfor -%}""";
|
||||
|
||||
String kTemplateBody = """
|
||||
|
||||
let payload = r#"{{body}}"#;
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateJson = """
|
||||
|
||||
let payload = ureq::json!({{body}});
|
||||
|
||||
""";
|
||||
|
||||
String kTemplateHeaders =
|
||||
"""\n {% for key, val in headers -%}.set("{{key}}", "{{val}}"){% if not loop.last %}{{ '\n ' }}{% endif %}{%- endfor -%}""";
|
||||
|
||||
String kTemplateFormHeaderContentType = '''
|
||||
multipart/form-data; boundary={{boundary}}''';
|
||||
|
||||
String kTemplateRequest = """
|
||||
|
||||
let response = ureq::{{method}}(url)
|
||||
""";
|
||||
|
||||
final String kStringFormDataBody = r"""
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
{%- for formitem in fields_list %}
|
||||
FormDataItem {
|
||||
{%- for key, val in formitem %}
|
||||
{% if key == "type" %}field_type: "{{ val }}".to_string(),{% else %}{{ key }}: "{{ val }}".to_string(),{% endif %}
|
||||
{%- endfor %}
|
||||
},
|
||||
{%- endfor %}
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--{{boundary}}\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--{{boundary}}--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
""";
|
||||
|
||||
String kStringRequestBody = """\n .send_string(payload)?;""";
|
||||
|
||||
String kStringRequestForm = """\n .send_bytes(&payload)?;""";
|
||||
|
||||
String kStringRequestJson = """\n .send_json(payload)?;""";
|
||||
|
||||
String kStringRequestNormal = """\n .call()?;""";
|
||||
|
||||
final String kStringRequestEnd = """\n
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
|
||||
String? getCode(
|
||||
RequestModel requestModel, {
|
||||
String? boundary,
|
||||
}) {
|
||||
try {
|
||||
String result = "";
|
||||
bool hasBody = false;
|
||||
bool hasJsonBody = false;
|
||||
String uuid = getNewUuid();
|
||||
|
||||
String url = requestModel.url;
|
||||
|
||||
var rec = getValidRequestUri(
|
||||
url,
|
||||
requestModel.enabledRequestParams,
|
||||
);
|
||||
Uri? uri = rec.$1;
|
||||
if (uri != null) {
|
||||
var templateStartUrl = jj.Template(kTemplateStart);
|
||||
result += templateStartUrl.render({
|
||||
"url": stripUriParams(uri),
|
||||
'isFormDataRequest': requestModel.hasFormData,
|
||||
"method": requestModel.method.name.toLowerCase()
|
||||
});
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(method) && requestBody != null) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
if (requestModel.requestBodyContentType == ContentType.json) {
|
||||
hasJsonBody = true;
|
||||
var templateBody = jj.Template(kTemplateJson);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
} else if (!requestModel.hasFormData) {
|
||||
hasBody = true;
|
||||
var templateBody = jj.Template(kTemplateBody);
|
||||
result += templateBody.render({"body": requestBody});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requestModel.hasFormData) {
|
||||
var formDataBodyData = jj.Template(kStringFormDataBody);
|
||||
result += formDataBodyData.render(
|
||||
{
|
||||
"fields_list": requestModel.formDataMapList,
|
||||
"boundary": boundary ?? uuid,
|
||||
},
|
||||
);
|
||||
}
|
||||
var templateRequest = jj.Template(kTemplateRequest);
|
||||
result += templateRequest.render({
|
||||
"method": method.name.toLowerCase(),
|
||||
});
|
||||
|
||||
if (uri.hasQuery) {
|
||||
var params = uri.queryParameters;
|
||||
if (params.isNotEmpty) {
|
||||
var templateParms = jj.Template(kTemplateParams);
|
||||
result += templateParms.render({"params": params});
|
||||
}
|
||||
}
|
||||
|
||||
var headersList = requestModel.enabledRequestHeaders;
|
||||
if (headersList != null || hasBody || requestModel.hasFormData) {
|
||||
var headers = requestModel.enabledHeadersMap;
|
||||
if (requestModel.hasFormData) {
|
||||
var formHeaderTemplate =
|
||||
jj.Template(kTemplateFormHeaderContentType);
|
||||
headers[HttpHeaders.contentTypeHeader] = formHeaderTemplate.render({
|
||||
"boundary": boundary ?? uuid,
|
||||
});
|
||||
} else if (hasBody) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
|
||||
if (headers.isNotEmpty) {
|
||||
var templateHeaders = jj.Template(kTemplateHeaders);
|
||||
result += templateHeaders.render({"headers": headers});
|
||||
}
|
||||
}
|
||||
if (requestModel.hasFormData) {
|
||||
result += kStringRequestForm;
|
||||
} else if (hasBody) {
|
||||
result += kStringRequestBody;
|
||||
} else if (hasJsonBody) {
|
||||
result += kStringRequestJson;
|
||||
} else {
|
||||
result += kStringRequestNormal;
|
||||
}
|
||||
|
||||
result += kStringRequestEnd;
|
||||
}
|
||||
return result;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@ import 'package:davi/davi.dart';
|
||||
const kDiscordUrl = "https://bit.ly/heyfoss";
|
||||
const kGitUrl = "https://github.com/foss42/apidash";
|
||||
const kIssueUrl = "$kGitUrl/issues";
|
||||
const kDefaultUri = "api.apidash.dev";
|
||||
|
||||
final kIsMacOS = !kIsWeb && Platform.isMacOS;
|
||||
final kIsWindows = !kIsWeb && Platform.isWindows;
|
||||
@ -265,13 +266,19 @@ enum CodegenLanguage {
|
||||
har("HAR", "json", "har"),
|
||||
dartHttp("Dart (http)", "dart", "dart"),
|
||||
dartDio("Dart (dio)", "dart", "dart"),
|
||||
goHttp("Go (http)", "go", "go"),
|
||||
jsAxios("JavaScript (axios)", "javascript", "js"),
|
||||
jsFetch("JavaScript (fetch)", "javascript", "js"),
|
||||
nodejsAxios("node.js (axios)", "javascript", "js"),
|
||||
nodejsFetch("node.js (fetch)", "javascript", "js"),
|
||||
kotlinOkHttp("Kotlin (okhttp3)", "java", "kt"),
|
||||
pythonHttpClient("Python (http.client)", "python", "py"),
|
||||
pythonRequests("Python (requests)", "python", "py");
|
||||
pythonRequests("Python (requests)", "python", "py"),
|
||||
rustActix("Rust (Actix Client)", "rust", "rs"),
|
||||
rustReqwest("Rust (reqwest)", "rust", "rs"),
|
||||
rustUreq("Rust (ureq)", "rust", "rs"),
|
||||
juliaHttp("Julia (HTTP)", "julia", "jl");
|
||||
|
||||
|
||||
const CodegenLanguage(this.label, this.codeHighlightLang, this.ext);
|
||||
final String label;
|
||||
@ -282,6 +289,8 @@ enum CodegenLanguage {
|
||||
const JsonEncoder kEncoder = JsonEncoder.withIndent(' ');
|
||||
const LineSplitter kSplitter = LineSplitter();
|
||||
|
||||
const kHeaderContentType = "Content-Type";
|
||||
|
||||
const kTypeApplication = 'application';
|
||||
// application
|
||||
const kSubTypeJson = 'json';
|
||||
@ -312,12 +321,15 @@ const kSubTypeSvg = 'svg+xml';
|
||||
const kTypeAudio = 'audio';
|
||||
const kTypeVideo = 'video';
|
||||
|
||||
const kTypeMultipart = "multipart";
|
||||
const kSubTypeFormData = "form-data";
|
||||
|
||||
const kSubTypeDefaultViewOptions = 'all';
|
||||
|
||||
enum ContentType {
|
||||
json("$kTypeApplication/$kSubTypeJson"),
|
||||
text("$kTypeText/$kSubTypePlain"),
|
||||
formdata("multipart/form-data");
|
||||
formdata("$kTypeMultipart/$kSubTypeFormData");
|
||||
|
||||
const ContentType(this.header);
|
||||
final String header;
|
||||
@ -499,8 +511,7 @@ const kRaiseIssue =
|
||||
const kCsvError =
|
||||
"There seems to be an issue rendering this CSV. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
|
||||
|
||||
const kHintTextUrlCard =
|
||||
"Enter API endpoint like api.apidash.dev/country/codes";
|
||||
const kHintTextUrlCard = "Enter API endpoint like https://$kDefaultUri/";
|
||||
const kLabelPlusNew = "+ New";
|
||||
const kLabelSend = "Send";
|
||||
const kLabelSending = "Sending..";
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import '../utils/utils.dart'
|
||||
show
|
||||
@ -62,9 +63,31 @@ class RequestModel {
|
||||
Map<String, String> get headersMap => rowsToMap(requestHeaders) ?? {};
|
||||
Map<String, String> get paramsMap => rowsToMap(requestParams) ?? {};
|
||||
|
||||
bool get hasFormDataContentType =>
|
||||
requestBodyContentType == ContentType.formdata;
|
||||
bool get hasJsonContentType => requestBodyContentType == ContentType.json;
|
||||
bool get hasTextContentType => requestBodyContentType == ContentType.text;
|
||||
int get contentLength => utf8.encode(requestBody ?? "").length;
|
||||
bool get hasData => hasJsonData || hasTextData || hasFormData;
|
||||
bool get hasJsonData =>
|
||||
kMethodsWithBody.contains(method) &&
|
||||
hasJsonContentType &&
|
||||
contentLength > 0;
|
||||
bool get hasTextData =>
|
||||
kMethodsWithBody.contains(method) &&
|
||||
hasTextContentType &&
|
||||
contentLength > 0;
|
||||
bool get hasFormData =>
|
||||
kMethodsWithBody.contains(method) &&
|
||||
hasFormDataContentType &&
|
||||
(requestFormDataList ?? <FormDataModel>[]).isNotEmpty;
|
||||
List<FormDataModel> get formDataList =>
|
||||
requestFormDataList ?? <FormDataModel>[];
|
||||
List<Map<String, dynamic>> get formDataMapList =>
|
||||
rowsToFormDataMapList(requestFormDataList) ?? [];
|
||||
bool get isFormDataRequest => requestBodyContentType == ContentType.formdata;
|
||||
bool get hasFileInFormData => formDataList
|
||||
.map((e) => e.type == FormDataType.file)
|
||||
.any((element) => element);
|
||||
|
||||
bool get hasContentTypeHeader => enabledHeadersMap.keys
|
||||
.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
|
||||
|
@ -3,7 +3,7 @@ import 'settings_providers.dart';
|
||||
import 'ui_providers.dart';
|
||||
import '../models/models.dart';
|
||||
import '../services/services.dart' show hiveHandler, HiveHandler, request;
|
||||
import '../utils/utils.dart' show uuid, collectionToHAR;
|
||||
import '../utils/utils.dart' show getNewUuid, collectionToHAR;
|
||||
import '../consts.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
@ -54,7 +54,7 @@ class CollectionStateNotifier
|
||||
}
|
||||
|
||||
void add() {
|
||||
final id = uuid.v1();
|
||||
final id = getNewUuid();
|
||||
final newRequestModel = RequestModel(
|
||||
id: id,
|
||||
);
|
||||
@ -97,7 +97,7 @@ class CollectionStateNotifier
|
||||
}
|
||||
|
||||
void duplicate(String id) {
|
||||
final newId = uuid.v1();
|
||||
final newId = getNewUuid();
|
||||
|
||||
var itemIds = ref.read(requestSequenceProvider);
|
||||
int idx = itemIds.indexOf(id);
|
||||
@ -173,8 +173,6 @@ class CollectionStateNotifier
|
||||
(http.Response?, Duration?, String?)? responseRec = await request(
|
||||
requestModel,
|
||||
defaultUriScheme: defaultUriScheme,
|
||||
isMultiPartRequest:
|
||||
requestModel.requestBodyContentType == ContentType.formdata,
|
||||
);
|
||||
late final RequestModel newRequestModel;
|
||||
if (responseRec.$1 == null) {
|
||||
@ -215,7 +213,7 @@ class CollectionStateNotifier
|
||||
bool loadData() {
|
||||
var ids = hiveHandler.getIds();
|
||||
if (ids == null || ids.length == 0) {
|
||||
String newId = uuid.v1();
|
||||
String newId = getNewUuid();
|
||||
state = {
|
||||
newId: RequestModel(
|
||||
id: newId,
|
||||
|
@ -67,7 +67,7 @@ class SettingsPage extends ConsumerWidget {
|
||||
hoverColor: kColorTransparent,
|
||||
title: const Text('Default URI Scheme'),
|
||||
subtitle: Text(
|
||||
'api.apidash.dev → ${settings.defaultUriScheme}://api.apidash.dev'),
|
||||
'$kDefaultUri → ${settings.defaultUriScheme}://$kDefaultUri'),
|
||||
trailing: DropdownMenu(
|
||||
onSelected: (value) {
|
||||
ref
|
||||
|
@ -9,7 +9,6 @@ import 'package:apidash/consts.dart';
|
||||
Future<(http.Response?, Duration?, String?)> request(
|
||||
RequestModel requestModel, {
|
||||
String defaultUriScheme = kDefaultUriScheme,
|
||||
bool isMultiPartRequest = false,
|
||||
}) async {
|
||||
(Uri?, String?) uriRec = getValidRequestUri(
|
||||
requestModel.url,
|
||||
@ -22,44 +21,48 @@ Future<(http.Response?, Duration?, String?)> request(
|
||||
http.Response response;
|
||||
String? body;
|
||||
try {
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(requestModel.method) &&
|
||||
requestBody != null) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
body = requestBody;
|
||||
headers[HttpHeaders.contentLengthHeader] = contentLength.toString();
|
||||
if (!requestModel.hasContentTypeHeader) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
}
|
||||
}
|
||||
Stopwatch stopwatch = Stopwatch()..start();
|
||||
if (isMultiPartRequest) {
|
||||
var multiPartRequest = http.MultipartRequest(
|
||||
requestModel.method.name.toUpperCase(),
|
||||
requestUrl,
|
||||
);
|
||||
multiPartRequest.headers.addAll(headers);
|
||||
for (FormDataModel formData
|
||||
in (requestModel.requestFormDataList ?? [])) {
|
||||
if (formData.type == FormDataType.text) {
|
||||
multiPartRequest.fields.addAll({formData.name: formData.value});
|
||||
} else {
|
||||
multiPartRequest.files.add(
|
||||
await http.MultipartFile.fromPath(
|
||||
formData.name,
|
||||
formData.value,
|
||||
),
|
||||
);
|
||||
var isMultiPartRequest =
|
||||
requestModel.requestBodyContentType == ContentType.formdata;
|
||||
if (kMethodsWithBody.contains(requestModel.method)) {
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (requestBody != null && !isMultiPartRequest) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
body = requestBody;
|
||||
headers[HttpHeaders.contentLengthHeader] = contentLength.toString();
|
||||
if (!requestModel.hasContentTypeHeader) {
|
||||
headers[HttpHeaders.contentTypeHeader] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
}
|
||||
}
|
||||
}
|
||||
http.StreamedResponse multiPartResponse = await multiPartRequest.send();
|
||||
stopwatch.stop();
|
||||
http.Response convertedMultiPartResponse =
|
||||
await convertStreamedResponse(multiPartResponse);
|
||||
return (convertedMultiPartResponse, stopwatch.elapsed, null);
|
||||
if (isMultiPartRequest) {
|
||||
var multiPartRequest = http.MultipartRequest(
|
||||
requestModel.method.name.toUpperCase(),
|
||||
requestUrl,
|
||||
);
|
||||
multiPartRequest.headers.addAll(headers);
|
||||
for (var formData
|
||||
in (requestModel.requestFormDataList ?? <FormDataModel>[])) {
|
||||
if (formData.type == FormDataType.text) {
|
||||
multiPartRequest.fields.addAll({formData.name: formData.value});
|
||||
} else {
|
||||
multiPartRequest.files.add(
|
||||
await http.MultipartFile.fromPath(
|
||||
formData.name,
|
||||
formData.value,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
http.StreamedResponse multiPartResponse =
|
||||
await multiPartRequest.send();
|
||||
stopwatch.stop();
|
||||
http.Response convertedMultiPartResponse =
|
||||
await convertStreamedResponse(multiPartResponse);
|
||||
return (convertedMultiPartResponse, stopwatch.elapsed, null);
|
||||
}
|
||||
}
|
||||
switch (requestModel.method) {
|
||||
case HTTPVerb.get:
|
||||
|
@ -48,8 +48,13 @@ String getShortPath(String path) {
|
||||
return path;
|
||||
}
|
||||
|
||||
String getFilenameFromPath(String path) {
|
||||
var f = p.split(path);
|
||||
return f.last;
|
||||
}
|
||||
|
||||
String getTempFileName() {
|
||||
return uuid.v1();
|
||||
return getNewUuid();
|
||||
}
|
||||
|
||||
Future<FilePickerResult?> pickFile() async {
|
||||
|
@ -1,6 +1,10 @@
|
||||
// http://www.softwareishard.com/blog/har-12-spec/
|
||||
// https://github.com/ahmadnassri/har-spec/blob/master/versions/1.2.md
|
||||
|
||||
import 'dart:convert';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart' show getValidRequestUri;
|
||||
import 'package:apidash/utils/utils.dart'
|
||||
show getValidRequestUri, getNewUuid, getFilenameFromPath;
|
||||
import 'package:apidash/models/models.dart' show RequestModel;
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
|
||||
@ -75,6 +79,7 @@ Map<String, dynamic> requestModelToHARJsonRequest(
|
||||
defaultUriScheme = kDefaultUriScheme,
|
||||
bool exportMode = false,
|
||||
bool useEnabled = false,
|
||||
String? boundary,
|
||||
}) {
|
||||
Map<String, dynamic> json = {};
|
||||
bool hasBody = false;
|
||||
@ -110,21 +115,37 @@ Map<String, dynamic> requestModelToHARJsonRequest(
|
||||
}
|
||||
}
|
||||
|
||||
var method = requestModel.method;
|
||||
var requestBody = requestModel.requestBody;
|
||||
if (kMethodsWithBody.contains(method) &&
|
||||
requestBody != null &&
|
||||
!requestModel.isFormDataRequest) {
|
||||
var contentLength = utf8.encode(requestBody).length;
|
||||
if (contentLength > 0) {
|
||||
hasBody = true;
|
||||
json["postData"] = {};
|
||||
json["postData"]["mimeType"] =
|
||||
requestModel.requestBodyContentType.header;
|
||||
json["postData"]["text"] = requestBody;
|
||||
if (exportMode) {
|
||||
json["postData"]["comment"] = "";
|
||||
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||
hasBody = true;
|
||||
json["postData"] = {};
|
||||
json["postData"]["mimeType"] = requestModel.requestBodyContentType.header;
|
||||
json["postData"]["text"] = requestModel.requestBody;
|
||||
if (exportMode) {
|
||||
json["postData"]["comment"] = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (requestModel.hasFormData) {
|
||||
boundary = boundary ?? getNewUuid();
|
||||
hasBody = true;
|
||||
json["postData"] = {};
|
||||
json["postData"]["mimeType"] =
|
||||
"${requestModel.requestBodyContentType.header}; boundary=$boundary";
|
||||
json["postData"]["params"] = [];
|
||||
for (var item in requestModel.formDataList) {
|
||||
Map<String, String> d = exportMode ? {"comment": ""} : {};
|
||||
if (item.type == FormDataType.text) {
|
||||
d["name"] = item.name;
|
||||
d["value"] = item.value;
|
||||
}
|
||||
if (item.type == FormDataType.file) {
|
||||
d["name"] = item.name;
|
||||
d["fileName"] = getFilenameFromPath(item.value);
|
||||
}
|
||||
json["postData"]["params"].add(d);
|
||||
}
|
||||
if (exportMode) {
|
||||
json["postData"]["comment"] = "";
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,8 +158,8 @@ Map<String, dynamic> requestModelToHARJsonRequest(
|
||||
if (headers.isNotEmpty || hasBody) {
|
||||
if (hasBody && !requestModel.hasContentTypeHeader) {
|
||||
var m = {
|
||||
"name": "Content-Type",
|
||||
"value": requestModel.requestBodyContentType.header
|
||||
"name": kHeaderContentType,
|
||||
"value": json["postData"]["mimeType"]
|
||||
};
|
||||
if (exportMode) {
|
||||
m["comment"] = "";
|
||||
@ -154,14 +175,12 @@ Map<String, dynamic> requestModelToHARJsonRequest(
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestModel.isFormDataRequest) {
|
||||
json["formData"] = requestModel.formDataMapList;
|
||||
}
|
||||
if (exportMode) {
|
||||
json["comment"] = "";
|
||||
json["cookies"] = [];
|
||||
json["headersSize"] = -1;
|
||||
json["bodySize"] = hasBody ? utf8.encode(requestBody!).length : 0;
|
||||
json["bodySize"] =
|
||||
hasBody ? utf8.encode(json["postData"]["text"] ?? "").length : 0;
|
||||
}
|
||||
}
|
||||
return json;
|
||||
|
@ -23,6 +23,9 @@ class IntroMessage extends StatelessWidget {
|
||||
return FutureBuilder(
|
||||
future: introData(),
|
||||
builder: (BuildContext context, AsyncSnapshot<void> snapshot) {
|
||||
if (snapshot.hasError) {
|
||||
return const ErrorMessage(message: "An error occured");
|
||||
}
|
||||
if (snapshot.connectionState == ConnectionState.done) {
|
||||
if (Theme.of(context).brightness == Brightness.dark) {
|
||||
text = text.replaceAll("{{mode}}", "dark");
|
||||
@ -37,9 +40,6 @@ class IntroMessage extends StatelessWidget {
|
||||
padding: kPh60,
|
||||
);
|
||||
}
|
||||
if (snapshot.hasError) {
|
||||
return const ErrorMessage(message: "An error occured");
|
||||
}
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
},
|
||||
);
|
||||
|
@ -1,239 +0,0 @@
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('Test various Code generators', () {
|
||||
test('cURL', () {
|
||||
const expectedCode = r"""curl --url 'https://api.apidash.dev'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('Dart Dio', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.get('https://api.apidash.dev');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('Dart HTTP', () {
|
||||
const expectedCode = r"""import 'package:http/http.dart' as http;
|
||||
|
||||
void main() async {
|
||||
var uri = Uri.parse('https://api.apidash.dev');
|
||||
|
||||
final response = await http.get(uri);
|
||||
|
||||
int statusCode = response.statusCode;
|
||||
if (statusCode >= 200 && statusCode < 300) {
|
||||
print('Status Code: $statusCode');
|
||||
print('Response Body: ${response.body}');
|
||||
} else {
|
||||
print('Error Status Code: $statusCode');
|
||||
print('Error Response Body: ${response.body}');
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HAR', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "GET",
|
||||
"url": "https://api.apidash.dev",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('JS Axios', () {
|
||||
const expectedCode = r"""let config = {
|
||||
url: 'https://api.apidash.dev',
|
||||
method: 'get'
|
||||
};
|
||||
|
||||
axios(config)
|
||||
.then(function (response) {
|
||||
// handle success
|
||||
console.log(response.status);
|
||||
console.log(response.data);
|
||||
})
|
||||
.catch(function (error) {
|
||||
// handle error
|
||||
console.log(error.response.status);
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('JS Fetch', () {
|
||||
const expectedCode = r"""let url = 'https://api.apidash.dev';
|
||||
|
||||
let options = {
|
||||
method: 'GET'
|
||||
};
|
||||
|
||||
let status;
|
||||
fetch(url, options)
|
||||
.then(res => {
|
||||
status = res.status;
|
||||
return res.json()
|
||||
})
|
||||
.then(body => {
|
||||
console.log(status);
|
||||
console.log(body);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(status);
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('Kotlin OkHttp', () {
|
||||
const expectedCode = r"""import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
|
||||
fun main() {
|
||||
val client = OkHttpClient()
|
||||
|
||||
val url = "https://api.apidash.dev"
|
||||
|
||||
val request = Request.Builder()
|
||||
.url(url)
|
||||
.get()
|
||||
.build()
|
||||
|
||||
val response = client.newCall(request).execute()
|
||||
|
||||
println(response.code)
|
||||
println(response.body?.string())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('NodeJs Axios', () {
|
||||
const expectedCode = r"""import axios from 'axios';
|
||||
|
||||
let config = {
|
||||
url: 'https://api.apidash.dev',
|
||||
method: 'get'
|
||||
};
|
||||
|
||||
axios(config)
|
||||
.then(function (response) {
|
||||
// handle success
|
||||
console.log(response.status);
|
||||
console.log(response.data);
|
||||
})
|
||||
.catch(function (error) {
|
||||
// handle error
|
||||
console.log(error.response.status);
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('Nodejs Fetch', () {
|
||||
const expectedCode = r"""import fetch from 'node-fetch';
|
||||
|
||||
let url = 'https://api.apidash.dev';
|
||||
|
||||
let options = {
|
||||
method: 'GET'
|
||||
};
|
||||
|
||||
let status;
|
||||
fetch(url, options)
|
||||
.then(res => {
|
||||
status = res.status;
|
||||
return res.json()
|
||||
})
|
||||
.then(body => {
|
||||
console.log(status);
|
||||
console.log(body);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(status);
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('Python http.client', () {
|
||||
const expectedCode = r"""import http.client
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("GET", "")
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('Python requests', () {
|
||||
const expectedCode = r"""import requests
|
||||
|
||||
url = 'https://api.apidash.dev'
|
||||
|
||||
response = requests.get(url)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
@ -1,64 +1,74 @@
|
||||
import 'package:apidash/codegen/others/curl.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final curlCodeGen = cURLCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
const expectedCode = r"""curl --url 'https://api.apidash.dev'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.apidash.dev/country/data?code=US'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.apidash.dev/country/data?code=IND'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.github.com/repos/foss42/apidash' \
|
||||
--header 'User-Agent: Test Agent'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.github.com/repos/foss42/apidash?raw=true' \
|
||||
--header 'User-Agent: Test Agent'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
const expectedCode = r"""curl --url 'https://api.apidash.dev'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.github.com/repos/foss42/apidash?raw=true' \
|
||||
--header 'User-Agent: Test Agent'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.apidash.dev/humanize/social?num=8700000&add_space=true'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -66,7 +76,8 @@ void main() {
|
||||
r"""curl --url 'https://api.apidash.dev/humanize/social' \
|
||||
--header 'User-Agent: Test Agent'""";
|
||||
expect(
|
||||
curlCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.curl,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -77,103 +88,181 @@ void main() {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.apidash.dev/humanize/social?num=8700000&digits=3' \
|
||||
--header 'User-Agent: Test Agent'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
const expectedCode =
|
||||
r"""curl --url 'https://api.apidash.dev/humanize/social'""";
|
||||
expect(curlCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('HEAD Request', () {
|
||||
test('HEAD 1', () {
|
||||
const expectedCode = r"""curl --head --url 'https://api.apidash.dev'""";
|
||||
expect(curlCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
const expectedCode = r"""curl --head --url 'http://api.apidash.dev'""";
|
||||
expect(curlCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('POST Request', () {
|
||||
test('POST 1', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/case/lower' \
|
||||
--url 'https://api.apidash.dev/case/lower' \
|
||||
--header 'Content-Type: text/plain' \
|
||||
--data '{
|
||||
"text": "I LOVE Flutter"
|
||||
}'""";
|
||||
expect(curlCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/case/lower' \
|
||||
--url 'https://api.apidash.dev/case/lower' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
}'""";
|
||||
expect(curlCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/case/lower' \
|
||||
--url 'https://api.apidash.dev/case/lower' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'User-Agent: Test Agent' \
|
||||
--data '{
|
||||
"text": "I LOVE Flutter"
|
||||
}'""";
|
||||
expect(curlCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 4', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/io/form' \
|
||||
--form 'text=API' \
|
||||
--form 'sep=|' \
|
||||
--form 'times=3'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 5', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/io/form' \
|
||||
--header 'User-Agent: Test Agent' \
|
||||
--form 'text=API' \
|
||||
--form 'sep=|' \
|
||||
--form 'times=3'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 6', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/io/img' \
|
||||
--form 'token=xyz' \
|
||||
--form 'imfile=@/Documents/up/1.png'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 7', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/io/img' \
|
||||
--form 'token=xyz' \
|
||||
--form 'imfile=@/Documents/up/1.png'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 8', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/io/form?size=2&len=3' \
|
||||
--form 'text=API' \
|
||||
--form 'sep=|' \
|
||||
--form 'times=3'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 9', () {
|
||||
const expectedCode = r"""curl --request POST \
|
||||
--url 'https://api.apidash.dev/io/img?size=2&len=3' \
|
||||
--header 'User-Agent: Test Agent' \
|
||||
--header 'Keep-Alive: true' \
|
||||
--form 'token=xyz' \
|
||||
--form 'imfile=@/Documents/up/1.png'""";
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPost9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PUT Request', () {
|
||||
test('PUT 1', () {
|
||||
const expectedCode = r"""curl --request PUT \
|
||||
--url 'https://reqres.in/api/users/2' \
|
||||
--url 'https://reqres.in/api/users/2' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{
|
||||
"name": "morpheus",
|
||||
"job": "zion resident"
|
||||
}'""";
|
||||
expect(curlCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PATCH Request', () {
|
||||
test('PATCH 1', () {
|
||||
const expectedCode = r"""curl --request PATCH \
|
||||
--url 'https://reqres.in/api/users/2' \
|
||||
--url 'https://reqres.in/api/users/2' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
}'""";
|
||||
expect(curlCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.curl, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode = r"""curl --request DELETE \
|
||||
--url 'https://reqres.in/api/users/2'""";
|
||||
expect(curlCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
--url 'https://reqres.in/api/users/2'""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.curl, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
const expectedCode = r"""curl --request DELETE \
|
||||
--url 'https://reqres.in/api/users/2' \
|
||||
--url 'https://reqres.in/api/users/2' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
}'""";
|
||||
expect(curlCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.curl, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
import 'package:apidash/codegen/dart/dio.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final dartDioCodeGen = DartDioCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -12,10 +12,10 @@ void main() {
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.get('https://api.apidash.dev');
|
||||
final response = await dio.Dio().get('https://api.apidash.dev');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -25,7 +25,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -34,13 +36,13 @@ void main() async {
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {'code': 'US'};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.apidash.dev/country/data',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -50,7 +52,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -59,13 +63,13 @@ void main() async {
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {'code': 'IND'};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.apidash.dev/country/data?code=US',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -75,7 +79,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -90,13 +96,13 @@ void main() async {
|
||||
'add_space': 'true',
|
||||
'trailing_zeros': 'true',
|
||||
};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.apidash.dev/humanize/social',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -106,7 +112,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -115,13 +123,13 @@ void main() async {
|
||||
void main() async {
|
||||
try {
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.github.com/repos/foss42/apidash',
|
||||
options: Options(headers: headers),
|
||||
options: dio.Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -131,7 +139,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -141,14 +151,14 @@ void main() async {
|
||||
try {
|
||||
final queryParams = {'raw': 'true'};
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.github.com/repos/foss42/apidash',
|
||||
queryParameters: queryParams,
|
||||
options: Options(headers: headers),
|
||||
options: dio.Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -158,7 +168,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -166,10 +178,10 @@ void main() async {
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.get('https://api.apidash.dev');
|
||||
final response = await dio.Dio().get('https://api.apidash.dev');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -179,7 +191,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -189,14 +203,14 @@ void main() async {
|
||||
try {
|
||||
final queryParams = {'raw': 'true'};
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.github.com/repos/foss42/apidash',
|
||||
queryParameters: queryParams,
|
||||
options: Options(headers: headers),
|
||||
options: dio.Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -206,7 +220,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -218,38 +234,13 @@ void main() async {
|
||||
'num': '8700000',
|
||||
'add_space': 'true',
|
||||
};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.apidash.dev/humanize/social',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.apidash.dev/humanize/social',
|
||||
options: Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -260,7 +251,35 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.apidash.dev/humanize/social',
|
||||
options: dio.Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartDio,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -277,14 +296,14 @@ void main() async {
|
||||
'digits': '3',
|
||||
};
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
final response = await dio.Dio().get(
|
||||
'https://api.apidash.dev/humanize/social',
|
||||
queryParameters: queryParams,
|
||||
options: Options(headers: headers),
|
||||
options: dio.Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -294,7 +313,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -302,10 +323,10 @@ void main() async {
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.get('https://api.apidash.dev/humanize/social');
|
||||
final response = await dio.Dio().get('https://api.apidash.dev/humanize/social');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -315,7 +336,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -325,10 +348,10 @@ void main() async {
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.head('https://api.apidash.dev');
|
||||
final response = await dio.Dio().head('https://api.apidash.dev');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -338,7 +361,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -346,10 +371,10 @@ void main() async {
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.head('http://api.apidash.dev');
|
||||
final response = await dio.Dio().head('http://api.apidash.dev');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -359,7 +384,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -372,13 +399,13 @@ void main() async {
|
||||
final data = r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
}''';
|
||||
final response = await dio.Dio.post(
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/case/lower',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -388,7 +415,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -398,15 +427,20 @@ import 'dart:convert' as convert;
|
||||
void main() async {
|
||||
try {
|
||||
final data = convert.json.decode(r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
}''');
|
||||
final response = await dio.Dio.post(
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/case/lower',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -416,7 +450,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -429,14 +465,14 @@ void main() async {
|
||||
final data = convert.json.decode(r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
}''');
|
||||
final response = await dio.Dio.post(
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/case/lower',
|
||||
options: Options(headers: headers),
|
||||
options: dio.Options(headers: headers),
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -446,10 +482,330 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 4', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = dio.FormData();
|
||||
final List<Map<String, String>> formDataList = [
|
||||
{"name": "text", "value": "API", "type": "text"},
|
||||
{"name": "sep", "value": "|", "type": "text"},
|
||||
{"name": "times", "value": "3", "type": "text"}
|
||||
];
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
if (formField['value'] != null) {
|
||||
data.fields
|
||||
.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/io/form',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 5', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final data = dio.FormData();
|
||||
final List<Map<String, String>> formDataList = [
|
||||
{"name": "text", "value": "API", "type": "text"},
|
||||
{"name": "sep", "value": "|", "type": "text"},
|
||||
{"name": "times", "value": "3", "type": "text"}
|
||||
];
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
if (formField['value'] != null) {
|
||||
data.fields
|
||||
.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/io/form',
|
||||
options: dio.Options(headers: headers),
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 6', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = dio.FormData();
|
||||
final List<Map<String, String>> formDataList = [
|
||||
{"name": "token", "value": "xyz", "type": "text"},
|
||||
{
|
||||
"name": "imfile",
|
||||
"value": "/Documents/up/1.png",
|
||||
"type": "file"
|
||||
}
|
||||
];
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
if (formField['value'] != null) {
|
||||
data.fields
|
||||
.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/io/img',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 7', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = dio.FormData();
|
||||
final List<Map<String, String>> formDataList = [
|
||||
{"name": "token", "value": "xyz", "type": "text"},
|
||||
{
|
||||
"name": "imfile",
|
||||
"value": "/Documents/up/1.png",
|
||||
"type": "file"
|
||||
}
|
||||
];
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
if (formField['value'] != null) {
|
||||
data.fields
|
||||
.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/io/img',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 8', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {
|
||||
'size': '2',
|
||||
'len': '3',
|
||||
};
|
||||
final data = dio.FormData();
|
||||
final List<Map<String, String>> formDataList = [
|
||||
{"name": "text", "value": "API", "type": "text"},
|
||||
{"name": "sep", "value": "|", "type": "text"},
|
||||
{"name": "times", "value": "3", "type": "text"}
|
||||
];
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
if (formField['value'] != null) {
|
||||
data.fields
|
||||
.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/io/form',
|
||||
queryParameters: queryParams,
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 9', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {
|
||||
'size': '2',
|
||||
'len': '3',
|
||||
};
|
||||
final headers = {
|
||||
'User-Agent': 'Test Agent',
|
||||
'Keep-Alive': 'true',
|
||||
};
|
||||
final data = dio.FormData();
|
||||
final List<Map<String, String>> formDataList = [
|
||||
{"name": "token", "value": "xyz", "type": "text"},
|
||||
{
|
||||
"name": "imfile",
|
||||
"value": "/Documents/up/1.png",
|
||||
"type": "file"
|
||||
}
|
||||
];
|
||||
for (var formField in formDataList) {
|
||||
if (formField['type'] == 'file') {
|
||||
if (formField['value'] != null) {
|
||||
data.files.add(MapEntry(
|
||||
formField['name']!,
|
||||
await dio.MultipartFile.fromFile(formField['value']!,
|
||||
filename: formField['value']!),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
if (formField['value'] != null) {
|
||||
data.fields
|
||||
.add(MapEntry(formField['name']!, formField['value']!));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final response = await dio.Dio().post(
|
||||
'https://api.apidash.dev/io/img',
|
||||
queryParameters: queryParams,
|
||||
options: dio.Options(headers: headers),
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPost9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PUT Request', () {
|
||||
test('PUT 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
@ -461,13 +817,13 @@ void main() async {
|
||||
"name": "morpheus",
|
||||
"job": "zion resident"
|
||||
}''');
|
||||
final response = await dio.Dio.put(
|
||||
final response = await dio.Dio().put(
|
||||
'https://reqres.in/api/users/2',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -477,7 +833,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -492,36 +850,13 @@ void main() async {
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
}''');
|
||||
final response = await dio.Dio.patch(
|
||||
final response = await dio.Dio().patch(
|
||||
'https://reqres.in/api/users/2',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.delete('https://reqres.in/api/users/2');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -532,7 +867,34 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
codeGen.getCode(CodegenLanguage.dartDio, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio().delete('https://reqres.in/api/users/2');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartDio, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -545,13 +907,13 @@ void main() async {
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
}''');
|
||||
final response = await dio.Dio.delete(
|
||||
final response = await dio.Dio().delete(
|
||||
'https://reqres.in/api/users/2',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
} on dio.DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
@ -562,7 +924,9 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartDio, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
import 'package:apidash/codegen/dart/http.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final dartHttpCodeGen = DartHttpCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -25,7 +25,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -50,7 +52,9 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -76,7 +80,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -106,7 +112,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -132,7 +140,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -161,7 +171,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -182,7 +194,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -211,7 +225,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -238,7 +254,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -265,7 +283,8 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartHttpCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartHttp,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -301,7 +320,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -322,7 +343,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -345,7 +368,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -366,7 +391,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -399,7 +426,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -409,7 +438,12 @@ void main() async {
|
||||
var uri = Uri.parse('https://api.apidash.dev/case/lower');
|
||||
|
||||
String body = r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
}''';
|
||||
|
||||
var headers = {'content-type': 'application/json'};
|
||||
@ -430,7 +464,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -464,7 +500,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -498,7 +536,9 @@ void main() async {
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartHttpCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.dartHttp, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -533,7 +573,9 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartHttpCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartHttp, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -557,7 +599,9 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartHttpCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartHttp, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -590,7 +634,9 @@ void main() async {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartHttpCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.dartHttp, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
1047
test/codegen/go_http_codegen_test.dart
Normal file
1047
test/codegen/go_http_codegen_test.dart
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/others/har.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final harCodeGen = HARCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -14,7 +15,8 @@ void main() {
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -30,7 +32,8 @@ void main() {
|
||||
],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -46,7 +49,8 @@ void main() {
|
||||
],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -78,7 +82,8 @@ void main() {
|
||||
],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -94,7 +99,8 @@ void main() {
|
||||
}
|
||||
]
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -115,7 +121,8 @@ void main() {
|
||||
}
|
||||
]
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -126,7 +133,8 @@ void main() {
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -147,7 +155,8 @@ void main() {
|
||||
}
|
||||
]
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -167,7 +176,8 @@ void main() {
|
||||
],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -184,7 +194,8 @@ void main() {
|
||||
]
|
||||
}""";
|
||||
expect(
|
||||
harCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.har,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -213,7 +224,8 @@ void main() {
|
||||
}
|
||||
]
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -224,7 +236,8 @@ void main() {
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -237,7 +250,8 @@ void main() {
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -248,7 +262,8 @@ void main() {
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -270,7 +285,8 @@ void main() {
|
||||
"text": "{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
}
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -287,10 +303,11 @@ void main() {
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "application/json",
|
||||
"text": "{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
"text": "{\n\"text\": \"I LOVE Flutter\",\n\"flag\": null,\n\"male\": true,\n\"female\": false,\n\"no\": 1.2,\n\"arr\": [\"null\", \"true\", \"false\", null]\n}"
|
||||
}
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -314,7 +331,242 @@ void main() {
|
||||
"text": "{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
}
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 4', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "POST",
|
||||
"url": "https://api.apidash.dev/io/form",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [],
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "multipart/form-data; boundary=d43e2510-a25e-1f08-b0a5-591aeb704467"
|
||||
}
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "multipart/form-data; boundary=d43e2510-a25e-1f08-b0a5-591aeb704467",
|
||||
"params": [
|
||||
{
|
||||
"name": "text",
|
||||
"value": "API"
|
||||
},
|
||||
{
|
||||
"name": "sep",
|
||||
"value": "|"
|
||||
},
|
||||
{
|
||||
"name": "times",
|
||||
"value": "3"
|
||||
}
|
||||
]
|
||||
}
|
||||
}""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.har, requestModelPost4, "https",
|
||||
boundary: "d43e2510-a25e-1f08-b0a5-591aeb704467"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 5', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "POST",
|
||||
"url": "https://api.apidash.dev/io/form",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [],
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "multipart/form-data; boundary=ce268b20-a3e6-1f08-b0a5-591aeb704467"
|
||||
},
|
||||
{
|
||||
"name": "User-Agent",
|
||||
"value": "Test Agent"
|
||||
}
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "multipart/form-data; boundary=ce268b20-a3e6-1f08-b0a5-591aeb704467",
|
||||
"params": [
|
||||
{
|
||||
"name": "text",
|
||||
"value": "API"
|
||||
},
|
||||
{
|
||||
"name": "sep",
|
||||
"value": "|"
|
||||
},
|
||||
{
|
||||
"name": "times",
|
||||
"value": "3"
|
||||
}
|
||||
]
|
||||
}
|
||||
}""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.har, requestModelPost5, "https",
|
||||
boundary: "ce268b20-a3e6-1f08-b0a5-591aeb704467"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 6', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "POST",
|
||||
"url": "https://api.apidash.dev/io/img",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [],
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "multipart/form-data; boundary=c90d21a0-a44d-1f08-b0a5-591aeb704467"
|
||||
}
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "multipart/form-data; boundary=c90d21a0-a44d-1f08-b0a5-591aeb704467",
|
||||
"params": [
|
||||
{
|
||||
"name": "token",
|
||||
"value": "xyz"
|
||||
},
|
||||
{
|
||||
"name": "imfile",
|
||||
"fileName": "1.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
}""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.har, requestModelPost6, "https",
|
||||
boundary: "c90d21a0-a44d-1f08-b0a5-591aeb704467"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 7', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "POST",
|
||||
"url": "https://api.apidash.dev/io/img",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [],
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "multipart/form-data; boundary=4ac86770-a4dc-1f08-b0a5-591aeb704467"
|
||||
}
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "multipart/form-data; boundary=4ac86770-a4dc-1f08-b0a5-591aeb704467",
|
||||
"params": [
|
||||
{
|
||||
"name": "token",
|
||||
"value": "xyz"
|
||||
},
|
||||
{
|
||||
"name": "imfile",
|
||||
"fileName": "1.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
}""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.har, requestModelPost7, "https",
|
||||
boundary: "4ac86770-a4dc-1f08-b0a5-591aeb704467"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 8', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "POST",
|
||||
"url": "https://api.apidash.dev/io/form?size=2&len=3",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [
|
||||
{
|
||||
"name": "size",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"name": "len",
|
||||
"value": "3"
|
||||
}
|
||||
],
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "multipart/form-data; boundary=78403a20-a54a-1f08-b0a5-591aeb704467"
|
||||
}
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "multipart/form-data; boundary=78403a20-a54a-1f08-b0a5-591aeb704467",
|
||||
"params": [
|
||||
{
|
||||
"name": "text",
|
||||
"value": "API"
|
||||
},
|
||||
{
|
||||
"name": "sep",
|
||||
"value": "|"
|
||||
},
|
||||
{
|
||||
"name": "times",
|
||||
"value": "3"
|
||||
}
|
||||
]
|
||||
}
|
||||
}""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.har, requestModelPost8, "https",
|
||||
boundary: "78403a20-a54a-1f08-b0a5-591aeb704467"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 9', () {
|
||||
const expectedCode = r"""{
|
||||
"method": "POST",
|
||||
"url": "https://api.apidash.dev/io/img?size=2&len=3",
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"queryString": [
|
||||
{
|
||||
"name": "size",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"name": "len",
|
||||
"value": "3"
|
||||
}
|
||||
],
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "multipart/form-data; boundary=2d9cd390-a593-1f08-b0a5-591aeb704467"
|
||||
},
|
||||
{
|
||||
"name": "User-Agent",
|
||||
"value": "Test Agent"
|
||||
},
|
||||
{
|
||||
"name": "Keep-Alive",
|
||||
"value": "true"
|
||||
}
|
||||
],
|
||||
"postData": {
|
||||
"mimeType": "multipart/form-data; boundary=2d9cd390-a593-1f08-b0a5-591aeb704467",
|
||||
"params": [
|
||||
{
|
||||
"name": "token",
|
||||
"value": "xyz"
|
||||
},
|
||||
{
|
||||
"name": "imfile",
|
||||
"fileName": "1.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
}""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.har, requestModelPost9, "https",
|
||||
boundary: "2d9cd390-a593-1f08-b0a5-591aeb704467"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -336,7 +588,8 @@ void main() {
|
||||
"text": "{\n\"name\": \"morpheus\",\n\"job\": \"zion resident\"\n}"
|
||||
}
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -358,7 +611,8 @@ void main() {
|
||||
"text": "{\n\"name\": \"marfeus\",\n\"job\": \"accountant\"\n}"
|
||||
}
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -371,7 +625,8 @@ void main() {
|
||||
"queryString": [],
|
||||
"headers": []
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -391,7 +646,8 @@ void main() {
|
||||
"text": "{\n\"name\": \"marfeus\",\n\"job\": \"accountant\"\n}"
|
||||
}
|
||||
}""";
|
||||
expect(harCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
expect(codeGen.getCode(CodegenLanguage.har, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/js/axios.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final axiosCodeGen = AxiosCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -24,7 +25,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -48,7 +51,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -72,7 +77,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -100,7 +107,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -124,7 +133,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -151,7 +162,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -172,7 +185,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -199,7 +214,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -224,7 +241,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -249,7 +268,8 @@ axios(config)
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
axiosCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.jsAxios,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -281,7 +301,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -302,7 +324,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -325,7 +349,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -346,7 +372,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -373,7 +401,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -383,7 +413,7 @@ axios(config)
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
data: "{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
data: "{\n\"text\": \"I LOVE Flutter\",\n\"flag\": null,\n\"male\": true,\n\"female\": false,\n\"no\": 1.2,\n\"arr\": [\"null\", \"true\", \"false\", null]\n}"
|
||||
};
|
||||
|
||||
axios(config)
|
||||
@ -398,7 +428,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -424,7 +456,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -451,7 +485,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -478,7 +514,9 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsAxios, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -501,7 +539,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.jsAxios, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -526,7 +567,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.jsAxios, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/js/fetch.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final fetchCodeGen = FetchCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -28,7 +29,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -54,7 +57,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -80,7 +85,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -106,7 +113,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -135,7 +144,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -164,7 +175,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -189,7 +202,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -218,7 +233,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -244,7 +261,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -274,7 +293,8 @@ fetch(url, options)
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
fetchCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.jsFetch,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -307,7 +327,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -333,7 +355,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -360,7 +384,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -385,7 +411,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -417,7 +445,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -429,7 +459,7 @@ let options = {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body:
|
||||
"{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
"{\n\"text\": \"I LOVE Flutter\",\n\"flag\": null,\n\"male\": true,\n\"female\": false,\n\"no\": 1.2,\n\"arr\": [\"null\", \"true\", \"false\", null]\n}"
|
||||
};
|
||||
|
||||
let status;
|
||||
@ -447,7 +477,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -478,7 +510,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -510,7 +544,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -542,7 +578,9 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.jsFetch, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -569,7 +607,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.jsFetch, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -599,7 +640,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.jsFetch, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
453
test/codegen/julia_http_codegen_test.dart
Normal file
453
test/codegen/julia_http_codegen_test.dart
Normal file
@ -0,0 +1,453 @@
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev"
|
||||
|
||||
|
||||
response = HTTP.get(url)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('GET 2', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/country/data"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"code"=> "US"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('GET 3', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/country/data"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"code"=> "IND"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('GET 4', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/humanize/social"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"num"=> "8700000",
|
||||
"digits"=> "3",
|
||||
"system"=> "SS",
|
||||
"add_space"=> "true",
|
||||
"trailing_zeros"=> "true"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.github.com/repos/foss42/apidash"
|
||||
|
||||
|
||||
headers = Dict(
|
||||
"User-Agent"=> "Test Agent"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.github.com/repos/foss42/apidash"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"raw"=> "true"
|
||||
)
|
||||
|
||||
headers = Dict(
|
||||
"User-Agent"=> "Test Agent"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params, headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev"
|
||||
|
||||
|
||||
response = HTTP.get(url)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.github.com/repos/foss42/apidash"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"raw"=> "true"
|
||||
)
|
||||
|
||||
headers = Dict(
|
||||
"User-Agent"=> "Test Agent"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params, headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/humanize/social"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"num"=> "8700000",
|
||||
"add_space"=> "true"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/humanize/social"
|
||||
|
||||
|
||||
headers = Dict(
|
||||
"User-Agent"=> "Test Agent"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelGet10, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 11', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/humanize/social"
|
||||
|
||||
|
||||
params = Dict(
|
||||
"num"=> "8700000",
|
||||
"digits"=> "3"
|
||||
)
|
||||
|
||||
headers = Dict(
|
||||
"User-Agent"=> "Test Agent"
|
||||
)
|
||||
|
||||
response = HTTP.get(url, query=params, headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/humanize/social"
|
||||
|
||||
|
||||
response = HTTP.get(url)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('HEAD Request', () {
|
||||
test('HEAD 1', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev"
|
||||
|
||||
|
||||
response = HTTP.head(url)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev"
|
||||
|
||||
|
||||
response = HTTP.head(url)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelHead2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('POST Request', () {
|
||||
test('POST 1', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/case/lower"
|
||||
|
||||
|
||||
payload = Dict(
|
||||
"text"=> "I LOVE Flutter"
|
||||
)
|
||||
|
||||
headers = Dict(
|
||||
"content-type"=> "text/plain"
|
||||
)
|
||||
|
||||
response = HTTP.post(url, payload=payload, headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/case/lower"
|
||||
|
||||
|
||||
payload = Dict(
|
||||
"text"=> "I LOVE Flutter",
|
||||
"flag"=> null,
|
||||
"male"=> true,
|
||||
"female"=> false,
|
||||
"no"=> 1.2,
|
||||
"arr"=> ["null", "true", "false", null]
|
||||
)
|
||||
|
||||
response = HTTP.post(url, JSON.json(payload))
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 3', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://api.apidash.dev/case/lower"
|
||||
|
||||
|
||||
payload = Dict(
|
||||
"text"=> "I LOVE Flutter"
|
||||
)
|
||||
|
||||
headers = Dict(
|
||||
"User-Agent"=> "Test Agent"
|
||||
)
|
||||
|
||||
response = HTTP.post(url, JSON.json(payload), headers=headers)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
group('PUT Request', () {
|
||||
test('PUT 1', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://reqres.in/api/users/2"
|
||||
|
||||
|
||||
payload = Dict(
|
||||
"name"=> "morpheus",
|
||||
"job"=> "zion resident"
|
||||
)
|
||||
|
||||
response = HTTP.put(url, JSON.json(payload))
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.juliaHttp, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
group('PATCH Request', () {
|
||||
test('PATCH 1', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://reqres.in/api/users/2"
|
||||
|
||||
|
||||
payload = Dict(
|
||||
"name"=> "marfeus",
|
||||
"job"=> "accountant"
|
||||
)
|
||||
|
||||
response = HTTP.patch(url, JSON.json(payload))
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://reqres.in/api/users/2"
|
||||
|
||||
|
||||
response = HTTP.delete(url)
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('DELETE 2', () {
|
||||
const expectedCode = r"""using HTTP,JSON
|
||||
|
||||
url = "https://reqres.in/api/users/2"
|
||||
|
||||
|
||||
payload = Dict(
|
||||
"name"=> "marfeus",
|
||||
"job"=> "accountant"
|
||||
)
|
||||
|
||||
response = HTTP.delete(url, JSON.json(payload))
|
||||
|
||||
println("Status Code:", response.status)
|
||||
println("Response Body:", String(response.body))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.juliaHttp, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/kotlin/okhttp.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final kotlinOkHttpCodeGen = KotlinOkHttpCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -27,7 +28,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -54,7 +57,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -81,7 +86,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -112,7 +119,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -137,7 +146,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -165,7 +176,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -189,7 +202,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -217,7 +232,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -245,7 +262,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -270,7 +289,8 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -302,7 +322,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
""";
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelGet11, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -326,7 +348,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
""";
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelGet12, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -352,7 +376,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
""";
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelHead1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -377,7 +403,9 @@ fun main() {
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -410,7 +438,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
''';
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelPost1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -428,7 +458,12 @@ fun main() {
|
||||
val mediaType = "application/json".toMediaType()
|
||||
|
||||
val body = """{
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
}""".toRequestBody(mediaType)
|
||||
|
||||
val request = Request.Builder()
|
||||
@ -442,7 +477,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
''';
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelPost2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -475,7 +512,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
''';
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelPost3, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -504,7 +543,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
''';
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelPost5, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelPost5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -540,7 +581,9 @@ fun main() {
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
kotlinOkHttpCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -574,7 +617,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
''';
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelPatch1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -600,7 +645,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
""";
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelDelete1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -633,7 +680,9 @@ fun main() {
|
||||
println(response.body?.string())
|
||||
}
|
||||
''';
|
||||
expect(kotlinOkHttpCodeGen.getCode(requestModelDelete2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.kotlinOkHttp, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/js/axios.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final axiosCodeGen = AxiosCodeGen(isNodeJs: true);
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -26,7 +27,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -52,7 +56,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -78,7 +85,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -108,7 +118,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -134,7 +147,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -163,7 +179,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -186,7 +205,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -215,7 +237,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -242,7 +267,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -269,7 +297,8 @@ axios(config)
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
axiosCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -303,7 +332,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -326,7 +358,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -351,7 +386,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -374,7 +412,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -403,7 +444,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -415,7 +459,7 @@ let config = {
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
data: "{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
data: "{\n\"text\": \"I LOVE Flutter\",\n\"flag\": null,\n\"male\": true,\n\"female\": false,\n\"no\": 1.2,\n\"arr\": [\"null\", \"true\", \"false\", null]\n}"
|
||||
};
|
||||
|
||||
axios(config)
|
||||
@ -430,7 +474,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -458,7 +505,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -487,7 +537,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -516,7 +569,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -541,7 +597,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -568,7 +627,10 @@ axios(config)
|
||||
console.log(error);
|
||||
});
|
||||
""";
|
||||
expect(axiosCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsAxios, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/js/fetch.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final fetchCodeGen = FetchCodeGen(isNodeJs: true);
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -30,7 +31,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
@ -57,7 +61,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
@ -84,7 +91,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
@ -111,7 +121,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet4, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
@ -141,7 +154,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet5, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
@ -171,7 +187,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet6, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
@ -198,7 +217,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet7, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
@ -228,7 +250,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet8, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
@ -255,7 +280,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet9, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
@ -286,7 +314,8 @@ fetch(url, options)
|
||||
});
|
||||
""";
|
||||
expect(
|
||||
fetchCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -320,7 +349,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet11, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
@ -347,7 +379,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelGet12, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -376,7 +411,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelHead1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
@ -403,7 +441,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelHead2, "http"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -437,7 +478,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPost1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
@ -451,7 +495,7 @@ let options = {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body:
|
||||
"{\n\"text\": \"I LOVE Flutter\"\n}"
|
||||
"{\n\"text\": \"I LOVE Flutter\",\n\"flag\": null,\n\"male\": true,\n\"female\": false,\n\"no\": 1.2,\n\"arr\": [\"null\", \"true\", \"false\", null]\n}"
|
||||
};
|
||||
|
||||
let status;
|
||||
@ -469,7 +513,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPost2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
@ -502,7 +549,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPost3, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -536,7 +586,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPut1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -570,7 +623,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelPatch1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
@ -599,7 +655,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelDelete1, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
@ -631,7 +690,10 @@ fetch(url, options)
|
||||
console.error('error:' + err);
|
||||
});
|
||||
""";
|
||||
expect(fetchCodeGen.getCode(requestModelDelete2, "https"), expectedCode);
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.nodejsFetch, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/python/http_client.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final pythonHttpClientCodeGen = PythonHttpClientCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -17,7 +18,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -26,8 +29,8 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"code": "US"
|
||||
}
|
||||
"code": "US"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
@ -38,7 +41,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -47,8 +52,8 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"code": "IND"
|
||||
}
|
||||
"code": "IND"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
@ -59,7 +64,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet3, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -68,12 +75,12 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"num": "8700000",
|
||||
"digits": "3",
|
||||
"system": "SS",
|
||||
"add_space": "true",
|
||||
"trailing_zeros": "true"
|
||||
}
|
||||
"num": "8700000",
|
||||
"digits": "3",
|
||||
"system": "SS",
|
||||
"add_space": "true",
|
||||
"trailing_zeros": "true"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
@ -84,7 +91,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet4, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -92,8 +101,8 @@ print(data.decode("utf-8"))
|
||||
const expectedCode = r"""import http.client
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.github.com")
|
||||
conn.request("GET", "/repos/foss42/apidash",
|
||||
@ -104,7 +113,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet5, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -113,13 +124,13 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"raw": "true"
|
||||
}
|
||||
"raw": "true"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.github.com")
|
||||
conn.request("GET", "/repos/foss42/apidash" + queryParamsStr,
|
||||
@ -130,7 +141,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet6, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -145,7 +158,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet7, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -154,13 +169,13 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"raw": "true"
|
||||
}
|
||||
"raw": "true"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.github.com")
|
||||
conn.request("GET", "/repos/foss42/apidash" + queryParamsStr,
|
||||
@ -171,7 +186,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet8, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -180,9 +197,9 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"num": "8700000",
|
||||
"add_space": "true"
|
||||
}
|
||||
"num": "8700000",
|
||||
"add_space": "true"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
@ -193,7 +210,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet9, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -201,8 +220,8 @@ print(data.decode("utf-8"))
|
||||
const expectedCode = r"""import http.client
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("GET", "/humanize/social",
|
||||
@ -214,7 +233,8 @@ data = res.read()
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
pythonHttpClientCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -226,14 +246,14 @@ print(data.decode("utf-8"))
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"num": "8700000",
|
||||
"digits": "3"
|
||||
}
|
||||
"num": "8700000",
|
||||
"digits": "3"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("GET", "/humanize/social" + queryParamsStr,
|
||||
@ -244,7 +264,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet11, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -259,7 +281,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelGet12, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -276,7 +300,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelHead1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -291,7 +317,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelHead2, "http"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -305,8 +333,8 @@ body = r'''{
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"content-type": "text/plain"
|
||||
}
|
||||
"content-type": "text/plain"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/case/lower",
|
||||
@ -318,7 +346,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelPost1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -326,12 +356,17 @@ print(data.decode("utf-8"))
|
||||
const expectedCode = r"""import http.client
|
||||
|
||||
body = r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
"content-type": "application/json"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/case/lower",
|
||||
@ -343,7 +378,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelPost2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -355,9 +392,9 @@ body = r'''{
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent",
|
||||
"content-type": "application/json"
|
||||
}
|
||||
"User-Agent": "Test Agent",
|
||||
"content-type": "application/json"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/case/lower",
|
||||
@ -369,7 +406,320 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelPost3, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 4', () {
|
||||
const expectedCode = r"""import http.client
|
||||
import mimetypes
|
||||
from codecs import encode
|
||||
|
||||
headers = {
|
||||
"content-type": "multipart/form-data; boundary=b9826c20-773c-1f0c-814d-a1b3d90cd6b3"
|
||||
}
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
dataList.append(encode('--b9826c20-773c-1f0c-814d-a1b3d90cd6b3'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode(f'--b9826c20-773c-1f0c-814d-a1b3d90cd6b3--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list([{"name":"text","value":"API","type":"text"},{"name":"sep","value":"|","type":"text"},{"name":"times","value":"3","type":"text"}])
|
||||
body = b'\r\n'.join(dataList)
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/io/form",
|
||||
body= body,
|
||||
headers= headers)
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost4, "https",
|
||||
boundary: "b9826c20-773c-1f0c-814d-a1b3d90cd6b3"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 5', () {
|
||||
const expectedCode = r"""import http.client
|
||||
import mimetypes
|
||||
from codecs import encode
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent",
|
||||
"content-type": "multipart/form-data; boundary=929dc910-7714-1f0c-814d-a1b3d90cd6b3"
|
||||
}
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
dataList.append(encode('--929dc910-7714-1f0c-814d-a1b3d90cd6b3'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode(f'--929dc910-7714-1f0c-814d-a1b3d90cd6b3--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list([{"name":"text","value":"API","type":"text"},{"name":"sep","value":"|","type":"text"},{"name":"times","value":"3","type":"text"}])
|
||||
body = b'\r\n'.join(dataList)
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/io/form",
|
||||
body= body,
|
||||
headers= headers)
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost5, "https",
|
||||
boundary: "929dc910-7714-1f0c-814d-a1b3d90cd6b3"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 6', () {
|
||||
const expectedCode = r"""import http.client
|
||||
import mimetypes
|
||||
from codecs import encode
|
||||
|
||||
headers = {
|
||||
"content-type": "multipart/form-data; boundary=9b1374c0-76e0-1f0c-814d-a1b3d90cd6b3"
|
||||
}
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
dataList.append(encode('--9b1374c0-76e0-1f0c-814d-a1b3d90cd6b3'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode(f'--9b1374c0-76e0-1f0c-814d-a1b3d90cd6b3--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list([{"name":"token","value":"xyz","type":"text"},{"name":"imfile","value":"/Documents/up/1.png","type":"file"}])
|
||||
body = b'\r\n'.join(dataList)
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/io/img",
|
||||
body= body,
|
||||
headers= headers)
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost6, "https",
|
||||
boundary: "9b1374c0-76e0-1f0c-814d-a1b3d90cd6b3"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 7', () {
|
||||
const expectedCode = r"""import http.client
|
||||
import mimetypes
|
||||
from codecs import encode
|
||||
|
||||
headers = {
|
||||
"content-type": "multipart/form-data; boundary=defdf240-76b4-1f0c-814d-a1b3d90cd6b3"
|
||||
}
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
dataList.append(encode('--defdf240-76b4-1f0c-814d-a1b3d90cd6b3'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode(f'--defdf240-76b4-1f0c-814d-a1b3d90cd6b3--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list([{"name":"token","value":"xyz","type":"text"},{"name":"imfile","value":"/Documents/up/1.png","type":"file"}])
|
||||
body = b'\r\n'.join(dataList)
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/io/img",
|
||||
body= body,
|
||||
headers= headers)
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost7, "https",
|
||||
boundary: "defdf240-76b4-1f0c-814d-a1b3d90cd6b3"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 8', () {
|
||||
const expectedCode = r"""import http.client
|
||||
import mimetypes
|
||||
from codecs import encode
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"size": "2",
|
||||
"len": "3"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
headers = {
|
||||
"content-type": "multipart/form-data; boundary=a990b150-7683-1f0c-814d-a1b3d90cd6b3"
|
||||
}
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
dataList.append(encode('--a990b150-7683-1f0c-814d-a1b3d90cd6b3'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode(f'--a990b150-7683-1f0c-814d-a1b3d90cd6b3--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list([{"name":"text","value":"API","type":"text"},{"name":"sep","value":"|","type":"text"},{"name":"times","value":"3","type":"text"}])
|
||||
body = b'\r\n'.join(dataList)
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/io/form" + queryParamsStr,
|
||||
body= body,
|
||||
headers= headers)
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost8, "https",
|
||||
boundary: "a990b150-7683-1f0c-814d-a1b3d90cd6b3"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 9', () {
|
||||
const expectedCode = r"""import http.client
|
||||
import mimetypes
|
||||
from codecs import encode
|
||||
from urllib.parse import urlencode
|
||||
|
||||
queryParams = {
|
||||
"size": "2",
|
||||
"len": "3"
|
||||
}
|
||||
queryParamsStr = '?' + urlencode(queryParams)
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent",
|
||||
"Keep-Alive": "true",
|
||||
"content-type": "multipart/form-data; boundary=79088e00-75ec-1f0c-814d-a1b3d90cd6b3"
|
||||
}
|
||||
|
||||
def build_data_list(fields):
|
||||
dataList = []
|
||||
for field in fields:
|
||||
name = field.get('name', '')
|
||||
value = field.get('value', '')
|
||||
type_ = field.get('type', 'text')
|
||||
dataList.append(encode('--79088e00-75ec-1f0c-814d-a1b3d90cd6b3'))
|
||||
if type_ == 'text':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"'))
|
||||
dataList.append(encode('Content-Type: text/plain'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(encode(value))
|
||||
elif type_ == 'file':
|
||||
dataList.append(encode(f'Content-Disposition: form-data; name="{name}"; filename="{value}"'))
|
||||
dataList.append(encode(f'Content-Type: {mimetypes.guess_type(value)[0] or "application/octet-stream"}'))
|
||||
dataList.append(encode(''))
|
||||
dataList.append(open(value, 'rb').read())
|
||||
dataList.append(encode(f'--79088e00-75ec-1f0c-814d-a1b3d90cd6b3--'))
|
||||
dataList.append(encode(''))
|
||||
return dataList
|
||||
|
||||
dataList = build_data_list([{"name":"token","value":"xyz","type":"text"},{"name":"imfile","value":"/Documents/up/1.png","type":"file"}])
|
||||
body = b'\r\n'.join(dataList)
|
||||
conn = http.client.HTTPSConnection("api.apidash.dev")
|
||||
conn.request("POST", "/io/img" + queryParamsStr,
|
||||
body= body,
|
||||
headers= headers)
|
||||
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPost9, "https",
|
||||
boundary: "79088e00-75ec-1f0c-814d-a1b3d90cd6b3"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -384,8 +734,8 @@ body = r'''{
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
"content-type": "application/json"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("reqres.in")
|
||||
conn.request("PUT", "/api/users/2",
|
||||
@ -397,7 +747,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelPut1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -412,8 +764,8 @@ body = r'''{
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
"content-type": "application/json"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("reqres.in")
|
||||
conn.request("PATCH", "/api/users/2",
|
||||
@ -425,7 +777,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelPatch1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -442,7 +796,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelDelete1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -455,8 +811,8 @@ body = r'''{
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
"content-type": "application/json"
|
||||
}
|
||||
|
||||
conn = http.client.HTTPSConnection("reqres.in")
|
||||
conn.request("DELETE", "/api/users/2",
|
||||
@ -468,7 +824,9 @@ data = res.read()
|
||||
|
||||
print(data.decode("utf-8"))
|
||||
""";
|
||||
expect(pythonHttpClientCodeGen.getCode(requestModelDelete2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonHttpClient, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
@ -1,9 +1,10 @@
|
||||
import 'package:apidash/codegen/python/requests.dart';
|
||||
import '../request_models.dart';
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final pythonRequestsCodeGen = PythonRequestsCodeGen();
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
@ -16,7 +17,9 @@ response = requests.get(url)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -26,15 +29,17 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/country/data'
|
||||
|
||||
params = {
|
||||
"code": "US"
|
||||
}
|
||||
"code": "US"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -44,15 +49,17 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/country/data'
|
||||
|
||||
params = {
|
||||
"code": "IND"
|
||||
}
|
||||
"code": "IND"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet3, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -62,19 +69,21 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/humanize/social'
|
||||
|
||||
params = {
|
||||
"num": "8700000",
|
||||
"digits": "3",
|
||||
"system": "SS",
|
||||
"add_space": "true",
|
||||
"trailing_zeros": "true"
|
||||
}
|
||||
"num": "8700000",
|
||||
"digits": "3",
|
||||
"system": "SS",
|
||||
"add_space": "true",
|
||||
"trailing_zeros": "true"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet4, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -84,15 +93,17 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.github.com/repos/foss42/apidash'
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet5, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -102,19 +113,21 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.github.com/repos/foss42/apidash'
|
||||
|
||||
params = {
|
||||
"raw": "true"
|
||||
}
|
||||
"raw": "true"
|
||||
}
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet6, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -128,7 +141,9 @@ response = requests.get(url)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet7, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -138,19 +153,21 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.github.com/repos/foss42/apidash'
|
||||
|
||||
params = {
|
||||
"raw": "true"
|
||||
}
|
||||
"raw": "true"
|
||||
}
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet8, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -160,16 +177,18 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/humanize/social'
|
||||
|
||||
params = {
|
||||
"num": "8700000",
|
||||
"add_space": "true"
|
||||
}
|
||||
"num": "8700000",
|
||||
"add_space": "true"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet9, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -179,8 +198,8 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/humanize/social'
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
|
||||
@ -188,7 +207,8 @@ print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
pythonRequestsCodeGen.getCode(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
@ -201,20 +221,22 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/humanize/social'
|
||||
|
||||
params = {
|
||||
"num": "8700000",
|
||||
"digits": "3"
|
||||
}
|
||||
"num": "8700000",
|
||||
"digits": "3"
|
||||
}
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
response = requests.get(url, params=params, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet11, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -228,7 +250,9 @@ response = requests.get(url)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelGet12, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -244,7 +268,9 @@ response = requests.head(url)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelHead1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -258,7 +284,9 @@ response = requests.head(url)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelHead2, "http"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -274,15 +302,17 @@ payload = r'''{
|
||||
}'''
|
||||
|
||||
headers = {
|
||||
"content-type": "text/plain"
|
||||
}
|
||||
"content-type": "text/plain"
|
||||
}
|
||||
|
||||
response = requests.post(url, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelPost1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -292,7 +322,12 @@ print('Response Body:', response.text)
|
||||
url = 'https://api.apidash.dev/case/lower'
|
||||
|
||||
payload = {
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": None,
|
||||
"male": True,
|
||||
"female": False,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", None]
|
||||
}
|
||||
|
||||
response = requests.post(url, json=payload)
|
||||
@ -300,7 +335,9 @@ response = requests.post(url, json=payload)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelPost2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -314,15 +351,189 @@ payload = {
|
||||
}
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
"User-Agent": "Test Agent"
|
||||
}
|
||||
|
||||
response = requests.post(url, json=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelPost3, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 4', () {
|
||||
const expectedCode = r"""import requests
|
||||
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
|
||||
url = 'https://api.apidash.dev/io/form'
|
||||
|
||||
payload = MultipartEncoder({
|
||||
"text": "API",
|
||||
"sep": "|",
|
||||
"times": "3",
|
||||
})
|
||||
|
||||
headers = {
|
||||
"content-type": payload.content_type
|
||||
}
|
||||
|
||||
response = requests.post(url, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 5', () {
|
||||
const expectedCode = r"""import requests
|
||||
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
|
||||
url = 'https://api.apidash.dev/io/form'
|
||||
|
||||
payload = MultipartEncoder({
|
||||
"text": "API",
|
||||
"sep": "|",
|
||||
"times": "3",
|
||||
})
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent",
|
||||
"content-type": payload.content_type
|
||||
}
|
||||
|
||||
response = requests.post(url, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 6', () {
|
||||
const expectedCode = r"""import requests
|
||||
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
|
||||
url = 'https://api.apidash.dev/io/img'
|
||||
|
||||
payload = MultipartEncoder({
|
||||
"token": "xyz",
|
||||
"imfile": ("1.png", open("/Documents/up/1.png", "rb")),
|
||||
})
|
||||
|
||||
headers = {
|
||||
"content-type": payload.content_type
|
||||
}
|
||||
|
||||
response = requests.post(url, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 7', () {
|
||||
const expectedCode = r"""import requests
|
||||
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
|
||||
url = 'https://api.apidash.dev/io/img'
|
||||
|
||||
payload = MultipartEncoder({
|
||||
"token": "xyz",
|
||||
"imfile": ("1.png", open("/Documents/up/1.png", "rb")),
|
||||
})
|
||||
|
||||
headers = {
|
||||
"content-type": payload.content_type
|
||||
}
|
||||
|
||||
response = requests.post(url, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 8', () {
|
||||
const expectedCode = r"""import requests
|
||||
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
|
||||
url = 'https://api.apidash.dev/io/form'
|
||||
|
||||
params = {
|
||||
"size": "2",
|
||||
"len": "3"
|
||||
}
|
||||
|
||||
payload = MultipartEncoder({
|
||||
"text": "API",
|
||||
"sep": "|",
|
||||
"times": "3",
|
||||
})
|
||||
|
||||
headers = {
|
||||
"content-type": payload.content_type
|
||||
}
|
||||
|
||||
response = requests.post(url, params=params, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 9', () {
|
||||
const expectedCode = r"""import requests
|
||||
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||
|
||||
url = 'https://api.apidash.dev/io/img'
|
||||
|
||||
params = {
|
||||
"size": "2",
|
||||
"len": "3"
|
||||
}
|
||||
|
||||
payload = MultipartEncoder({
|
||||
"token": "xyz",
|
||||
"imfile": ("1.png", open("/Documents/up/1.png", "rb")),
|
||||
})
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Test Agent",
|
||||
"Keep-Alive": "true",
|
||||
"content-type": payload.content_type
|
||||
}
|
||||
|
||||
response = requests.post(url, params=params, data=payload, headers=headers)
|
||||
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPost9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -343,7 +554,9 @@ response = requests.put(url, json=payload)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelPut1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -364,7 +577,9 @@ response = requests.patch(url, json=payload)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelPatch1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
@ -380,7 +595,9 @@ response = requests.delete(url)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelDelete1, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
@ -399,7 +616,9 @@ response = requests.delete(url, json=payload)
|
||||
print('Status Code:', response.status_code)
|
||||
print('Response Body:', response.text)
|
||||
""";
|
||||
expect(pythonRequestsCodeGen.getCode(requestModelDelete2, "https"),
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.pythonRequests, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
1094
test/codegen/rust_actix_codegen_test.dart
Normal file
1094
test/codegen/rust_actix_codegen_test.dart
Normal file
File diff suppressed because it is too large
Load Diff
866
test/codegen/rust_reqwest_codegen_test.dart
Normal file
866
test/codegen/rust_reqwest_codegen_test.dart
Normal file
@ -0,0 +1,866 @@
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/country/data";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("code", "US")])
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/country/data";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("code", "IND")])
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("num", "8700000"), ("digits", "3"), ("system", "SS"), ("add_space", "true"), ("trailing_zeros", "true")])
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.github.com/repos/foss42/apidash";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.header("User-Agent", "Test Agent")
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.github.com/repos/foss42/apidash";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("raw", "true")])
|
||||
.header("User-Agent", "Test Agent")
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.github.com/repos/foss42/apidash";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("raw", "true")])
|
||||
.header("User-Agent", "Test Agent")
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("num", "8700000"), ("add_space", "true")])
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.header("User-Agent", "Test Agent")
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 11', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.query(&[("num", "8700000"), ("digits", "3")])
|
||||
.header("User-Agent", "Test Agent")
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
|
||||
let response = client
|
||||
.get(url)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('HEAD Request', () {
|
||||
test('HEAD 1', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev";
|
||||
|
||||
let response = client
|
||||
.head(url)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "http://api.apidash.dev";
|
||||
|
||||
let response = client
|
||||
.head(url)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('POST Request', () {
|
||||
test('POST 1', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/case/lower";
|
||||
|
||||
let payload = r#"{
|
||||
"text": "I LOVE Flutter"
|
||||
}"#;
|
||||
|
||||
let response = client
|
||||
.post(url)
|
||||
.header("content-type", "text/plain")
|
||||
.body(payload)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/case/lower";
|
||||
|
||||
let payload = serde_json::json!({
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
});
|
||||
|
||||
let response = client
|
||||
.post(url)
|
||||
.json(&payload)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/case/lower";
|
||||
|
||||
let payload = serde_json::json!({
|
||||
"text": "I LOVE Flutter"
|
||||
});
|
||||
|
||||
let response = client
|
||||
.post(url)
|
||||
.header("User-Agent", "Test Agent")
|
||||
.json(&payload)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 4', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/io/form";
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "text".to_string(),
|
||||
value: "API".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "sep".to_string(),
|
||||
value: "|".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "times".to_string(),
|
||||
value: "3".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
let response = client
|
||||
.post(url)
|
||||
.multipart(form)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest,
|
||||
requestModelPost4,
|
||||
"https",
|
||||
boundary: "test",
|
||||
),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 5', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/io/form";
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "text".to_string(),
|
||||
value: "API".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "sep".to_string(),
|
||||
value: "|".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "times".to_string(),
|
||||
value: "3".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
let response = client
|
||||
.post(url)
|
||||
.header("User-Agent", "Test Agent")
|
||||
.multipart(form)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost5, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 6', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/io/img";
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "token".to_string(),
|
||||
value: "xyz".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "imfile".to_string(),
|
||||
value: "/Documents/up/1.png".to_string(),
|
||||
field_type: "file".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
let response = client
|
||||
.post(url)
|
||||
.multipart(form)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost6, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 7', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/io/img";
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "token".to_string(),
|
||||
value: "xyz".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "imfile".to_string(),
|
||||
value: "/Documents/up/1.png".to_string(),
|
||||
field_type: "file".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
let response = client
|
||||
.post(url)
|
||||
.multipart(form)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost7, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 8', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/io/form";
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "text".to_string(),
|
||||
value: "API".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "sep".to_string(),
|
||||
value: "|".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "times".to_string(),
|
||||
value: "3".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
let response = client
|
||||
.post(url)
|
||||
.query(&[("size", "2"), ("len", "3")])
|
||||
.multipart(form)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost8, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 9', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://api.apidash.dev/io/img";
|
||||
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "token".to_string(),
|
||||
value: "xyz".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "imfile".to_string(),
|
||||
value: "/Documents/up/1.png".to_string(),
|
||||
field_type: "file".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
let mut form = reqwest::blocking::multipart::Form::new();
|
||||
|
||||
for item in form_data_items {
|
||||
if item.field_type == "text" {
|
||||
form = form.text(item.name, item.value);
|
||||
} else if item.field_type == "file" {
|
||||
form = form.file(item.name, &item.value)?;
|
||||
}
|
||||
}
|
||||
let response = client
|
||||
.post(url)
|
||||
.query(&[("size", "2"), ("len", "3")])
|
||||
.header("User-Agent", "Test Agent")
|
||||
.header("Keep-Alive", "true")
|
||||
.multipart(form)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPost9, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PUT Request', () {
|
||||
test('PUT 1', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
|
||||
let payload = serde_json::json!({
|
||||
"name": "morpheus",
|
||||
"job": "zion resident"
|
||||
});
|
||||
|
||||
let response = client
|
||||
.put(url)
|
||||
.json(&payload)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PATCH Request', () {
|
||||
test('PATCH 1', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
|
||||
let payload = serde_json::json!({
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
});
|
||||
|
||||
let response = client
|
||||
.patch(url)
|
||||
.json(&payload)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
|
||||
let response = client
|
||||
.delete(url)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
const expectedCode =
|
||||
r"""fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
|
||||
let payload = serde_json::json!({
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
});
|
||||
|
||||
let response = client
|
||||
.delete(url)
|
||||
.json(&payload)
|
||||
.send()?;
|
||||
|
||||
println!("Status Code: {}", response.status());
|
||||
println!("Response Body: {}", response.text()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustReqwest, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
871
test/codegen/rust_ureq_codegen_test.dart
Normal file
871
test/codegen/rust_ureq_codegen_test.dart
Normal file
@ -0,0 +1,871 @@
|
||||
import 'package:apidash/codegen/codegen.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
void main() {
|
||||
final codeGen = Codegen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev";
|
||||
let response = ureq::get(url)
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/country/data";
|
||||
let response = ureq::get(url)
|
||||
.query("code", "US")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/country/data";
|
||||
let response = ureq::get(url)
|
||||
.query("code", "IND")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
let response = ureq::get(url)
|
||||
.query("num", "8700000")
|
||||
.query("digits", "3")
|
||||
.query("system", "SS")
|
||||
.query("add_space", "true")
|
||||
.query("trailing_zeros", "true")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet4, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.github.com/repos/foss42/apidash";
|
||||
let response = ureq::get(url)
|
||||
.set("User-Agent", "Test Agent")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet5, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.github.com/repos/foss42/apidash";
|
||||
let response = ureq::get(url)
|
||||
.query("raw", "true")
|
||||
.set("User-Agent", "Test Agent")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet6, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev";
|
||||
let response = ureq::get(url)
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet7, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.github.com/repos/foss42/apidash";
|
||||
let response = ureq::get(url)
|
||||
.query("raw", "true")
|
||||
.set("User-Agent", "Test Agent")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet8, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 9', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
let response = ureq::get(url)
|
||||
.query("num", "8700000")
|
||||
.query("add_space", "true")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet9, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 10', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
let response = ureq::get(url)
|
||||
.set("User-Agent", "Test Agent")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustUreq,
|
||||
requestModelGet10,
|
||||
"https",
|
||||
),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 11', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
let response = ureq::get(url)
|
||||
.query("num", "8700000")
|
||||
.query("digits", "3")
|
||||
.set("User-Agent", "Test Agent")
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet11, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('GET 12', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/humanize/social";
|
||||
let response = ureq::get(url)
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelGet12, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('HEAD Request', () {
|
||||
test('HEAD 1', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev";
|
||||
let response = ureq::head(url)
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelHead1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "http://api.apidash.dev";
|
||||
let response = ureq::head(url)
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelHead2, "http"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('POST Request', () {
|
||||
test('POST 1', () {
|
||||
const expectedCode = r'''fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/case/lower";
|
||||
let payload = r#"{
|
||||
"text": "I LOVE Flutter"
|
||||
}"#;
|
||||
|
||||
let response = ureq::post(url)
|
||||
.set("content-type", "text/plain")
|
||||
.send_string(payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
const expectedCode = r'''fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/case/lower";
|
||||
let payload = ureq::json!({
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
});
|
||||
|
||||
let response = ureq::post(url)
|
||||
.send_json(payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
const expectedCode = r'''fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/case/lower";
|
||||
let payload = ureq::json!({
|
||||
"text": "I LOVE Flutter"
|
||||
});
|
||||
|
||||
let response = ureq::post(url)
|
||||
.set("User-Agent", "Test Agent")
|
||||
.send_json(payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost3, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('POST 4', () {
|
||||
const expectedCode = r"""use std::io::Read;
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/io/form";
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "text".to_string(),
|
||||
value: "API".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "sep".to_string(),
|
||||
value: "|".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "times".to_string(),
|
||||
value: "3".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--test\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--test--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
let response = ureq::post(url)
|
||||
.set("content-type", "multipart/form-data; boundary=test")
|
||||
.send_bytes(&payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustUreq,
|
||||
requestModelPost4,
|
||||
"https",
|
||||
boundary: "test",
|
||||
),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 5', () {
|
||||
const expectedCode = r"""use std::io::Read;
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/io/form";
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "text".to_string(),
|
||||
value: "API".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "sep".to_string(),
|
||||
value: "|".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "times".to_string(),
|
||||
value: "3".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--test\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--test--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
let response = ureq::post(url)
|
||||
.set("User-Agent", "Test Agent")
|
||||
.set("content-type", "multipart/form-data; boundary=test")
|
||||
.send_bytes(&payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost5, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 6', () {
|
||||
const expectedCode = r"""use std::io::Read;
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/io/img";
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "token".to_string(),
|
||||
value: "xyz".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "imfile".to_string(),
|
||||
value: "/Documents/up/1.png".to_string(),
|
||||
field_type: "file".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--test\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--test--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
let response = ureq::post(url)
|
||||
.set("content-type", "multipart/form-data; boundary=test")
|
||||
.send_bytes(&payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost6, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 7', () {
|
||||
const expectedCode = r"""use std::io::Read;
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/io/img";
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "token".to_string(),
|
||||
value: "xyz".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "imfile".to_string(),
|
||||
value: "/Documents/up/1.png".to_string(),
|
||||
field_type: "file".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--test\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--test--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
let response = ureq::post(url)
|
||||
.set("content-type", "multipart/form-data; boundary=test")
|
||||
.send_bytes(&payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost7, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 8', () {
|
||||
const expectedCode = r"""use std::io::Read;
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/io/form";
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "text".to_string(),
|
||||
value: "API".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "sep".to_string(),
|
||||
value: "|".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "times".to_string(),
|
||||
value: "3".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--test\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--test--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
let response = ureq::post(url)
|
||||
.query("size", "2")
|
||||
.query("len", "3")
|
||||
.set("content-type", "multipart/form-data; boundary=test")
|
||||
.send_bytes(&payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost8, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
test('POST 9', () {
|
||||
const expectedCode = r"""use std::io::Read;
|
||||
fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://api.apidash.dev/io/img";
|
||||
struct FormDataItem {
|
||||
name: String,
|
||||
value: String,
|
||||
field_type: String,
|
||||
}
|
||||
|
||||
let form_data_items: Vec<FormDataItem> = vec![
|
||||
FormDataItem {
|
||||
name: "token".to_string(),
|
||||
value: "xyz".to_string(),
|
||||
field_type: "text".to_string(),
|
||||
},
|
||||
FormDataItem {
|
||||
name: "imfile".to_string(),
|
||||
value: "/Documents/up/1.png".to_string(),
|
||||
field_type: "file".to_string(),
|
||||
},
|
||||
];
|
||||
|
||||
fn build_data_list(fields: Vec<FormDataItem>) -> Vec<u8> {
|
||||
let mut data_list = Vec::new();
|
||||
|
||||
for field in fields {
|
||||
data_list.extend_from_slice(b"--test\r\n");
|
||||
|
||||
if field.field_type == "text" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"\r\n", field.name).as_bytes());
|
||||
data_list.extend_from_slice(b"Content-Type: text/plain\r\n\r\n");
|
||||
data_list.extend_from_slice(field.value.as_bytes());
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
} else if field.field_type == "file" {
|
||||
data_list.extend_from_slice(format!("Content-Disposition: form-data; name=\"{}\"; filename=\"{}\"\r\n", field.name, field.value).as_bytes());
|
||||
|
||||
let mime_type = mime_guess::from_path(&field.value).first_or(mime_guess::mime::APPLICATION_OCTET_STREAM);
|
||||
data_list.extend_from_slice(format!("Content-Type: {}\r\n\r\n", mime_type).as_bytes());
|
||||
|
||||
let mut file = std::fs::File::open(&field.value).unwrap();
|
||||
let mut file_contents = Vec::new();
|
||||
file.read_to_end(&mut file_contents).unwrap();
|
||||
data_list.extend_from_slice(&file_contents);
|
||||
data_list.extend_from_slice(b"\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
data_list.extend_from_slice(b"--test--\r\n");
|
||||
data_list
|
||||
}
|
||||
|
||||
let payload = build_data_list(form_data_items);
|
||||
let response = ureq::post(url)
|
||||
.query("size", "2")
|
||||
.query("len", "3")
|
||||
.set("User-Agent", "Test Agent")
|
||||
.set("Keep-Alive", "true")
|
||||
.set("content-type", "multipart/form-data; boundary=test")
|
||||
.send_bytes(&payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPost9, "https",
|
||||
boundary: "test"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PUT Request', () {
|
||||
test('PUT 1', () {
|
||||
const expectedCode = r'''fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
let payload = ureq::json!({
|
||||
"name": "morpheus",
|
||||
"job": "zion resident"
|
||||
});
|
||||
|
||||
let response = ureq::put(url)
|
||||
.send_json(payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
codeGen.getCode(CodegenLanguage.rustUreq, requestModelPut1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('PATCH Request', () {
|
||||
test('PATCH 1', () {
|
||||
const expectedCode = r'''fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
let payload = ureq::json!({
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
});
|
||||
|
||||
let response = ureq::patch(url)
|
||||
.send_json(payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustUreq, requestModelPatch1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode = r"""fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
let response = ureq::delete(url)
|
||||
.call()?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustUreq, requestModelDelete1, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
const expectedCode = r'''fn main() -> Result<(), ureq::Error> {
|
||||
let url = "https://reqres.in/api/users/2";
|
||||
let payload = ureq::json!({
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
});
|
||||
|
||||
let response = ureq::delete(url)
|
||||
.send_json(payload)?;
|
||||
|
||||
println!("Response Status: {}", response.status());
|
||||
println!("Response: {}", response.into_string()?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
''';
|
||||
expect(
|
||||
codeGen.getCode(
|
||||
CodegenLanguage.rustUreq, requestModelDelete2, "https"),
|
||||
expectedCode);
|
||||
});
|
||||
});
|
||||
}
|
@ -175,7 +175,7 @@ void main() {
|
||||
});
|
||||
expect(requestModel.paramsMap, {});
|
||||
expect(requestModel.formDataMapList, []);
|
||||
expect(requestModel.isFormDataRequest, false);
|
||||
expect(requestModel.hasFormData, false);
|
||||
expect(requestModel.hasContentTypeHeader, true);
|
||||
});
|
||||
|
||||
|
@ -209,7 +209,12 @@ const requestModelPost2 = RequestModel(
|
||||
url: 'https://api.apidash.dev/case/lower',
|
||||
method: HTTPVerb.post,
|
||||
requestBody: r"""{
|
||||
"text": "I LOVE Flutter"
|
||||
"text": "I LOVE Flutter",
|
||||
"flag": null,
|
||||
"male": true,
|
||||
"female": false,
|
||||
"no": 1.2,
|
||||
"arr": ["null", "true", "false", null]
|
||||
}""",
|
||||
);
|
||||
|
||||
|
@ -261,14 +261,19 @@ void main() {
|
||||
'postData': {
|
||||
'mimeType': 'application/json',
|
||||
'text': '{\n'
|
||||
'"text": "I LOVE Flutter"\n'
|
||||
'"text": "I LOVE Flutter",\n'
|
||||
'"flag": null,\n'
|
||||
'"male": true,\n'
|
||||
'"female": false,\n'
|
||||
'"no": 1.2,\n'
|
||||
'"arr": ["null", "true", "false", null]\n'
|
||||
'}',
|
||||
'comment': ''
|
||||
},
|
||||
'comment': '',
|
||||
'cookies': [],
|
||||
'headersSize': -1,
|
||||
'bodySize': 28
|
||||
'bodySize': 124
|
||||
};
|
||||
expect(
|
||||
requestModelToHARJsonRequest(
|
||||
|
Reference in New Issue
Block a user