Procházet zdrojové kódy

Display faker data as route parameter values

Marcel Pociot před 9 roky
rodič
revize
5150ad932c

+ 26 - 8
src/Mpociot/ApiDoc/ApiDocGenerator.php

@@ -143,12 +143,12 @@ class ApiDocGenerator
             case 'accepted':
                 $attributeData['required'] = true;
                 $attributeData['type'] = 'boolean';
-                $attributeData['value'] = $faker->url;
+                $attributeData['value'] = true;
                 break;
             case 'after':
                 $attributeData['type'] = 'date';
                 $attributeData['description'][] = 'Must be a date after: `' . date(DATE_RFC850, strtotime($parameters[0])) . '`';
-                $attributeData['value'] = date(DATE_RFC850, strtotime('+1 day',strtotime($parameters[0])));
+                $attributeData['value'] = date(DATE_RFC850, strtotime('+1 day', strtotime($parameters[0])));
                 break;
             case 'alpha':
                 $attributeData['description'][] = 'Only alphabetic characters allowed';
@@ -182,7 +182,7 @@ class ApiDocGenerator
             case 'before':
                 $attributeData['type'] = 'date';
                 $attributeData['description'][] = 'Must be a date preceding: `' . date(DATE_RFC850, strtotime($parameters[0])) . '`';
-                $attributeData['value'] = date(DATE_RFC850, strtotime('-1 day',strtotime($parameters[0])));
+                $attributeData['value'] = date(DATE_RFC850, strtotime('-1 day', strtotime($parameters[0])));
                 break;
             case 'date_format':
                 $attributeData['type'] = 'date';
@@ -207,7 +207,7 @@ class ApiDocGenerator
             case 'json':
                 $attributeData['type'] = 'string';
                 $attributeData['description'][] = 'Must be a valid JSON string.';
-                $attributeData['value'] = json_encode(['foo','bar','baz']);
+                $attributeData['value'] = json_encode(['foo', 'bar', 'baz']);
                 break;
             case 'mimetypes':
             case 'mimes':
@@ -253,27 +253,45 @@ class ApiDocGenerator
                 $attributeData['description'][] = 'Must match this regular expression: `' . $parameters[0] . '`';
                 break;
             case 'boolean':
-                $attributeData['value'] = $faker->boolean();
+                $attributeData['value'] = true;
+                $attributeData['type'] = $rule;
+                break;
             case 'array':
                 $attributeData['value'] = $faker->word;
+                $attributeData['type'] = $rule;
+                break;
             case 'date':
                 $attributeData['value'] = $faker->date();
+                $attributeData['type'] = $rule;
+                break;
             case 'email':
                 $attributeData['value'] = $faker->safeEmail;
+                $attributeData['type'] = $rule;
+                break;
             case 'string':
                 $attributeData['value'] = $faker->word;
+                $attributeData['type'] = $rule;
+                break;
             case 'integer':
                 $attributeData['value'] = $faker->randomNumber();
+                $attributeData['type'] = $rule;
+                break;
             case 'numeric':
                 $attributeData['value'] = $faker->randomNumber();
+                $attributeData['type'] = $rule;
+                break;
             case 'url':
                 $attributeData['value'] = $faker->url;
+                $attributeData['type'] = $rule;
+                break;
             case 'ip':
+                $attributeData['value'] = $faker->ipv4;
                 $attributeData['type'] = $rule;
                 break;
-            default:
-                $attributeData['value'] = $faker->word;
-            break;
+        }
+
+        if ($attributeData['value'] === '') {
+            $attributeData['value'] = $faker->word;
         }
     }
 

+ 44 - 44
src/resources/views/documentarian.blade.php

@@ -2,8 +2,8 @@
 title: API Reference
 
 language_tabs:
-- bash
 - javascript
+- bash
 
 includes:
 
@@ -19,67 +19,67 @@ Welcome to the generated API reference.
 
 # Available routes
 @foreach($parsedRoutes as $parsedRoute)
