/** * Instantiates the HttpRequest depending on the * configuration from the given Request. * @param $request Request The Request configuration. * @return RequestInterface The HTTP request. */ private function createHttpRequest(Request $request) { // The URL $url = ltrim(trim($request->getUrl()), '/'); // Handle templated URLs if ($urlVariables = $request->getUrlVariables()) { $url = (new UriTemplate())->expand($url, $urlVariables); } // Create the request (we will handle the exceptions) $httpRequest = $this->client->createRequest($request->getMethod(), $url, array('exceptions' => false)); // The message body if ($messageBody = $request->getMessageBody()) { $httpRequest->setHeader('Content-Type', $messageBody->getContentType()); if (!is_a($messageBody, 'Finix\\Http\\MultipartBody')) { $httpRequest->setHeader('Content-Length', $messageBody->getContentLength()); $httpRequest->setBody(Stream::factory($messageBody->getContent())); } else { /** @var \Finix\Http\MultipartBody $messageBody */ $httpRequest->getBody()->addFile($messageBody->getContent()); } } // Accept hal+json response if ($this->profile) { $accept = 'application/hal+json; profile="' . $this->profile . '"'; } else { $accept = 'application/json'; } //$httpRequest->setHeader('Accept', $accept); // Additional headers if specified foreach ($request->getHeaders() as $key => $value) { $httpRequest->setHeader($key, $value); } // "verify" the request if needed $this->verify($httpRequest); return $httpRequest; }