mirror of
https://github.com/foss42/apidash.git
synced 2025-05-23 17:26:45 +08:00
Merge pull request #377 from AcousticDeveloper/resolve-issue-375
Validated CodeGen for PHP (cURL)
This commit is contained in:
@ -1,175 +1,100 @@
|
|||||||
import 'dart:convert';
|
|
||||||
import 'package:jinja/jinja.dart' as jj;
|
import 'package:jinja/jinja.dart' as jj;
|
||||||
import 'package:apidash/utils/utils.dart'
|
import 'package:apidash/utils/utils.dart'
|
||||||
show getNewUuid, getValidRequestUri, requestModelToHARJsonRequest;
|
show getValidRequestUri, stripUriParams;
|
||||||
import 'package:apidash/models/models.dart' show RequestModel;
|
import 'package:apidash/models/models.dart' show RequestModel;
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
|
||||||
class PHPcURLCodeGen {
|
class PHPcURLCodeGen {
|
||||||
final String kTemplateStart = """
|
final String kTemplateStart = r'''
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
final String kTemplateUri = """
|
''';
|
||||||
\$uri = "{{uri}}";
|
|
||||||
|
|
||||||
""";
|
final String kTemplateUri = r'''
|
||||||
|
$uri = '{{uri}}';
|
||||||
|
|
||||||
|
|
||||||
|
''';
|
||||||
|
|
||||||
|
String kTemplateBody = r'''
|
||||||
|
{%- if body is iterable -%}
|
||||||
|
$request_body = [
|
||||||
|
{%- for data in body %}
|
||||||
|
{%- if data.type == 'text' %}
|
||||||
|
'{{ data.name }}' => '{{ data.value }}',
|
||||||
|
{%- elif data.type == 'file' %}
|
||||||
|
'{{ data.name }}' => new CURLFILE('{{ data.value }}'),
|
||||||
|
{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
];
|
||||||
|
{%- else -%}
|
||||||
|
$request_body = '{{body}}';
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
|
|
||||||
|
''';
|
||||||
|
|
||||||
//defining query parameters
|
//defining query parameters
|
||||||
String kTemplateParams = """
|
String kTemplateParams = r'''
|
||||||
|
$queryParams = [
|
||||||
|
{%- for name, value in params %}
|
||||||
|
'{{ name }}' => '{{ value }}',
|
||||||
|
{%- endfor %}
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
\$queryParams = [{{params}}];
|
|
||||||
\$queryString = "?" . http_build_query(\$queryParams);
|
|
||||||
if (count(\$queryParams) > 0) {
|
|
||||||
\$uri .= \$queryString;
|
|
||||||
}
|
|
||||||
|
|
||||||
""";
|
''';
|
||||||
|
|
||||||
|
//specifying headers
|
||||||
|
String kTemplateHeaders = r'''
|
||||||
|
$headers = [
|
||||||
|
{%- for name, value in headers %}
|
||||||
|
'{{ name }}: {{ value }}',
|
||||||
|
{%- endfor %}
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
''';
|
||||||
|
|
||||||
//initialising the request
|
//initialising the request
|
||||||
String kTemplateRequestInit = """
|
String kStringRequestInit = r'''
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
\$request = curl_init(\$uri);
|
''';
|
||||||
|
|
||||||
""";
|
String kTemplateRequestOptsInit = r'''
|
||||||
|
curl_setopt_array($request, [
|
||||||
String kTemplateBody = """
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => '{{ method|upper }}',
|
||||||
\$request_body = <<<EOF
|
|
||||||
{{body}}
|
|
||||||
EOF;
|
|
||||||
|
|
||||||
""";
|
|
||||||
//specifying headers
|
|
||||||
String kTemplateHeaders = """
|
|
||||||
|
|
||||||
\$headers = [{{headers}}];
|
|
||||||
curl_setopt(\$request, CURLOPT_HTTPHEADER, \$headers);
|
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
String kTemplateFormHeaderContentType = '''
|
|
||||||
multipart/form-data; boundary={{boundary}}''';
|
|
||||||
|
|
||||||
String kTemplateRequest = """
|
|
||||||
|
|
||||||
curl_setopt(\$request, CURLOPT_RETURNTRANSFER, 1);
|
|
||||||
curl_setopt(\$request, {{method}}, 1);
|
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
|
''';
|
||||||
|
String kStringHeaderOpt = r'''
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
''';
|
||||||
//passing the request body
|
//passing the request body
|
||||||
String kStringRequestBody = """
|
String kStringRequestBodyOpt = r'''
|
||||||
curl_setopt(\$request, CURLOPT_POSTFIELDS, \$request_body);
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
''';
|
||||||
""";
|
|
||||||
|
|
||||||
//ending template
|
//ending template
|
||||||
final String kStringRequestEnd = """
|
final String kStringRequestEnd = r'''
|
||||||
\$response = curl_exec(\$request);
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
curl_close(\$request);
|
]);
|
||||||
var_dump(\$response);
|
|
||||||
|
|
||||||
""";
|
$response = curl_exec($request);
|
||||||
|
|
||||||
//template for generating unique boundary
|
curl_close($request);
|
||||||
String kBoundaryUniqueIdTemplate = """
|
|
||||||
\$boundary = "{{uuid}}";
|
|
||||||
|
|
||||||
""";
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
//
|
echo $response . "\n";
|
||||||
String kFileClassString = """
|
''';
|
||||||
class File
|
|
||||||
{
|
|
||||||
public string \$name;
|
|
||||||
public string \$filename;
|
|
||||||
public string \$content;
|
|
||||||
|
|
||||||
function __construct(\$name, \$filename)
|
|
||||||
{
|
|
||||||
\$this->name = \$name;
|
|
||||||
\$this->filename = \$filename;
|
|
||||||
\$available_content = file_get_contents(\$this->filename);
|
|
||||||
\$this->content = \$available_content ? \$available_content : "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
//function to build formdata without 'file' type
|
|
||||||
String kBuildFormDataFunctionWithoutFilesString = """
|
|
||||||
function build_data(\$boundary, \$fields)
|
|
||||||
{
|
|
||||||
\$data = '';
|
|
||||||
\$eol = "\\r\\n";
|
|
||||||
|
|
||||||
\$delimiter = '-------------' . \$boundary;
|
|
||||||
|
|
||||||
foreach (\$fields as \$name => \$content) {
|
|
||||||
\$data .= "--" . \$delimiter . \$eol
|
|
||||||
. 'Content-Disposition: form-data; name="' . \$name . "\\"" . \$eol . \$eol
|
|
||||||
. \$content . \$eol;
|
|
||||||
}
|
|
||||||
\$data .= "--" . \$delimiter . "--" . \$eol;
|
|
||||||
return \$data;
|
|
||||||
}
|
|
||||||
""";
|
|
||||||
|
|
||||||
//function to build formdata with 'file' type
|
|
||||||
String kBuildFormDataFunctionWithFilesString = """
|
|
||||||
function build_data_files(\$boundary, \$fields, \$files)
|
|
||||||
{
|
|
||||||
\$data = '';
|
|
||||||
\$eol = "\\r\\n";
|
|
||||||
|
|
||||||
\$delimiter = '-------------' . \$boundary;
|
|
||||||
|
|
||||||
foreach (\$fields as \$name => \$content) {
|
|
||||||
\$data .= "--" . \$delimiter . \$eol
|
|
||||||
. 'Content-Disposition: form-data; name="' . \$name . "\\"" . \$eol . \$eol
|
|
||||||
. \$content . \$eol;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (\$files as \$uploaded_file) {
|
|
||||||
if (\$uploaded_file instanceof File) {
|
|
||||||
\$data .= "--" . \$delimiter . \$eol
|
|
||||||
. 'Content-Disposition: form-data; name="' . \$uploaded_file->name . '"; filename="' . \$uploaded_file->filename . '"' . \$eol
|
|
||||||
. 'Content-Transfer-Encoding: binary' . \$eol;
|
|
||||||
|
|
||||||
\$data .= \$eol;
|
|
||||||
\$data .= \$uploaded_file->content . \$eol;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
\$data .= "--" . \$delimiter . "--" . \$eol;
|
|
||||||
|
|
||||||
|
|
||||||
return \$data;
|
|
||||||
}
|
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
//
|
|
||||||
String kMultiPartBodyWithFiles = """
|
|
||||||
\$request_body = build_data_files(\$boundary, \$fields, \$files);
|
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
//
|
|
||||||
String kMultiPartBodyWithoutFiles = """
|
|
||||||
\$request_body = build_data(\$boundary, \$fields);
|
|
||||||
|
|
||||||
""";
|
|
||||||
|
|
||||||
String? getCode(RequestModel requestModel) {
|
String? getCode(RequestModel requestModel) {
|
||||||
String uuid = getNewUuid();
|
|
||||||
uuid = uuid.replaceAll(RegExp(r'-'), "");
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String result = "";
|
String result = "";
|
||||||
bool hasQuery = false;
|
|
||||||
bool hasBody = false;
|
bool hasBody = false;
|
||||||
|
|
||||||
var rec = getValidRequestUri(
|
var rec = getValidRequestUri(
|
||||||
@ -184,131 +109,55 @@ function build_data_files(\$boundary, \$fields, \$files)
|
|||||||
var templateStart = jj.Template(kTemplateStart);
|
var templateStart = jj.Template(kTemplateStart);
|
||||||
result += templateStart.render();
|
result += templateStart.render();
|
||||||
|
|
||||||
// if the request does not contain any file uploads, we do not need
|
|
||||||
// to add the class for File in the request
|
|
||||||
if (requestModel.hasFileInFormData) {
|
|
||||||
result += kFileClassString;
|
|
||||||
}
|
|
||||||
|
|
||||||
//adds the function to build formdata with or without 'file' type
|
|
||||||
if (requestModel.hasFormData) {
|
|
||||||
result += requestModel.hasFileInFormData
|
|
||||||
? kBuildFormDataFunctionWithFilesString
|
|
||||||
: kBuildFormDataFunctionWithoutFilesString;
|
|
||||||
}
|
|
||||||
|
|
||||||
var templateUri = jj.Template(kTemplateUri);
|
var templateUri = jj.Template(kTemplateUri);
|
||||||
result += templateUri.render({"uri": requestModel.url});
|
result += templateUri.render({'uri': stripUriParams(uri)});
|
||||||
|
|
||||||
|
//renders the request body contains the HTTP method associated with the request
|
||||||
|
if (requestModel.hasBody) {
|
||||||
|
hasBody = true;
|
||||||
|
// contains the entire request body as a string if body is present
|
||||||
|
var templateBody = jj.Template(kTemplateBody);
|
||||||
|
result += templateBody.render({
|
||||||
|
'body': requestModel.hasFormData
|
||||||
|
? requestModel.formDataMapList
|
||||||
|
: requestModel.requestBody,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//checking and adding query params
|
//checking and adding query params
|
||||||
if (uri.hasQuery) {
|
if (uri.hasQuery) {
|
||||||
var params = uri.queryParameters;
|
if (requestModel.enabledParamsMap.isNotEmpty) {
|
||||||
if (params.isNotEmpty) {
|
|
||||||
hasQuery = true;
|
|
||||||
var templateParams = jj.Template(kTemplateParams);
|
var templateParams = jj.Template(kTemplateParams);
|
||||||
|
result += templateParams
|
||||||
// generating the map of key and value for the query parameters
|
.render({"params": requestModel.enabledParamsMap});
|
||||||
List<String> queryList = [];
|
|
||||||
for (MapEntry<String, String> entry in params.entries) {
|
|
||||||
String entryStr = "\"${entry.key}\" => \"${entry.value}\"";
|
|
||||||
queryList.add(entryStr);
|
|
||||||
}
|
}
|
||||||
String paramsString = "\n ${queryList.join(",\n ")}\n";
|
|
||||||
|
|
||||||
result += templateParams.render({"params": paramsString});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var headers = requestModel.enabledHeadersMap;
|
||||||
|
if (requestModel.hasBody && !requestModel.hasContentTypeHeader) {
|
||||||
|
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||||
|
headers[kHeaderContentType] =
|
||||||
|
requestModel.requestBodyContentType.header;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (headers.isNotEmpty) {
|
||||||
|
var templateHeader = jj.Template(kTemplateHeaders);
|
||||||
|
result += templateHeader.render({'headers': headers});
|
||||||
}
|
}
|
||||||
|
|
||||||
// renders the initial request init function call
|
// renders the initial request init function call
|
||||||
var templateRequestInit = jj.Template(kTemplateRequestInit);
|
result += kStringRequestInit;
|
||||||
result += templateRequestInit.render();
|
|
||||||
|
|
||||||
var harJson =
|
|
||||||
requestModelToHARJsonRequest(requestModel, useEnabled: true);
|
|
||||||
|
|
||||||
var headers = harJson["headers"];
|
|
||||||
|
|
||||||
//parses and adds the headers
|
|
||||||
if (headers.isNotEmpty || requestModel.hasFormData) {
|
|
||||||
var templateHeader = jj.Template(kTemplateHeaders);
|
|
||||||
var m = {};
|
|
||||||
for (var i in headers) {
|
|
||||||
m[i["name"]] = i["value"];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (requestModel.hasFormData) {
|
|
||||||
// we will override any existing boundary and use our own boundary
|
|
||||||
m[kHeaderContentType] =
|
|
||||||
"${ContentType.formdata.header}; boundary=-------------$uuid";
|
|
||||||
|
|
||||||
var boundaryUniqueIdTemplate =
|
|
||||||
jj.Template(kBoundaryUniqueIdTemplate);
|
|
||||||
result += boundaryUniqueIdTemplate.render({"uuid": uuid});
|
|
||||||
|
|
||||||
var fieldsString = '\$fields = [\n';
|
|
||||||
var filesString = '\$files = [\n';
|
|
||||||
|
|
||||||
for (var formData in requestModel.formDataMapList) {
|
|
||||||
if (formData['type'] == 'text') {
|
|
||||||
// the four spaces on the left hand side are for indentation, hence do not remove
|
|
||||||
fieldsString +=
|
|
||||||
' "${formData['name']}" => "${formData['value']}",\n';
|
|
||||||
} else if (formData['type'] == 'file') {
|
|
||||||
filesString +=
|
|
||||||
' new File("${formData['name']}", "${formData['value']}"),\n';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldsString += '];\n';
|
|
||||||
filesString += '];\n';
|
|
||||||
|
|
||||||
result += fieldsString;
|
|
||||||
if (requestModel.hasFileInFormData) {
|
|
||||||
result += filesString;
|
|
||||||
|
|
||||||
result += kMultiPartBodyWithFiles;
|
|
||||||
} else {
|
|
||||||
result += kMultiPartBodyWithoutFiles;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var headersString = '\n';
|
|
||||||
m.forEach((key, value) {
|
|
||||||
headersString += "\t\t\t\t'$key: $value', \n";
|
|
||||||
});
|
|
||||||
|
|
||||||
result += templateHeader.render({
|
|
||||||
"headers": headersString,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// contains the HTTP method associated with the request
|
|
||||||
var method = requestModel.method;
|
|
||||||
|
|
||||||
// contains the entire request body as a string if body is present
|
|
||||||
var requestBody = requestModel.requestBody;
|
|
||||||
|
|
||||||
//renders the request body
|
|
||||||
if (kMethodsWithBody.contains(method) && requestBody != null) {
|
|
||||||
var contentLength = utf8.encode(requestBody).length;
|
|
||||||
if (contentLength > 0) {
|
|
||||||
hasBody = true;
|
|
||||||
var templateBody = jj.Template(kTemplateBody);
|
|
||||||
result += templateBody.render({"body": requestBody});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//renders the request temlate
|
//renders the request temlate
|
||||||
var templateRequest = jj.Template(kTemplateRequest);
|
var templateRequestOptsInit = jj.Template(kTemplateRequestOptsInit);
|
||||||
result += templateRequest.render({
|
result += templateRequestOptsInit
|
||||||
"authority": uri.authority,
|
.render({'method': requestModel.method.name});
|
||||||
"method": httpMethod(method.name.toUpperCase()),
|
if (headers.isNotEmpty) {
|
||||||
"path": uri.path,
|
result += kStringHeaderOpt;
|
||||||
"queryParamsStr": hasQuery ? "queryParamsStr" : "",
|
}
|
||||||
});
|
|
||||||
|
|
||||||
if (hasBody || requestModel.hasFormData) {
|
if (hasBody || requestModel.hasFormData) {
|
||||||
result += kStringRequestBody;
|
result += kStringRequestBodyOpt;
|
||||||
}
|
}
|
||||||
|
|
||||||
//and of the request
|
//and of the request
|
||||||
@ -319,24 +168,4 @@ function build_data_files(\$boundary, \$fields, \$files)
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//function for http verb to curl mapping
|
|
||||||
String httpMethod(String methodName) {
|
|
||||||
switch (methodName) {
|
|
||||||
case "POST":
|
|
||||||
return "CURLOPT_POST";
|
|
||||||
case "GET":
|
|
||||||
return "CURLOPT_HTTPGET";
|
|
||||||
case "PUT":
|
|
||||||
return "CURLOPT_PUT";
|
|
||||||
case "DELETE":
|
|
||||||
return "CURLOPT_CUSTOMREQUEST";
|
|
||||||
case "PATCH":
|
|
||||||
return "CURLOPT_CUSTOMREQUEST";
|
|
||||||
case "HEAD":
|
|
||||||
return "CURLOPT_NOBODY";
|
|
||||||
default:
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -294,8 +294,8 @@ enum CodegenLanguage {
|
|||||||
javaAsyncHttpClient("Java (asynchttpclient)", "java", "java"),
|
javaAsyncHttpClient("Java (asynchttpclient)", "java", "java"),
|
||||||
javaHttpClient("Java (HttpClient)", "java", "java"),
|
javaHttpClient("Java (HttpClient)", "java", "java"),
|
||||||
juliaHttp("Julia (HTTP)", "julia", "jl"),
|
juliaHttp("Julia (HTTP)", "julia", "jl"),
|
||||||
phpGuzzle("PHP (guzzle)", "php", "php"),
|
phpCurl("PHP (cURL)", "php", "php"),
|
||||||
phpCurl("PHP (curl)", "php", "php");
|
phpGuzzle("PHP (guzzle)", "php", "php");
|
||||||
|
|
||||||
const CodegenLanguage(this.label, this.codeHighlightLang, this.ext);
|
const CodegenLanguage(this.label, this.codeHighlightLang, this.ext);
|
||||||
final String label;
|
final String label;
|
||||||
|
909
test/codegen/php_curl_codegen_test.dart
Normal file
909
test/codegen/php_curl_codegen_test.dart
Normal file
@ -0,0 +1,909 @@
|
|||||||
|
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'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev';
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet1, 'https'),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('GET 2', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/country/data';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'code' => 'US',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet2, 'https'),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('GET 3', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/country/data';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'code' => 'IND',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet3, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('GET 4', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/humanize/social';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'num' => '8700000',
|
||||||
|
'digits' => '3',
|
||||||
|
'system' => 'SS',
|
||||||
|
'add_space' => 'true',
|
||||||
|
'trailing_zeros' => 'true',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet4, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 5', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.github.com/repos/foss42/apidash';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet5, 'https'),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 6', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.github.com/repos/foss42/apidash';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'raw' => 'true',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet6, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 7', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev';
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet7, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 8', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.github.com/repos/foss42/apidash';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'raw' => 'true',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet8, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 9', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/humanize/social';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'num' => '8700000',
|
||||||
|
'add_space' => 'true',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet9, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 10', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/humanize/social';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet10, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 11', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/humanize/social';
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'num' => '8700000',
|
||||||
|
'digits' => '3',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet11, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 12', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/humanize/social';
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelGet12, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('HEAD Request', () {
|
||||||
|
test('HEAD 1', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev';
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'HEAD',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelHead1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('HEAD 2', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'http://api.apidash.dev';
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'HEAD',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelHead2, "http"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('POST Request', () {
|
||||||
|
test('POST 1', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/case/lower';
|
||||||
|
|
||||||
|
$request_body = '{
|
||||||
|
"text": "I LOVE Flutter"
|
||||||
|
}';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type: text/plain',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 2', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/case/lower';
|
||||||
|
|
||||||
|
$request_body = '{
|
||||||
|
"text": "I LOVE Flutter",
|
||||||
|
"flag": null,
|
||||||
|
"male": true,
|
||||||
|
"female": false,
|
||||||
|
"no": 1.2,
|
||||||
|
"arr": ["null", "true", "false", null]
|
||||||
|
}';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost2, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('POST 3', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/case/lower';
|
||||||
|
|
||||||
|
$request_body = '{
|
||||||
|
"text": "I LOVE Flutter"
|
||||||
|
}';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
'Content-Type: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost3, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 4', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/io/form';
|
||||||
|
|
||||||
|
$request_body = [
|
||||||
|
'text' => 'API',
|
||||||
|
'sep' => '|',
|
||||||
|
'times' => '3',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost4, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 5', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/io/form';
|
||||||
|
|
||||||
|
$request_body = [
|
||||||
|
'text' => 'API',
|
||||||
|
'sep' => '|',
|
||||||
|
'times' => '3',
|
||||||
|
];
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost5, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('POST 6', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/io/img';
|
||||||
|
|
||||||
|
$request_body = [
|
||||||
|
'token' => 'xyz',
|
||||||
|
'imfile' => new CURLFILE('/Documents/up/1.png'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost6, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('POST 7', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/io/img';
|
||||||
|
|
||||||
|
$request_body = [
|
||||||
|
'token' => 'xyz',
|
||||||
|
'imfile' => new CURLFILE('/Documents/up/1.png'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost7, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('POST 8', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/io/form';
|
||||||
|
|
||||||
|
$request_body = [
|
||||||
|
'text' => 'API',
|
||||||
|
'sep' => '|',
|
||||||
|
'times' => '3',
|
||||||
|
];
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'size' => '2',
|
||||||
|
'len' => '3',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost8, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('POST 9', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://api.apidash.dev/io/img';
|
||||||
|
|
||||||
|
$request_body = [
|
||||||
|
'token' => 'xyz',
|
||||||
|
'imfile' => new CURLFILE('/Documents/up/1.png'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'size' => '2',
|
||||||
|
'len' => '3',
|
||||||
|
];
|
||||||
|
$uri .= '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent: Test Agent',
|
||||||
|
'Keep-Alive: true',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPost9, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
group('PUT Request', () {
|
||||||
|
test('PUT 1', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://reqres.in/api/users/2';
|
||||||
|
|
||||||
|
$request_body = '{
|
||||||
|
"name": "morpheus",
|
||||||
|
"job": "zion resident"
|
||||||
|
}';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'PUT',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPut1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
group('PATCH Request', () {
|
||||||
|
test('PATCH 1', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://reqres.in/api/users/2';
|
||||||
|
|
||||||
|
$request_body = '{
|
||||||
|
"name": "marfeus",
|
||||||
|
"job": "accountant"
|
||||||
|
}';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'PATCH',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpCurl, requestModelPatch1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
group('DELETE Request', () {
|
||||||
|
test('DELETE 1', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://reqres.in/api/users/2';
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'DELETE',
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpCurl, requestModelDelete1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
test('DELETE 2', () {
|
||||||
|
const expectedCode = r'''<?php
|
||||||
|
|
||||||
|
$uri = 'https://reqres.in/api/users/2';
|
||||||
|
|
||||||
|
$request_body = '{
|
||||||
|
"name": "marfeus",
|
||||||
|
"job": "accountant"
|
||||||
|
}';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$request = curl_init($uri);
|
||||||
|
|
||||||
|
curl_setopt_array($request, [
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'DELETE',
|
||||||
|
CURLOPT_HTTPHEADER => $headers,
|
||||||
|
CURLOPT_POSTFIELDS => $request_body,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($request);
|
||||||
|
|
||||||
|
curl_close($request);
|
||||||
|
|
||||||
|
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
||||||
|
echo "Status Code: " . $httpCode . "\n";
|
||||||
|
echo $response . "\n";
|
||||||
|
''';
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpCurl, requestModelDelete2, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
Reference in New Issue
Block a user