-@if($parsedRoute['title'] != '')## {{ $parsedRoute['title']}}
-@else## {{$parsedRoute['uri']}}
-@endif
-@if($parsedRoute['description'])
+    @if($parsedRoute['title'] != '')## {{ $parsedRoute['title']}}
+    @else## {{$parsedRoute['uri']}}
+    @endif
+    @if($parsedRoute['description'])
 
-{{$parsedRoute['description']}}
-@endif
+        {{$parsedRoute['description']}}
+    @endif
 
-> Example request:
+    > Example request:
 
-```bash
-curl "{{config('app.url')}}/{{$parsedRoute['uri']}}" \
--H "Accept: application/json"@if(count($parsedRoute['parameters'])) \
-@foreach($parsedRoute['parameters'] as $attribute => $parameter)
--d "{{$attribute}}"="{{$parameter['value']}}" \
-@endforeach
-@endif
+    ```bash
+    curl "{{config('app.url')}}/{{$parsedRoute['uri']}}" \
+    -H "Accept: application/json"@if(count($parsedRoute['parameters'])) \
+    @foreach($parsedRoute['parameters'] as $attribute => $parameter)
+        -d "{{$attribute}}"="{{$parameter['value']}}" \
+    @endforeach
+    @endif
 
-```
+    ```
 
-```javascript
-var settings = {
+    ```javascript
+    var settings = {
     "async": true,
     "crossDomain": true,
     "url": "{{config('app.url')}}/{{$parsedRoute['uri']}}",
     "method": "{{$parsedRoute['methods'][0]}}",
-@if(count($parsedRoute['parameters']))
-    "data": {!! str_replace('    ','        ',json_encode(array_fill_keys(array_keys($parsedRoute['parameters']), 'dummy'), JSON_PRETTY_PRINT)) !!},
-@endif
+    @if(count($parsedRoute['parameters']))
+        "data": {!! str_replace('    ','        ',json_encode(array_combine(array_keys($parsedRoute['parameters']), array_map(function($param){ return $param['value']; },$parsedRoute['parameters'])), JSON_PRETTY_PRINT)) !!},
+    @endif
     "headers": {
-        "accept": "application/json"
+    "accept": "application/json"
+    }
     }
-}
 
-$.ajax(settings).done(function (response) {
+    $.ajax(settings).done(function (response) {
     console.log(response);
-});
-```
+    });
+    ```
 
-@if(in_array('GET',$parsedRoute['methods']))
-> Example response:
+    @if(in_array('GET',$parsedRoute['methods']))
+        > Example response:
 
-```json
-{!! $parsedRoute['response'] !!}
-```
-@endif
+        ```json
+        {!! $parsedRoute['response'] !!}
+        ```
+    @endif
 
-### HTTP Request
-@foreach($parsedRoute['methods'] as $method)
-`{{$method}} {{$parsedRoute['uri']}}`
+    ### HTTP Request
+    @foreach($parsedRoute['methods'] as $method)
+        `{{$method}} {{$parsedRoute['uri']}}`
 
-@endforeach
-@if(count($parsedRoute['parameters']))
+    @endforeach
+    @if(count($parsedRoute['parameters']))
 
-#### Parameters
+        #### Parameters
 
-Parameter | Type | Status | Description
---------- | ------- | ------- | ------- | -----------
-@foreach($parsedRoute['parameters'] as $attribute => $parameter)
-{{$attribute}} | {{$parameter['type']}} | @if($parameter['required']) required @else optional @endif | {!! implode(' ',$parameter['description']) !!}
-@endforeach
-@endif
+        Parameter | Type | Status | Description
+        --------- | ------- | ------- | ------- | -----------
+        @foreach($parsedRoute['parameters'] as $attribute => $parameter)
+            {{$attribute}} | {{$parameter['type']}} | @if($parameter['required']) required @else optional @endif | {!! implode(' ',$parameter['description']) !!}
+        @endforeach
+    @endif
 
 @endforeach