You are here

public function HttpClient::execute in Http Client 7.2

Same name and namespace in other branches
  1. 6.2 includes/HttpClient.inc \HttpClient::execute()

Executes the given request.

4 calls to HttpClient::execute()
HttpClient::delete in includes/HttpClient.inc
Executes a DELETE request.
HttpClient::get in includes/HttpClient.inc
Executes a GET request.
HttpClient::post in includes/HttpClient.inc
Executes a POST request.
HttpClient::put in includes/HttpClient.inc
Executes a PUT request.

File

includes/HttpClient.inc, line 133

Class

HttpClient
A http client.

Code

public function execute(HttpClientRequest $request) {

  // Allow the request to be altered
  if ($this->request_alter) {
    call_user_func($this->request_alter, $request);
  }
  if (isset($request->data)) {
    if ($this->formatter) {
      $request
        ->setHeader('Content-type', $this->formatter
        ->contentType());
      $request->data = $this->formatter
        ->serialize($request->data);
    }
    else {
      $request->data = (string) $request->data;
    }
    if (is_string($request->data)) {
      $request
        ->setHeader('Content-length', strlen($request->data));
    }
  }
  if ($this->formatter) {
    $request
      ->setHeader('Accept', $this->formatter
      ->accepts());
  }

  // Allow the authentication implementation to do it's magic
  if ($this->authentication) {
    $this->authentication
      ->authenticate($request);
  }
  $response = $this->delegate
    ->execute($this, $request);
  $this->lastRequest = $request;
  $this->lastResponse = $response;
  $result = NULL;
  if ($response->responseCode >= 200 && $response->responseCode <= 299) {
    if ($this->formatter) {
      try {
        $result = $this->formatter
          ->unserialize($response->body);
      } catch (Exception $e) {
        throw new HttpClientException('Failed to unserialize response', 0, $response, $e);
      }
    }
    else {
      $result = $response->body;
    }
  }
  elseif (!empty($response->drupalErrors)) {
    throw new HttpClientException(check_plain(implode("\n", $response->drupalErrors)), $response->responseCode, $response);
  }
  else {
    throw new HttpClientException(check_plain($response->responseMessage), $response->responseCode, $response);
  }
  return $result;
}