You are here

public static function OAuthRequest::from_request in jQuery social stream 8

Same name and namespace in other branches
  1. 8.2 src/Twitter/OAuthRequest.php \Drupal\jquery_social_stream\Twitter\OAuthRequest::from_request()

attempt to build up a request from what was passed to the server

File

src/Twitter/OAuthRequest.php, line 26

Class

OAuthRequest

Namespace

Drupal\jquery_social_stream\Twitter

Code

public static function from_request($http_method = NULL, $http_url = NULL, $parameters = NULL) {
  $scheme = !isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on" ? 'http' : 'https';
  @$http_url or $http_url = $scheme . '://' . $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
  @$http_method or $http_method = $_SERVER['REQUEST_METHOD'];

  // We weren't handed any parameters, so let's find the ones relevant to
  // this request.
  // If you run XML-RPC or similar you should use this to provide your own
  // parsed parameter-list
  if (!$parameters) {

    // Find request headers
    $request_headers = OAuthUtil::get_headers();

    // Parse the query-string to find GET parameters
    $parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);

    // It's a POST request of the proper content-type, so parse POST
    // parameters and add those overriding any duplicates from GET
    if ($http_method == "POST" && @strstr($request_headers["Content-Type"], "application/x-www-form-urlencoded")) {
      $post_data = OAuthUtil::parse_parameters(file_get_contents(self::$POST_INPUT));
      $parameters = array_merge($parameters, $post_data);
    }

    // We have a Authorization-header with OAuth data. Parse the header
    // and add those overriding any duplicates from GET or POST
    if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {
      $header_parameters = OAuthUtil::split_header($request_headers['Authorization']);
      $parameters = array_merge($parameters, $header_parameters);
    }
  }
  return new OAuthRequest($http_method, $http_url, $parameters);
}