Пример #1
0
 /**
  * Constructor.
  *
  * @param string $uri
  * @param HttpMessage $message
  */
 public function __construct($uri, HttpMessage $message)
 {
     try {
         $parent = $message->getParentMessage();
         $location = $parent->getHeader('Location');
         $this->uri = $location;
     } catch (HttpRuntimeException $e) {
         $this->uri = $uri;
     }
     $this->httpVersion = $message->getHttpVersion();
     $this->code = $message->getResponseCode();
     $this->_message = $message;
     $this->_headers = new Horde_Support_CaseInsensitiveArray($message->getHeaders());
     $this->headers = array_change_key_case($this->_headers->getArrayCopy());
 }
Пример #2
0
 /**
  * Constructor.
  *
  * @param string $uri
  * @param HttpMessage $message
  */
 public function __construct($uri, HttpMessage $message)
 {
     try {
         $parent = $message->getParentMessage();
         $location = $parent->getHeader('Location');
         $this->uri = $location;
     } catch (HttpRuntimeException $e) {
         $this->uri = $uri;
     }
     $this->httpVersion = $message->getHttpVersion();
     $this->code = $message->getResponseCode();
     $this->_message = $message;
     foreach ($message->getHeaders() as $k => $v) {
         $this->headers[strtolower($k)] = $v;
     }
 }
Пример #3
0
 /**
  * Perform the HTTP request.
  *
  * @param      \phpcouch\http\HttpRequest HTTP Request object
  *
  * @return     \phpcouch\http\HttpResponse  The response from the server
  *
  * @author     Simon Thulbourn <*****@*****.**>
  * @since      1.0.0
  */
 public function sendRequest(\phpcouch\http\HttpRequest $request)
 {
     $internalRequest = new \HttpRequest($request->getDestination(), self::$httpMethods[$request->getMethod()]);
     // additional headers
     foreach ($request->getHeaders() as $key => $values) {
         foreach ($values as $value) {
             $this->headers[$key] = $value;
         }
     }
     if (!isset($this->headers['Content-Type'])) {
         $this->headers['Content-Type'] = 'application/json';
     }
     if (null !== ($payload = $request->getContent())) {
         if (is_resource($payload)) {
             // This adapter has no real stream support as of now
             $payload = stream_get_contents($payload, -1, 0);
         }
         if ('PUT' == $request->getMethod()) {
             $internalRequest->setPutData($payload);
         } elseif ('POST' == $request->getMethod()) {
             $internalRequest->setBody($payload);
             $this->headers['Content-Length'] = strlen($payload);
         }
     }
     $internalRequest->addHeaders($this->headers);
     $message = new \HttpMessage($internalRequest->send());
     $response = new HttpResponse();
     $response->setStatusCode($message->getResponseCode());
     if (!isset($response)) {
         throw new TransportException('Could not read HTTP response status line');
     }
     foreach ($message->getHeaders() as $key => $value) {
         $response->setHeader($key, $value);
     }
     $response->setContent($message->getBody());
     if ($message->getResponseCode() >= 400) {
         if ($message->getResponseCode() % 500 < 100) {
             // a 5xx response
             throw new HttpServerErrorException($message->getResponseStatus(), $message->getResponseCode(), $response);
         } else {
             // a 4xx response
             throw new HttpClientErrorException($message->getResponseStatus(), $message->getResponseCode(), $response);
         }
     }
     return $response;
 }
Пример #4
0
 /**
  * {@inheritdoc}
  * @see Scalr\Service\Aws\Client.ClientResponseInterface::getHeaders()
  */
 public function getHeaders()
 {
     return $this->message->getHeaders();
 }
Пример #5
0
 public function getHeaders() : array
 {
     $headers = parent::getHeaders();
     if (empty($this->headers['host']) && $this->uri !== NULL && !empty($this->uri->getHost())) {
         $headers['Host'] = $this->getHeader('Host');
     }
     return $headers;
 }