/** * Create a new response object from an array * * @param string $statusCode * @param array $data * * @return Response */ public static function createFromArray($statusCode, array $data = []) { $response = new static($statusCode); if (isset($data['body']) && is_array($data['body'])) { foreach ($data['body'] as $key => $bodyData) { $response->addBody(Body::createFromArray($key, $bodyData ?: [])); } } if (isset($data['description'])) { $response->setDescription($data['description']); } if (isset($data['headers'])) { foreach ($data['headers'] as $key => $header) { $response->addHeader(NamedParameter::createFromArray($key, $header)); } } return $response; }
/** * Create a new Method from an array * * @param string $method * @param array $data * [ * body: ?array * headers: ?array * description: ?string * protocols: ?array * responses: ?array * queryParameters: ?array * ] * @param ApiDefinition $apiDefinition * * @throws \Exception * * @return Method */ public static function createFromArray($method, array $data = [], ApiDefinition $apiDefinition = null) { $method = new static($method, $apiDefinition); if (isset($data['body'])) { foreach ($data['body'] as $key => $bodyData) { if (in_array($key, WebFormBody::$validMediaTypes)) { $body = WebFormBody::createFromArray($key, $bodyData); } else { $body = Body::createFromArray($key, $bodyData); } $method->addBody($body); } } if (isset($data['headers'])) { foreach ($data['headers'] as $key => $header) { $method->addHeader(NamedParameter::createFromArray($key, $header)); } } if (isset($data['description'])) { $method->setDescription($data['description']); } if (isset($data['baseUriParameters'])) { foreach ($data['baseUriParameters'] as $key => $baseUriParameter) { $method->addBaseUriParameter(BaseUriParameter::createFromArray($key, $baseUriParameter)); } } if (isset($data['protocols'])) { foreach ($data['protocols'] as $protocol) { $method->addProtocol($protocol); } } if (isset($data['responses']) && is_array($data['responses'])) { foreach ($data['responses'] as $responseCode => $response) { $method->addResponse(Response::createFromArray($responseCode, $response ?: [])); } } if (isset($data['queryParameters'])) { foreach ($data['queryParameters'] as $key => $queryParameterData) { $method->addQueryParameter(NamedParameter::createFromArray($key, $queryParameterData)); } } if (isset($data['securedBy'])) { foreach ($data['securedBy'] as $key => $securedBy) { if ($securedBy) { $method->addSecurityScheme($apiDefinition->getSecurityScheme($securedBy)); } else { $method->addSecurityScheme(SecurityScheme::createFromArray('null', array(), $apiDefinition)); } } } return $method; }
/** * Create a Resource from an array * * @param string $uri * @param array $data * [ * uri: string * displayName: ?string * description: ?string * baseUriParameters: ?array * ] * * @param ApiDefinition $apiDefinition * @param Resource $parentResource * * @return Resource */ public static function createFromArray($uri, array $data = [], ApiDefinition $apiDefinition = null, Resource $parentResource = null) { $resource = new static($uri, $apiDefinition); if (isset($data['displayName'])) { $resource->setDisplayName($data['displayName']); } else { $resource->setDisplayName($uri); } if (isset($data['description'])) { $resource->setDescription($data['description']); } if (isset($data['baseUriParameters'])) { foreach ($data['baseUriParameters'] as $key => $baseUriParameter) { $resource->addBaseUriParameter(NamedParameter::createFromArray($key, $baseUriParameter)); } } if (isset($data['uriParameters'])) { foreach ($data['uriParameters'] as $key => $uriParameter) { $resource->addUriParameter(NamedParameter::createFromArray($key, $uriParameter ?: [])); } } if (null !== $parentResource) { foreach ($parentResource->getUriParameters() as $uriParameter) { $resource->addUriParameter($uriParameter); } } if (isset($data['securedBy'])) { foreach ($data['securedBy'] as $key => $securedBy) { if (null !== $securedBy && $apiDefinition->getSecurityScheme($securedBy) instanceof SecurityScheme) { $resource->addSecurityScheme($apiDefinition->getSecurityScheme($securedBy)); } else { $resource->addSecurityScheme(SecurityScheme::createFromArray('null', array(), $apiDefinition)); } } } foreach ($data as $key => $value) { if (count($resource->getSecuritySchemes()) > 0) { foreach ($resource->getSecuritySchemes() as $securityScheme) { if ($securityScheme instanceof SecurityScheme && 'null' !== $securityScheme->getKey()) { if (!isset($value['securedBy'])) { if (!is_array($value)) { $value = []; } $value['securedBy'][] = $securityScheme->getKey(); } } } } if (strpos($key, '/') === 0) { $resource->addResource(Resource::createFromArray($uri . $key, $value ?: [], $apiDefinition, $resource)); } elseif (in_array(strtoupper($key), Method::$validMethods)) { $resource->addMethod(Method::createFromArray($key, $value ?: [], $apiDefinition)); } } return $resource; }
/** * Create a Resource from an array * * @param string $uri * @param ApiDefinition $apiDefinition * @param array $data * [ * uri: string * displayName: ?string * description: ?string * baseUriParameters: ?array * ] * * @return self */ public static function createFromArray($uri, array $data = [], ApiDefinition $apiDefinition = null) { $resource = new static($uri, $apiDefinition); if (isset($data['displayName'])) { $resource->setDisplayName($data['displayName']); } else { $resource->setDisplayName($uri); } if (isset($data['description'])) { $resource->setDescription($data['description']); } if (isset($data['baseUriParameters'])) { foreach ($data['baseUriParameters'] as $key => $baseUriParameter) { $resource->addBaseUriParameter(BaseUriParameter::createFromArray($key, $baseUriParameter)); } } if (isset($data['uriParameters'])) { foreach ($data['uriParameters'] as $key => $uriParameter) { $resource->addUriParameter(NamedParameter::createFromArray($key, $uriParameter ?: [])); } } if (isset($data['securedBy'])) { foreach ($data['securedBy'] as $securedBy) { if ($securedBy) { $resource->addSecurityScheme($apiDefinition->getSecurityScheme($securedBy)); } else { $resource->addSecurityScheme(SecurityScheme::createFromArray('null', [], $apiDefinition)); } } } foreach ($data as $key => $value) { if (strpos($key, '/') === 0) { $resource->addResource(Resource::createFromArray($uri . $key, $value ?: [], $apiDefinition)); } elseif (in_array(strtoupper($key), Method::$validMethods)) { $resource->addMethod(Method::createFromArray($key, $value, $apiDefinition)); } } return $resource; }