/**
  * 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());
 }