Skip to content

Commit

Permalink
Merge branch 'knuckleswtf:master' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
zfhassaan authored Sep 13, 2023
2 parents 33aa3a6 + b32959d commit 1cda54b
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 8 deletions.
5 changes: 3 additions & 2 deletions config/scribe.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
'description' => '',

/*
* The base URL displayed in the docs. If this is empty, Scribe will use the value of config('app.url').
* The base URL displayed in the docs. If this is empty, Scribe will use the value of config('app.url') at generation time.
* If you're using `laravel`` type, you can set this to a dynamic string, like '{{ config("app.tenant_url") }}' to get a dynamic base URL.
*/
'base_url' => null,

Expand Down Expand Up @@ -189,7 +190,7 @@

/**
* The base URL for the API tester to use (for example, you can set this to your staging URL).
* Leave as null to use the current app URL (config(app.url)).
* Leave as null to use the current app URL when generating (config("app.url")).
*/
'base_url' => null,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
@endphp
```bash
curl --request {{$endpoint->httpMethods[0]}} \
{{$endpoint->httpMethods[0] == 'GET' ? '--get ' : ''}}"{{ rtrim($baseUrl, '/')}}/{{ ltrim($endpoint->boundUri, '/') }}@if(count($endpoint->cleanQueryParameters))?{!! u::printQueryParamsAsString($endpoint->cleanQueryParameters) !!}@endif"@if(count($endpoint->headers)) \
{{$endpoint->httpMethods[0] == 'GET' ? '--get ' : ''}}"{!! rtrim($baseUrl, '/') !!}/{{ ltrim($endpoint->boundUri, '/') }}@if(count($endpoint->cleanQueryParameters))?{!! u::printQueryParamsAsString($endpoint->cleanQueryParameters) !!}@endif"@if(count($endpoint->headers)) \
@foreach($endpoint->headers as $header => $value)
--header "{{$header}}: {{ addslashes($value) }}"@if(! ($loop->last) || ($loop->last && count($endpoint->bodyParameters))) \
@endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
@endphp
```javascript
const url = new URL(
"{{ rtrim($baseUrl, '/') }}/{{ ltrim($endpoint->boundUri, '/') }}"
"{!! rtrim($baseUrl, '/') !!}/{{ ltrim($endpoint->boundUri, '/') }}"
);
@if(count($endpoint->cleanQueryParameters))

Expand Down Expand Up @@ -53,7 +53,7 @@
body,
@elseif(count($endpoint->cleanBodyParameters))
@if ($endpoint->headers['Content-Type'] == 'application/x-www-form-urlencoded')
body: body,
body,
@else
body: JSON.stringify(body),
@endif
Expand Down
5 changes: 3 additions & 2 deletions resources/views/partials/example-requests/php.md.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
@endphp
```php
$client = new \GuzzleHttp\Client();
$url = '{!! rtrim($baseUrl, '/') . '/' . ltrim($endpoint->boundUri, '/') !!}';
@if($endpoint->hasHeadersOrQueryOrBodyParams())
$response = $client->{{ strtolower($endpoint->httpMethods[0]) }}(
'{{ rtrim($baseUrl, '/') . '/' . ltrim($endpoint->boundUri, '/') }}',
$url,
[
@if(!empty($endpoint->headers))
'headers' => {!! u::printPhpValue($endpoint->headers, 8) !!},
Expand Down Expand Up @@ -43,7 +44,7 @@
]
);
@else
$response = $client->{{ strtolower($endpoint->httpMethods[0]) }}('{{ rtrim($baseUrl, '/') . '/' . ltrim($endpoint->boundUri, '/') }}');
$response = $client->{{ strtolower($endpoint->httpMethods[0]) }}($url);
@endif
$body = $response->getBody();
print_r(json_decode((string) $body));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import requests
import json

url = '{{ rtrim($baseUrl, '/') }}/{{ $endpoint->boundUri }}'
url = '{!! rtrim($baseUrl, '/') !!}/{{ $endpoint->boundUri }}'
@if($endpoint->hasFiles() || (isset($endpoint->headers['Content-Type']) && $endpoint->headers['Content-Type'] == 'multipart/form-data' && count($endpoint->cleanBodyParameters)))
files = {
@foreach($endpoint->cleanBodyParameters as $parameter => $value)
Expand Down
4 changes: 4 additions & 0 deletions src/Tools/WritingUtils.php
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,10 @@ public static function getSampleBody(array $nestedBodyParameters)

return array_map(function ($param) {
if (!empty($param['__fields'])) {
if ($param['type'] === 'object[]') {
return [self::getSampleBody($param['__fields'])];
}

return self::getSampleBody($param['__fields']);
}

Expand Down
76 changes: 76 additions & 0 deletions tests/Unit/WritingUtilsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,25 @@ public function print_query_params_as_string_bash()
$this->assertEquals($expected, $queryParams);
}

/** @test */
public function get_sample_body_with_array_fields()
{
$sampleBody = WritingUtils::getSampleBody($this->bodyParamsWithArrayFields());

$expected = [
'name' => 'Experience Form',
'fields' => [
[
'name' => 'experience',
'label' => 'Experience',
'type' => 'textarea',
'order' => 1,
],
],
];
$this->assertEquals($expected, $sampleBody);
}

private function queryParams(): array
{
return [
Expand All @@ -99,6 +118,63 @@ private function queryParams(): array
];
}

private function bodyParamsWithArrayFields(): array
{
return [
'name' => [
'name' => 'name',
'description' => 'Form\'s name',
'required' => true,
'example' => 'Experience Form',
'type' => 'string',
'custom' => [],
'__fields' => [],
],
'fields' => [
'name' => 'fields',
'description' => 'Form\'s fields',
'required' => false,
'example' => [[]],
'type' => 'object[]',
'custom' => [],
'__fields' => [
'name' => [
'name' => 'fields[].name',
'description' => 'Field\'s name',
'required' => true,
'example' => 'experience',
'type' => 'string',
'custom' => [],
],
'label' => [
'name' => 'fields[].label',
'description' => 'Field\'s label',
'required' => true,
'example' => 'Experience',
'type' => 'string',
'custom' => [],
],
'type' => [
'name' => 'fields[].type',
'description' => 'Field\'s type',
'required' => true,
'example' => 'textarea',
'type' => 'string',
'custom' => [],
],
'order' => [
'name' => 'fields[].order',
'description' => 'Field\'s order',
'required' => true,
'example' => 1,
'type' => 'number',
'custom' => [],
],
],
],
];
}

protected function assertStringsEqualNormalizingNewlines(string $expected, string $actual)
{
$this->assertEquals(str_replace("\r", "", $expected), str_replace("\r", "", $actual));
Expand Down

0 comments on commit 1cda54b

Please sign in to comment.