@@ -520,6 +520,10 @@ public function getDefinitions(): array
520520 $ model ['properties ' ][$ name ]['description ' ] = $ def ['description ' ] ?? '' ;
521521 $ model ['properties ' ][$ name ]['example ' ] = $ def ['x-example ' ] ?? null ;
522522 $ model ['properties ' ][$ name ]['required ' ] = in_array ($ name , $ model ['required ' ]);
523+ if (isset ($ def ['$ref ' ])) {
524+ $ model ['properties ' ][$ name ]['sub_schema ' ] = str_replace ('#/definitions/ ' , '' , $ def ['$ref ' ]);
525+ }
526+
523527 if (isset ($ def ['items ' ]['$ref ' ])) {
524528 //nested model
525529 $ model ['properties ' ][$ name ]['sub_schema ' ] = str_replace ('#/definitions/ ' , '' , $ def ['items ' ]['$ref ' ]);
@@ -540,6 +544,10 @@ public function getDefinitions(): array
540544 $ model ['properties ' ][$ name ]['enum ' ] = $ def ['enum ' ];
541545 $ model ['properties ' ][$ name ]['enumName ' ] = $ def ['x-enum-name ' ] ?? ucfirst ($ key ) . ucfirst ($ name );
542546 $ model ['properties ' ][$ name ]['enumKeys ' ] = $ def ['x-enum-keys ' ] ?? [];
547+ } elseif (($ model ['properties ' ][$ name ]['type ' ] ?? null ) === 'array ' && isset ($ def ['items ' ]['enum ' ])) {
548+ $ model ['properties ' ][$ name ]['enumValues ' ] = $ def ['items ' ]['enum ' ];
549+ $ model ['properties ' ][$ name ]['enumName ' ] = $ def ['items ' ]['x-enum-name ' ] ?? ucfirst ($ key ) . ucfirst ($ name );
550+ $ model ['properties ' ][$ name ]['enumKeys ' ] = $ def ['items ' ]['x-enum-keys ' ] ?? [];
543551 }
544552 }
545553 }
@@ -574,6 +582,10 @@ public function getRequestModels(): array
574582 $ model ['properties ' ][$ name ]['description ' ] = $ def ['description ' ] ?? '' ;
575583 $ model ['properties ' ][$ name ]['example ' ] = $ def ['x-example ' ] ?? null ;
576584 $ model ['properties ' ][$ name ]['required ' ] = in_array ($ name , $ model ['required ' ]);
585+ if (isset ($ def ['$ref ' ])) {
586+ $ model ['properties ' ][$ name ]['sub_schema ' ] = str_replace ('#/definitions/ ' , '' , $ def ['$ref ' ]);
587+ }
588+
577589 if (isset ($ def ['items ' ]['$ref ' ])) {
578590 $ model ['properties ' ][$ name ]['sub_schema ' ] = str_replace ('#/definitions/ ' , '' , $ def ['items ' ]['$ref ' ]);
579591 }
@@ -590,6 +602,10 @@ public function getRequestModels(): array
590602 $ model ['properties ' ][$ name ]['enum ' ] = $ def ['enum ' ];
591603 $ model ['properties ' ][$ name ]['enumName ' ] = $ def ['x-enum-name ' ] ?? ucfirst ($ key ) . ucfirst ($ name );
592604 $ model ['properties ' ][$ name ]['enumKeys ' ] = $ def ['x-enum-keys ' ] ?? [];
605+ } elseif (($ model ['properties ' ][$ name ]['type ' ] ?? null ) === 'array ' && isset ($ def ['items ' ]['enum ' ])) {
606+ $ model ['properties ' ][$ name ]['enumValues ' ] = $ def ['items ' ]['enum ' ];
607+ $ model ['properties ' ][$ name ]['enumName ' ] = $ def ['items ' ]['x-enum-name ' ] ?? ucfirst ($ key ) . ucfirst ($ name );
608+ $ model ['properties ' ][$ name ]['enumKeys ' ] = $ def ['items ' ]['x-enum-keys ' ] ?? [];
593609 }
594610 }
595611 }
@@ -651,7 +667,9 @@ public function getResponseEnums(): array
651667
652668 // array of enums
653669 if ((($ property ['type ' ] ?? null ) === 'array ' ) && isset ($ property ['items ' ]['enum ' ])) {
654- $ enumName = $ property ['x-enum-name ' ] ?? ucfirst ($ modelName ) . ucfirst ($ propertyName );
670+ $ enumName = $ property ['items ' ]['x-enum-name ' ]
671+ ?? $ property ['enumName ' ]
672+ ?? ucfirst ($ modelName ) . ucfirst ($ propertyName );
655673
656674 if (!isset ($ list [$ enumName ])) {
657675 $ list [$ enumName ] = [
@@ -668,6 +686,48 @@ public function getResponseEnums(): array
668686 return \array_values ($ list );
669687 }
670688
689+ /**
690+ * @return array
691+ */
692+ public function getRequestModelEnums (): array
693+ {
694+ $ list = [];
695+
696+ foreach ($ this ->getRequestModels () as $ modelName => $ model ) {
697+ if (!isset ($ model ['properties ' ]) || !is_array ($ model ['properties ' ])) {
698+ continue ;
699+ }
700+
701+ foreach ($ model ['properties ' ] as $ propertyName => $ property ) {
702+ if (isset ($ property ['enum ' ])) {
703+ $ enumName = $ property ['enumName ' ] ?? ucfirst ($ modelName ) . ucfirst ($ propertyName );
704+
705+ if (!isset ($ list [$ enumName ])) {
706+ $ list [$ enumName ] = [
707+ 'name ' => $ enumName ,
708+ 'enum ' => $ property ['enum ' ],
709+ 'keys ' => $ property ['enumKeys ' ] ?? [],
710+ ];
711+ }
712+ }
713+
714+ if ((($ property ['type ' ] ?? null ) === 'array ' ) && isset ($ property ['enumValues ' ])) {
715+ $ enumName = $ property ['enumName ' ] ?? ucfirst ($ modelName ) . ucfirst ($ propertyName );
716+
717+ if (!isset ($ list [$ enumName ])) {
718+ $ list [$ enumName ] = [
719+ 'name ' => $ enumName ,
720+ 'enum ' => $ property ['enumValues ' ],
721+ 'keys ' => $ property ['enumKeys ' ] ?? [],
722+ ];
723+ }
724+ }
725+ }
726+ }
727+
728+ return \array_values ($ list );
729+ }
730+
671731 /**
672732 * @return array
673733 */
@@ -677,6 +737,9 @@ public function getAllEnums(): array
677737 foreach ($ this ->getRequestEnums () as $ enum ) {
678738 $ list [$ enum ['name ' ]] = $ enum ;
679739 }
740+ foreach ($ this ->getRequestModelEnums () as $ enum ) {
741+ $ list [$ enum ['name ' ]] = $ enum ;
742+ }
680743 foreach ($ this ->getResponseEnums () as $ enum ) {
681744 $ list [$ enum ['name ' ]] = $ enum ;
682745 }
0 commit comments