You are here

function LingotekOAuthRequester::doRequest in Lingotek Translation 7.6

Same name and namespace in other branches
  1. 7.7 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::doRequest()
  2. 7.4 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::doRequest()
  3. 7.5 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::doRequest()

* Perform the request, returns the response code, headers and body. * *

Parameters

int usr_id optional user id for which we make the request: * @param array curl_options optional extra options for curl request * @param array options options like name and token_ttl * @exception OAuthException2 when authentication not accepted * @exception OAuthException2 when signing was not possible * @return array (code=>int, headers=>array(), body=>string)

File

lib/oauth-php/library/LingotekOAuthRequester.php, line 96

Class

LingotekOAuthRequester

Code

function doRequest($usr_id = 0, $curl_options = array(), $options = array()) {
  $name = isset($options['name']) ? $options['name'] : '';
  if (isset($options['token_ttl'])) {
    $this
      ->setParam('xoauth_token_ttl', intval($options['token_ttl']));
  }
  if (!empty($this->files)) {

    // At the moment OAuth does not support multipart/form-data, so try to encode
    // the supplied file (or data) as the request body and add a content-disposition header.
    list($extra_headers, $body) = OAuthBodyContentDisposition::encodeBody($this->files);
    $this
      ->setBody($body);
    $curl_options = $this
      ->prepareCurlOptions($curl_options, $extra_headers);
  }
  $this
    ->sign($usr_id, null, $name);
  $text = $this
    ->curl_raw($curl_options);
  $result = $this
    ->curl_parse($text);
  if ($result['code'] >= 400) {
    throw new OAuthException2('Request failed with code ' . $result['code'] . ': ' . $result['body']);
  }

  // Record the token time to live for this server access token, immediate delete iff ttl <= 0
  // Only done on a succesful request.
  $token_ttl = $this
    ->getParam('xoauth_token_ttl', false);
  if (is_numeric($token_ttl)) {
    $this->store
      ->setServerTokenTtl($this
      ->getParam('oauth_consumer_key', true), $this
      ->getParam('oauth_token', true), $token_ttl);
  }
  return $result;
}