/** * @param string $method HTTP method * @param Container $container Container for the request * @param ServerResourceInterface $file Object for the request * * @return RequestInterface * @throws Exception */ protected function createHttpRequest($method, Container $container, ServerResourceInterface $file) { $url = $this->authentication->getStorageUrl() . '/' . $container->getName() . '/' . $file->getServerName(); $request = $this->httpClient->createRequest($method, $url, ['exceptions' => false]); $request->addHeader('X-Auth-Token', $this->authentication->getAuthToken()); return $request; }
/** * Performs authentication with a Selectel endpoint and receives all data from it * * @throws AuthenticationFailedException * @throws UnexpectedHttpStatusException */ public function authenticate() { $client = new HttpClient(); $request = $client->createRequest('get', $this->authUrl); $request->addHeader('X-Auth-User', $this->authUser); $request->addHeader('X-Auth-Key', $this->authKey); /** @var \GuzzleHttp\Message\ResponseInterface $response */ $response = $client->send($request); $statusCode = $response->getStatusCode(); switch ($statusCode) { case Response::HTTP_FORBIDDEN: throw new AuthenticationFailedException(); case Response::HTTP_NO_CONTENT: $this->importHeaders($response->getHeaders()); break; default: throw new UnexpectedHttpStatusException($statusCode, $response->getReasonPhrase()); } }