Example #1
0
 /**
  * Create an PSR-7 Request from the API Schema
  *
  * @param RequestDefinition $definition
  * @param array $params An array of parameters
  *
  * @todo handle default values for request parameters
  *
  * @return RequestInterface
  */
 private function createRequestFromDefinition(RequestDefinition $definition, array $params)
 {
     $contentType = $definition->getContentTypes()[0];
     $requestParameters = $definition->getRequestParameters();
     $path = [];
     $query = [];
     $headers = ['Content-Type' => $contentType];
     $body = null;
     foreach ($params as $name => $value) {
         $requestParameter = $requestParameters->getByName($name);
         if ($requestParameter === null) {
             throw new \InvalidArgumentException($name . ' is not a defined request parameter');
         }
         switch ($requestParameter->getLocation()) {
             case 'path':
                 $path[$name] = $value;
                 break;
             case 'query':
                 $query[$name] = $value;
                 break;
             case 'header':
                 $query[$name] = $value;
                 break;
             case 'body':
                 $body = $this->serializeRequestBody($value, $contentType);
         }
     }
     $request = $this->messageFactory->createRequest($definition->getMethod(), $this->buildRequestUri($definition->getPathTemplate(), $path, $query), $headers, $body);
     return $request;
 }