예제 #1
0
 function testRequireLogin()
 {
     $response = new Response();
     $bearer = new Bearer('Dagger', new Request(), $response);
     $bearer->requireLogin();
     $this->assertEquals('Bearer realm="Dagger"', $response->getHeader('WWW-Authenticate'));
     $this->assertEquals(401, $response->getStatus());
 }
예제 #2
0
 /**
  * @param \Sabre\HTTP\Response $response
  * @return void
  */
 public function sendResponse(Response $response)
 {
     // we need to copy the body since we close the source stream
     $copyStream = fopen('php://temp', 'r+');
     if (is_string($response->getBody())) {
         fwrite($copyStream, $response->getBody());
     } else {
         if (is_resource($response->getBody())) {
             stream_copy_to_stream($response->getBody(), $copyStream);
         }
     }
     rewind($copyStream);
     $this->response = new Response($response->getStatus(), $response->getHeaders(), $copyStream);
 }
예제 #3
0
파일: Client.php 프로젝트: samj1912/repo
 /**
  * Parses the result of a curl call in a format that's a bit more
  * convenient to work with.
  *
  * The method returns an array with the following elements:
  *   * status - one of the 3 STATUS constants.
  *   * curl_errno - A curl error number. Only set if status is
  *                  STATUS_CURLERROR.
  *   * curl_errmsg - A current error message. Only set if status is
  *                   STATUS_CURLERROR.
  *   * response - Response object. Only set if status is STATUS_SUCCESS, or
  *                STATUS_HTTPERROR.
  *   * http_code - HTTP status code, as an int. Only set if Only set if
  *                 status is STATUS_SUCCESS, or STATUS_HTTPERROR
  *
  * @param string $response
  * @param resource $curlHandle
  * @return Response
  */
 protected function parseCurlResult($response, $curlHandle)
 {
     list($curlInfo, $curlErrNo, $curlErrMsg) = $this->curlStuff($curlHandle);
     if ($curlErrNo) {
         return ['status' => self::STATUS_CURLERROR, 'curl_errno' => $curlErrNo, 'curl_errmsg' => $curlErrMsg];
     }
     $headerBlob = substr($response, 0, $curlInfo['header_size']);
     // In the case of 204 No Content, strlen($response) == $curlInfo['header_size].
     // This will cause substr($response, $curlInfo['header_size']) return FALSE instead of NULL
     // An exception will be thrown when calling getBodyAsString then
     $responseBody = substr($response, $curlInfo['header_size']) ?: null;
     unset($response);
     // In the case of 100 Continue, or redirects we'll have multiple lists
     //
     // of headers for each separate HTTP response. We can easily split this
     // because they are separated by \r\n\r\n
     $headerBlob = explode("\r\n\r\n", trim($headerBlob, "\r\n"));
     // We only care about the last set of headers
     $headerBlob = $headerBlob[count($headerBlob) - 1];
     // Splitting headers
     $headerBlob = explode("\r\n", $headerBlob);
     $response = new Response();
     $response->setStatus($curlInfo['http_code']);
     foreach ($headerBlob as $header) {
         $parts = explode(':', $header, 2);
         if (count($parts) == 2) {
             $response->addHeader(trim($parts[0]), trim($parts[1]));
         }
     }
     $response->setBody($responseBody);
     $httpCode = intval($response->getStatus());
     return ['status' => $httpCode >= 400 ? self::STATUS_HTTPERROR : self::STATUS_SUCCESS, 'response' => $response, 'http_code' => $httpCode];
 }