@@ -37,6 +37,16 @@ class SwaggerService
3737 private $ item ;
3838 private $ security ;
3939
40+ protected $ rulesOfTypes = [
41+ 'array ' => 'object ' ,
42+ 'boolean ' => 'boolean ' ,
43+ 'date ' => 'date ' ,
44+ 'digits ' => 'integer ' ,
45+ 'integer ' => 'integer ' ,
46+ 'numeric ' => 'double ' ,
47+ 'string ' => 'string '
48+ ];
49+
4050 public function __construct (Container $ container )
4151 {
4252 $ this ->initConfig ();
@@ -313,22 +323,27 @@ protected function saveParameters($request, array $annotations)
313323 $ formRequest ->setUserResolver ($ this ->request ->getUserResolver ());
314324 $ formRequest ->setRouteResolver ($ this ->request ->getRouteResolver ());
315325 $ rules = method_exists ($ formRequest , 'rules ' ) ? $ formRequest ->rules () : [];
326+ $ attributes = method_exists ($ formRequest , 'attributes ' ) ? $ formRequest ->attributes () : [];
316327
317328 $ actionName = $ this ->getActionName ($ this ->uri );
318329
319330 if (in_array ($ this ->method , ['get ' , 'delete ' ])) {
320- $ this ->saveGetRequestParameters ($ rules , $ annotations );
331+ $ this ->saveGetRequestParameters ($ rules , $ attributes , $ annotations );
321332 } else {
322- $ this ->savePostRequestParameters ($ actionName , $ rules , $ annotations );
333+ $ this ->savePostRequestParameters ($ actionName , $ rules , $ attributes , $ annotations );
323334 }
324335 }
325336
326- protected function saveGetRequestParameters ($ rules , array $ annotations )
337+ protected function saveGetRequestParameters ($ rules , array $ attributes , array $ annotations )
327338 {
328339 foreach ($ rules as $ parameter => $ rule ) {
329340 $ validation = explode ('| ' , $ rule );
330341
331- $ description = Arr::get ($ annotations , $ parameter , implode (', ' , $ validation ));
342+ $ description = Arr::get ($ annotations , $ parameter );
343+
344+ if (empty ($ description )) {
345+ $ description = Arr::get ($ attributes , $ parameter , implode (', ' , $ validation ));
346+ }
332347
333348 $ existedParameter = Arr::first ($ this ->item ['parameters ' ], function ($ existedParameter ) use ($ parameter ) {
334349 return $ existedParameter ['name ' ] == $ parameter ;
@@ -350,7 +365,7 @@ protected function saveGetRequestParameters($rules, array $annotations)
350365 }
351366 }
352367
353- protected function savePostRequestParameters ($ actionName , $ rules , array $ annotations )
368+ protected function savePostRequestParameters ($ actionName , $ rules , array $ attributes , array $ annotations )
354369 {
355370 if ($ this ->requestHasMoreProperties ($ actionName )) {
356371 if ($ this ->requestHasBody ()) {
@@ -365,25 +380,32 @@ protected function savePostRequestParameters($actionName, $rules, array $annotat
365380 ];
366381 }
367382
368- $ this ->saveDefinitions ($ actionName , $ rules , $ annotations );
383+ $ this ->saveDefinitions ($ actionName , $ rules , $ attributes , $ annotations );
369384 }
370385 }
371386
372- protected function saveDefinitions ($ objectName , $ rules , array $ annotations )
387+ protected function saveDefinitions ($ objectName , $ rules , $ attributes , array $ annotations )
373388 {
374389 $ data = [
375390 'type ' => 'object ' ,
376391 'properties ' => []
377392 ];
393+
378394 foreach ($ rules as $ parameter => $ rule ) {
379395 $ rulesArray = (is_array ($ rule )) ? $ rule : explode ('| ' , $ rule );
380396 $ parameterType = $ this ->getParameterType ($ rulesArray );
381397 $ this ->saveParameterType ($ data , $ parameter , $ parameterType );
382- $ this ->saveParameterDescription ($ data , $ parameter , $ rulesArray , $ annotations );
398+
399+ $ uselessRules = $ this ->rulesOfTypes ;
400+ $ uselessRules ['required ' ] = 'required ' ;
383401
384402 if (in_array ('required ' , $ rulesArray )) {
385403 $ data ['required ' ][] = $ parameter ;
386404 }
405+
406+ $ rulesArray = array_diff_key (array_flip ($ rulesArray ), $ uselessRules );
407+
408+ $ this ->saveParameterDescription ($ data , $ parameter , $ rulesArray , $ attributes , $ annotations );
387409 }
388410
389411 $ data ['example ' ] = $ this ->generateExample ($ data ['properties ' ]);
@@ -392,16 +414,8 @@ protected function saveDefinitions($objectName, $rules, array $annotations)
392414
393415 protected function getParameterType (array $ validation ): string
394416 {
395- $ validationRules = [
396- 'array ' => 'object ' ,
397- 'boolean ' => 'boolean ' ,
398- 'date ' => 'date ' ,
399- 'digits ' => 'integer ' ,
400- 'email ' => 'string ' ,
401- 'integer ' => 'integer ' ,
402- 'numeric ' => 'double ' ,
403- 'string ' => 'string '
404- ];
417+ $ validationRules = $ this ->rulesOfTypes ;
418+ $ validationRules ['email ' ] = 'string ' ;
405419
406420 $ parameterType = 'string ' ;
407421
@@ -421,9 +435,14 @@ protected function saveParameterType(&$data, $parameter, $parameterType)
421435 ];
422436 }
423437
424- protected function saveParameterDescription (&$ data , $ parameter , array $ rulesArray , array $ annotations )
438+ protected function saveParameterDescription (&$ data , $ parameter , array $ rulesArray , array $ attributes , array $ annotations )
425439 {
426- $ description = Arr::get ($ annotations , $ parameter , implode (', ' , $ rulesArray ));
440+ $ description = Arr::get ($ annotations , $ parameter );
441+
442+ if (empty ($ description )) {
443+ $ description = Arr::get ($ attributes , $ parameter , implode (', ' , $ rulesArray ));
444+ }
445+
427446 $ data ['properties ' ][$ parameter ]['description ' ] = $ description ;
428447 }
429448
0 commit comments