/** * Create a new WebFormObject from an array * * @param string $key The valid media type to use as the key * @param array $data The array of data to create \NamedParameter objects from * * @return \Raml\WebFormBody */ public static function createFromArray($key, array $data = []) { $webFormBody = new static($key); if ($data['formParameters']) { foreach ($data['formParameters'] as $namedParam => $namedParamData) { $webFormBody->addParameter(NamedParameter::createFromArray($namedParam, $namedParamData)); } } return $webFormBody; }
/** * Create a new SecuritySchemeDescribedBy from an array of data * * @param string $key * @param array $data * [ * headers: ?array * queryParameters: ?array * responses: ?array * ] * * @return SecuritySchemeDescribedBy */ public static function createFromArray($key, array $data = []) { $describedBy = new static($key); if (isset($data['body'])) { foreach ($data['body'] as $key => $bodyData) { if (in_array($key, \Raml\WebFormBody::$validMediaTypes)) { $body = \Raml\WebFormBody::createFromArray($key, $bodyData); } else { $body = \Raml\Body::createFromArray($key, $bodyData); } $describedBy->addBody($body); } } if (isset($data['headers'])) { foreach ($data['headers'] as $key => $header) { $describedBy->addHeader(NamedParameter::createFromArray($key, $header)); } } if (isset($data['queryParameters'])) { foreach ($data['queryParameters'] as $key => $queryParameterData) { $describedBy->addQueryParameter(NamedParameter::createFromArray($key, $queryParameterData)); } } if (isset($data['responses']) && is_array($data['responses'])) { foreach ($data['responses'] as $responseCode => $response) { $describedBy->addResponse(Response::createFromArray($responseCode, $response ?: [])); } } return $describedBy; }
/** @test */ public function shouldParseResponseHeaders() { $headersRaml = $this->parser->parse(__DIR__ . '/fixture/headers.raml'); $resource = $headersRaml->getResourceByUri('/jobs'); $this->assertEquals(['X-waiting-period' => \Raml\NamedParameter::createFromArray('X-waiting-period', ['description' => 'The number of seconds to wait before you can attempt to make a request again.' . "\n", 'type' => 'integer', 'required' => 'yes', 'minimum' => 1, 'maximum' => 3600, 'example' => 34])], $resource->getMethod('post')->getResponse(503)->getHeaders()); }