1010use cebe \openapi \SpecBaseObject ;
1111
1212/**
13- * Lists the required security schemes to execute this operation.
13+ * Lists the required security requirement to execute this operation.
1414 *
1515 * @link https://github.com/OAI/OpenAPI-Specification/blob/3.0.2/versions/3.0.2.md#securityRequirementObject
1616 * TODO docs
@@ -22,19 +22,27 @@ class SecurityRequirements extends SpecBaseObject
2222 public function __construct (array $ data )
2323 {
2424 parent ::__construct ($ data );
25- $ this ->_securityRequirements = $ data ;
25+
26+ $ read = true ;
27+ foreach ($ data as $ index => $ value ) {
28+ if (is_numeric ($ index )) { // read
29+ $ requirements = $ value ;
30+ $ this ->_securityRequirements [array_keys ($ value )[0 ]] = new SecurityRequirement (array_values ($ value )[0 ]);
31+ } else { // write
32+ $ read = false ;
33+ $ requirements = $ data ;
34+ $ this ->_securityRequirements [$ index ] = $ value ;
35+ }
36+ }
2637 }
2738
2839 /**
2940 * @return array array of attributes available in this object.
3041 */
3142 protected function attributes (): array
3243 {
33- // (Type::STRING => Type::ANY)[]
34-
3544 // this object does not have a fixed set of attribute names
3645 return [];
37- // return [Type::STRING, SecurityRequirement::class];
3846 }
3947
4048 /**
@@ -54,10 +62,15 @@ protected function performValidation()
5462 public function getSerializableData ()
5563 {
5664 $ data = [];
57- foreach ($ this ->_securityRequirements as $ name => $ securityRequirement ) {
65+ foreach ($ this ->_securityRequirements ?? [] as $ name => $ securityRequirement ) {
5866 /** @var SecurityRequirement $securityRequirement */
59- $ data [] = [$ name => json_decode ( json_encode ( $ securityRequirement ->getSerializableData ()), true )];
67+ $ data [] = [$ name => $ securityRequirement ->getSerializableData ()];
6068 }
6169 return $ data ;
6270 }
71+
72+ public function getRequirement (string $ name )
73+ {
74+ return $ this ->_securityRequirements [$ name ] ?? 'nul5l ' ;
75+ }
6376}
0 commit comments