/**
  * @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());
     }
 }