Merge pull request #328 from ashutosh7i/Add_CodeGen_for_PHP_guzzle

Add code gen for php guzzle
This commit is contained in:
Ashita Prasad
2024-04-14 21:22:06 +05:30
committed by GitHub
2 changed files with 909 additions and 76 deletions

View File

@ -1,21 +1,24 @@
import 'package:jinja/jinja.dart' as jj;
import 'package:apidash/utils/utils.dart'
show requestModelToHARJsonRequest, stripUrlParams;
show stripUrlParams;
import 'package:apidash/models/models.dart' show RequestModel;
import 'package:apidash/consts.dart';
class PhpGuzzleCodeGen {
String kStringImportNode = """use GuzzleHttp\\Client;
String kTemplateImport = """<?php
require_once 'vendor/autoload.php';
use GuzzleHttp\\Client;
use GuzzleHttp\\Psr7\\Request;
{% if hasFormData %}use GuzzleHttp\\Psr7\\MultipartStream;{% endif %}
""";
String kMultiPartBodyTemplate = """
\$multipart = [
String kTemplateMultiPartBody = """
\$body = new MultipartStream([
{{fields_list}}
];
]);
""";
@ -38,119 +41,96 @@ use GuzzleHttp\\Psr7\\Request;
""";
String kTemplateBody = """
\$body = {{body}};
\$body = <<<END
{{body}}
END;
""";
String kStringRequest = """
\$client = new Client();
String kTemplateRequest = r"""
$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) {
try {
jj.Template kNodejsImportTemplate = jj.Template(kStringImportNode);
String importsData = kNodejsImportTemplate.render({
var templateImport = jj.Template(kTemplateImport);
String importsData = templateImport.render({
"hasFormData": requestModel.hasFormData,
});
String result = importsData;
if (requestModel.hasFormData && requestModel.formDataMapList.isNotEmpty) {
var templateMultiPartBody = jj.Template(kMultiPartBodyTemplate);
if (requestModel.hasFormData) {
var templateMultiPartBody = jj.Template(kTemplateMultiPartBody);
var renderedMultiPartBody = templateMultiPartBody.render({
"fields_list": requestModel.formDataMapList.map((field) {
return '''
"fields_list": requestModel.formDataList.map((field) {
var row = '''
[
'name' => '${field['name']}',
'contents' => '${field['value']}'
],''';
}).join(),
'name' => '${field.name}',
'contents' => ${field.type == FormDataType.file? "fopen('${field.value}', 'r')":"'${field.value}'"}
]''';
return row;
}).join(",\n"),
});
result += renderedMultiPartBody;
}
var harJson =
requestModelToHARJsonRequest(requestModel, useEnabled: true);
var params = harJson["queryString"];
var params = requestModel.enabledParamsMap;
if (params.isNotEmpty) {
var templateParams = jj.Template(kTemplateParams);
var m = {};
for (var i in params) {
m[i["name"]] = i["value"];
}
var jsonString = '';
m.forEach((key, value) {
jsonString += "\t\t\t\t'$key' => '$value', \n";
List<String> paramList = [];
params.forEach((key, value) {
paramList.add("'$key' => '$value'");
});
jsonString = jsonString.substring(
0, jsonString.length - 2); // Removing trailing comma and space
result += templateParams.render({
"params": jsonString,
"params": paramList.join(",\n"),
});
}
var headers = harJson["headers"];
if (headers.isNotEmpty || requestModel.hasFormData) {
var headers = requestModel.enabledHeadersMap;
List<String> headerList = [];
if (headers.isNotEmpty || requestModel.hasBody) {
var templateHeader = jj.Template(kTemplateHeader);
var m = {};
for (var i in headers) {
m[i["name"]] = i["value"];
}
var headersString = '';
m.forEach((key, value) {
headersString += "\t\t\t\t'$key' => '$value', \n";
headers.forEach((key, value) {
headerList.add("'$key' => '$value'");
});
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({
"headers": headersString,
"headers": headerList.join(",\n"),
});
}
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
.render({"body": kEncoder.convert(harJson["postData"]["text"])});
.render({"body": requestModel.requestBody});
}
String getRequestBody(Map harJson) {
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);
var templateRequest = jj.Template(kTemplateRequest);
result += templateRequest.render({
"url": stripUrlParams(requestModel.url),
"method": harJson["method"].toLowerCase(),
"method": requestModel.method.name.toLowerCase(),
"queryParams":
harJson["queryString"].isNotEmpty ? ". \$queryParamsStr," : "",
"headers": harJson["headers"].isNotEmpty ? " \$headers," : "",
"body": getRequestBody(harJson),
params.isNotEmpty ? ". \$queryParamsStr" : "",
"headers": headerList.isNotEmpty ? ", \$headers" : "",
"body": requestModel.hasBody? ", \$body" : "",
});
return result;

View 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);
});
});
}