mirror of
https://github.com/foss42/apidash.git
synced 2025-06-30 04:46:35 +08:00
Merge pull request #328 from ashutosh7i/Add_CodeGen_for_PHP_guzzle
Add code gen for php guzzle
This commit is contained in:
@ -1,21 +1,24 @@
|
|||||||
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 requestModelToHARJsonRequest, stripUrlParams;
|
show stripUrlParams;
|
||||||
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 PhpGuzzleCodeGen {
|
class PhpGuzzleCodeGen {
|
||||||
String kStringImportNode = """use GuzzleHttp\\Client;
|
String kTemplateImport = """<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\\Client;
|
||||||
use GuzzleHttp\\Psr7\\Request;
|
use GuzzleHttp\\Psr7\\Request;
|
||||||
{% if hasFormData %}use GuzzleHttp\\Psr7\\MultipartStream;{% endif %}
|
{% if hasFormData %}use GuzzleHttp\\Psr7\\MultipartStream;{% endif %}
|
||||||
|
|
||||||
|
|
||||||
""";
|
""";
|
||||||
|
|
||||||
String kMultiPartBodyTemplate = """
|
String kTemplateMultiPartBody = """
|
||||||
\$multipart = [
|
\$body = new MultipartStream([
|
||||||
{{fields_list}}
|
{{fields_list}}
|
||||||
];
|
]);
|
||||||
|
|
||||||
|
|
||||||
""";
|
""";
|
||||||
@ -38,119 +41,96 @@ use GuzzleHttp\\Psr7\\Request;
|
|||||||
""";
|
""";
|
||||||
|
|
||||||
String kTemplateBody = """
|
String kTemplateBody = """
|
||||||
\$body = {{body}};
|
\$body = <<<END
|
||||||
|
{{body}}
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
""";
|
""";
|
||||||
|
|
||||||
String kStringRequest = """
|
String kTemplateRequest = r"""
|
||||||
\$client = new Client();
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('{{method}}', '{{url}}'{{queryParams}}{{headers}}{{body}});
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
|
||||||
\$request = new Request('{{method}}', '{{url}}'{{queryParams}} {{headers}} {{body}});
|
|
||||||
\$res = \$client->sendAsync(\$request)->wait();
|
|
||||||
echo \$res->getBody();
|
|
||||||
""";
|
""";
|
||||||
|
|
||||||
String? getCode(RequestModel requestModel) {
|
String? getCode(RequestModel requestModel) {
|
||||||
try {
|
try {
|
||||||
jj.Template kNodejsImportTemplate = jj.Template(kStringImportNode);
|
var templateImport = jj.Template(kTemplateImport);
|
||||||
String importsData = kNodejsImportTemplate.render({
|
String importsData = templateImport.render({
|
||||||
"hasFormData": requestModel.hasFormData,
|
"hasFormData": requestModel.hasFormData,
|
||||||
});
|
});
|
||||||
|
|
||||||
String result = importsData;
|
String result = importsData;
|
||||||
|
|
||||||
if (requestModel.hasFormData && requestModel.formDataMapList.isNotEmpty) {
|
if (requestModel.hasFormData) {
|
||||||
var templateMultiPartBody = jj.Template(kMultiPartBodyTemplate);
|
var templateMultiPartBody = jj.Template(kTemplateMultiPartBody);
|
||||||
var renderedMultiPartBody = templateMultiPartBody.render({
|
var renderedMultiPartBody = templateMultiPartBody.render({
|
||||||
"fields_list": requestModel.formDataMapList.map((field) {
|
"fields_list": requestModel.formDataList.map((field) {
|
||||||
return '''
|
var row = '''
|
||||||
[
|
[
|
||||||
'name' => '${field['name']}',
|
'name' => '${field.name}',
|
||||||
'contents' => '${field['value']}'
|
'contents' => ${field.type == FormDataType.file? "fopen('${field.value}', 'r')":"'${field.value}'"}
|
||||||
],''';
|
]''';
|
||||||
}).join(),
|
return row;
|
||||||
|
}).join(",\n"),
|
||||||
});
|
});
|
||||||
result += renderedMultiPartBody;
|
result += renderedMultiPartBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
var harJson =
|
var params = requestModel.enabledParamsMap;
|
||||||
requestModelToHARJsonRequest(requestModel, useEnabled: true);
|
|
||||||
|
|
||||||
var params = harJson["queryString"];
|
|
||||||
if (params.isNotEmpty) {
|
if (params.isNotEmpty) {
|
||||||
var templateParams = jj.Template(kTemplateParams);
|
var templateParams = jj.Template(kTemplateParams);
|
||||||
var m = {};
|
List<String> paramList = [];
|
||||||
for (var i in params) {
|
params.forEach((key, value) {
|
||||||
m[i["name"]] = i["value"];
|
paramList.add("'$key' => '$value'");
|
||||||
}
|
|
||||||
var jsonString = '';
|
|
||||||
m.forEach((key, value) {
|
|
||||||
jsonString += "\t\t\t\t'$key' => '$value', \n";
|
|
||||||
});
|
});
|
||||||
jsonString = jsonString.substring(
|
|
||||||
0, jsonString.length - 2); // Removing trailing comma and space
|
|
||||||
result += templateParams.render({
|
result += templateParams.render({
|
||||||
"params": jsonString,
|
"params": paramList.join(",\n"),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var headers = harJson["headers"];
|
var headers = requestModel.enabledHeadersMap;
|
||||||
if (headers.isNotEmpty || requestModel.hasFormData) {
|
List<String> headerList = [];
|
||||||
|
if (headers.isNotEmpty || requestModel.hasBody) {
|
||||||
var templateHeader = jj.Template(kTemplateHeader);
|
var templateHeader = jj.Template(kTemplateHeader);
|
||||||
var m = {};
|
headers.forEach((key, value) {
|
||||||
for (var i in headers) {
|
headerList.add("'$key' => '$value'");
|
||||||
m[i["name"]] = i["value"];
|
|
||||||
}
|
|
||||||
var headersString = '';
|
|
||||||
m.forEach((key, value) {
|
|
||||||
headersString += "\t\t\t\t'$key' => '$value', \n";
|
|
||||||
});
|
});
|
||||||
if (requestModel.hasFormData) {
|
|
||||||
m[kHeaderContentType] = ContentType.formdata.header;
|
if(!requestModel.hasContentTypeHeader && requestModel.hasBody){
|
||||||
|
if(requestModel.hasJsonData || requestModel.hasTextData){
|
||||||
|
headerList.add("'$kHeaderContentType' => '${requestModel.requestBodyContentType.header}'");
|
||||||
|
}
|
||||||
|
if(requestModel.hasFormData){
|
||||||
|
headerList.add("'$kHeaderContentType' => '${requestModel.requestBodyContentType.header}; boundary=' . \$body->getBoundary()");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
headersString = headersString.substring(
|
|
||||||
0, headersString.length - 2); // Removing trailing comma and space
|
|
||||||
result += templateHeader.render({
|
result += templateHeader.render({
|
||||||
"headers": headersString,
|
"headers": headerList.join(",\n"),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var templateBody = jj.Template(kTemplateBody);
|
var templateBody = jj.Template(kTemplateBody);
|
||||||
if (requestModel.hasFormData && requestModel.formDataMapList.isNotEmpty) {
|
|
||||||
result += templateBody.render({
|
|
||||||
"body": "new MultipartStream(\$multipart)",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (harJson["postData"]?["text"] != null) {
|
if (requestModel.hasJsonData || requestModel.hasTextData) {
|
||||||
result += templateBody
|
result += templateBody
|
||||||
.render({"body": kEncoder.convert(harJson["postData"]["text"])});
|
.render({"body": requestModel.requestBody});
|
||||||
}
|
}
|
||||||
|
|
||||||
String getRequestBody(Map harJson) {
|
var templateRequest = jj.Template(kTemplateRequest);
|
||||||
if (harJson.containsKey("postData")) {
|
|
||||||
var postData = harJson["postData"];
|
|
||||||
if (postData.containsKey("mimeType")) {
|
|
||||||
var mimeType = postData["mimeType"];
|
|
||||||
if (mimeType == "text/plain" || mimeType == "application/json") {
|
|
||||||
return " \$body";
|
|
||||||
} else if (mimeType == "multipart/form-data") {
|
|
||||||
return " new MultipartStream(\$multipart)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ""; // Return empty string if postData or formdata is not present
|
|
||||||
}
|
|
||||||
|
|
||||||
var templateRequest = jj.Template(kStringRequest);
|
|
||||||
result += templateRequest.render({
|
result += templateRequest.render({
|
||||||
"url": stripUrlParams(requestModel.url),
|
"url": stripUrlParams(requestModel.url),
|
||||||
"method": harJson["method"].toLowerCase(),
|
"method": requestModel.method.name.toLowerCase(),
|
||||||
"queryParams":
|
"queryParams":
|
||||||
harJson["queryString"].isNotEmpty ? ". \$queryParamsStr," : "",
|
params.isNotEmpty ? ". \$queryParamsStr" : "",
|
||||||
"headers": harJson["headers"].isNotEmpty ? " \$headers," : "",
|
"headers": headerList.isNotEmpty ? ", \$headers" : "",
|
||||||
"body": getRequestBody(harJson),
|
"body": requestModel.hasBody? ", \$body" : "",
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
853
test/codegen/php_guzzle_codegen_test.dart
Normal file
853
test/codegen/php_guzzle_codegen_test.dart
Normal file
@ -0,0 +1,853 @@
|
|||||||
|
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
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev');
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 2', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'code' => 'US'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/country/data'. $queryParamsStr);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet2, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 3', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'code' => 'IND'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/country/data'. $queryParamsStr);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet3, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 4', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'num' => '8700000',
|
||||||
|
'digits' => '3',
|
||||||
|
'system' => 'SS',
|
||||||
|
'add_space' => 'true',
|
||||||
|
'trailing_zeros' => 'true'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/humanize/social'. $queryParamsStr);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet4, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 5', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent'
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.github.com/repos/foss42/apidash', $headers);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet5, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 6', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'raw' => 'true'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent'
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.github.com/repos/foss42/apidash'. $queryParamsStr, $headers);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet6, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 7', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev');
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet7, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 8', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'raw' => 'true'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent'
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.github.com/repos/foss42/apidash'. $queryParamsStr, $headers);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet8, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 9', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'num' => '8700000',
|
||||||
|
'add_space' => 'true'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/humanize/social'. $queryParamsStr);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelGet9, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 10', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent'
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/humanize/social', $headers);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle,
|
||||||
|
requestModelGet10,
|
||||||
|
"https",
|
||||||
|
),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 11', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'num' => '8700000',
|
||||||
|
'digits' => '3'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent'
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/humanize/social'. $queryParamsStr, $headers);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelGet11, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('GET 12', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('get', 'https://api.apidash.dev/humanize/social');
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelGet12, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('HEAD Request', () {
|
||||||
|
test('HEAD 1', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('head', 'https://api.apidash.dev');
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelHead1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('HEAD 2', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('head', 'http://api.apidash.dev');
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelHead2, "http"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('POST Request', () {
|
||||||
|
test('POST 1', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'text/plain'
|
||||||
|
];
|
||||||
|
|
||||||
|
$body = <<<END
|
||||||
|
{
|
||||||
|
"text": "I LOVE Flutter"
|
||||||
|
}
|
||||||
|
END;
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/case/lower', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 2', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'application/json'
|
||||||
|
];
|
||||||
|
|
||||||
|
$body = <<<END
|
||||||
|
{
|
||||||
|
"text": "I LOVE Flutter",
|
||||||
|
"flag": null,
|
||||||
|
"male": true,
|
||||||
|
"female": false,
|
||||||
|
"no": 1.2,
|
||||||
|
"arr": ["null", "true", "false", null]
|
||||||
|
}
|
||||||
|
END;
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/case/lower', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost2, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 3', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent',
|
||||||
|
'Content-Type' => 'application/json'
|
||||||
|
];
|
||||||
|
|
||||||
|
$body = <<<END
|
||||||
|
{
|
||||||
|
"text": "I LOVE Flutter"
|
||||||
|
}
|
||||||
|
END;
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/case/lower', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost3, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 4', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
|
|
||||||
|
$body = new MultipartStream([
|
||||||
|
[
|
||||||
|
'name' => 'text',
|
||||||
|
'contents' => 'API'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'sep',
|
||||||
|
'contents' => '|'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'times',
|
||||||
|
'contents' => '3'
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'multipart/form-data; boundary=' . $body->getBoundary()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/io/form', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost4, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 5', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
|
|
||||||
|
$body = new MultipartStream([
|
||||||
|
[
|
||||||
|
'name' => 'text',
|
||||||
|
'contents' => 'API'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'sep',
|
||||||
|
'contents' => '|'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'times',
|
||||||
|
'contents' => '3'
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent',
|
||||||
|
'Content-Type' => 'multipart/form-data; boundary=' . $body->getBoundary()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/io/form', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost5, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 6', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
|
|
||||||
|
$body = new MultipartStream([
|
||||||
|
[
|
||||||
|
'name' => 'token',
|
||||||
|
'contents' => 'xyz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'imfile',
|
||||||
|
'contents' => fopen('/Documents/up/1.png', 'r')
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'multipart/form-data; boundary=' . $body->getBoundary()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/io/img', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost6, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 7', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
|
|
||||||
|
$body = new MultipartStream([
|
||||||
|
[
|
||||||
|
'name' => 'token',
|
||||||
|
'contents' => 'xyz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'imfile',
|
||||||
|
'contents' => fopen('/Documents/up/1.png', 'r')
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'multipart/form-data; boundary=' . $body->getBoundary()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/io/img', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost7, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 8', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
|
|
||||||
|
$body = new MultipartStream([
|
||||||
|
[
|
||||||
|
'name' => 'text',
|
||||||
|
'contents' => 'API'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'sep',
|
||||||
|
'contents' => '|'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'times',
|
||||||
|
'contents' => '3'
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'size' => '2',
|
||||||
|
'len' => '3'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'multipart/form-data; boundary=' . $body->getBoundary()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/io/form'. $queryParamsStr, $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost8, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('POST 9', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
|
|
||||||
|
$body = new MultipartStream([
|
||||||
|
[
|
||||||
|
'name' => 'token',
|
||||||
|
'contents' => 'xyz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'imfile',
|
||||||
|
'contents' => fopen('/Documents/up/1.png', 'r')
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$queryParams = [
|
||||||
|
'size' => '2',
|
||||||
|
'len' => '3'
|
||||||
|
];
|
||||||
|
$queryParamsStr = '?' . http_build_query($queryParams);
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'User-Agent' => 'Test Agent',
|
||||||
|
'Keep-Alive' => 'true',
|
||||||
|
'Content-Type' => 'multipart/form-data; boundary=' . $body->getBoundary()
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('post', 'https://api.apidash.dev/io/img'. $queryParamsStr, $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPost9, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('PUT Request', () {
|
||||||
|
test('PUT 1', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'application/json'
|
||||||
|
];
|
||||||
|
|
||||||
|
$body = <<<END
|
||||||
|
{
|
||||||
|
"name": "morpheus",
|
||||||
|
"job": "zion resident"
|
||||||
|
}
|
||||||
|
END;
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('put', 'https://reqres.in/api/users/2', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(CodegenLanguage.phpGuzzle, requestModelPut1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('PATCH Request', () {
|
||||||
|
test('PATCH 1', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'application/json'
|
||||||
|
];
|
||||||
|
|
||||||
|
$body = <<<END
|
||||||
|
{
|
||||||
|
"name": "marfeus",
|
||||||
|
"job": "accountant"
|
||||||
|
}
|
||||||
|
END;
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('patch', 'https://reqres.in/api/users/2', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelPatch1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('DELETE Request', () {
|
||||||
|
test('DELETE 1', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('delete', 'https://reqres.in/api/users/2');
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelDelete1, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('DELETE 2', () {
|
||||||
|
const expectedCode = r"""<?php
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Type' => 'application/json'
|
||||||
|
];
|
||||||
|
|
||||||
|
$body = <<<END
|
||||||
|
{
|
||||||
|
"name": "marfeus",
|
||||||
|
"job": "accountant"
|
||||||
|
}
|
||||||
|
END;
|
||||||
|
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
$request = new Request('delete', 'https://reqres.in/api/users/2', $headers, $body);
|
||||||
|
$res = $client->sendAsync($request)->wait();
|
||||||
|
|
||||||
|
echo $res->getStatusCode() . "\n";
|
||||||
|
echo $res->getBody();
|
||||||
|
""";
|
||||||
|
expect(
|
||||||
|
codeGen.getCode(
|
||||||
|
CodegenLanguage.phpGuzzle, requestModelDelete2, "https"),
|
||||||
|
expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
Reference in New Issue
Block a user