Пример #1
0
 /**
  * Fetches a secured oauth url and returns the response body.
  *
  * @param string $uri
  * @param mixed $arguments
  * @param string $method
  * @param array $httpHeaders
  * @return string
  */
 public function fetch($uri, $arguments = array(), $method = 'GET', $httpHeaders = array())
 {
     $httpRequest = new HTTP_Request2(null, HTTP_Request2::METHOD_GET, array('ssl_verify_peer' => false, 'ssl_verify_host' => false));
     $consumerRequest = new HTTP_OAuth_Consumer_Request();
     $consumerRequest->accept($httpRequest);
     $consumerRequest->setUrl($uri);
     $consumerRequest->setMethod($method);
     $consumerRequest->setSecrets($this->OAuth->getSecrets());
     $parameters = array('oauth_consumer_key' => $this->consumerKey, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token' => $this->oauth_token);
     if (is_array($arguments)) {
         $parameters = array_merge($parameters, $arguments);
     } elseif (is_string($arguments)) {
         $consumerRequest->setBody($arguments);
     }
     $consumerRequest->setParameters($parameters);
     if (count($httpHeaders)) {
         foreach ($httpHeaders as $k => $v) {
             $consumerRequest->setHeader($k, $v);
         }
     }
     $response = $consumerRequest->send();
     switch ($response->getStatus()) {
         // Not modified
         case 304:
             return array('httpStatus' => 304, 'body' => null);
             break;
         case 403:
             throw new Dropbox_Exception_Forbidden('Forbidden. This could mean a bad OAuth request, or a file or folder already existing at the target location.');
         case 404:
             throw new Dropbox_Exception_NotFound('Resource at uri: ' . $uri . ' could not be found');
         case 507:
             throw new Dropbox_Exception_OverQuota('This dropbox is full');
     }
     return array('httpStatus' => $response->getStatus(), 'body' => $response->getBody());
 }
Пример #2
0
    /**
     *
     * @param TW2MV_Configure
     * @since version 2.1.0
     */
    public function __construct($config)
    {
        parent::__construct($config);

        try {

            // OAuthリクエスト
            $consumer_request = new HTTP_OAuth_Consumer_Request();
            $consumer_request->accept($this->http);

            $this->oauth = new HTTP_OAuth_Consumer($this->config->twitter_oauth_consumer_key, $this->config->twitter_oauth_consumer_secret);
            $this->oauth->accept($consumer_request);

            if (empty($this->config->twitter_oauth_access_token) || empty($this->config->twitter_oauth_access_token_secret)) {

                // Access Tokenを取得
                $this->_getAccessToken();

            }

            // トークンをセット
            $this->oauth->setToken($this->config->twitter_oauth_access_token);
            $this->oauth->setTokenSecret($this->config->twitter_oauth_access_token_secret);

        } catch (Exception $e) {

            debug($e->getMessage());

        }

    }
Пример #3
0
function twipic($f, $a, $b, $m)
{
    $twitpic_api = "";
    $consumer_key = "";
    $consumer_secret = "";
    $access_token = $a;
    $access_token_secret = $b;
    $imagepath = $f;
    $message = $me;
    $consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
    $consumer->setToken($access_token);
    $consumer->setTokenSecret($access_token_secret);
    $http_request = new HTTP_Request2();
    $http_request->setConfig('ssl_verify_peer', false);
    $consumer_request = new HTTP_OAuth_Consumer_Request();
    $consumer_request->accept($http_request);
    $consumer->accept($consumer_request);
    $resp = $consumer->sendRequest('https://api.twitter.com/1.1/account/verify_credentials.json', array(), HTTP_Request2::METHOD_GET);
    $headers = $consumer->getLastRequest()->getHeaders();
    $http_request->setHeader('X-Auth-Service-Provider', 'https://api.twitter.com/1.1/account/verify_credentials.json');
    $http_request->setHeader('X-Verify-Credentials-Authorization', $headers['authorization']);
    $http_request->setUrl('http://api.twitpic.com/2/upload.json');
    $http_request->setMethod(HTTP_Request2::METHOD_POST);
    $http_request->addPostParameter('key', $twitpic_api);
    $http_request->addPostParameter('message', $m);
    $http_request->addUpload('media', $imagepath);
    $resp = $http_request->send();
    $body = $resp->getBody();
    $body = json_decode($body, true);
    return $body;
}
Пример #4
0
 /**
  * Fetches a secured oauth url and returns the response body. 
  * 
  * @param string $uri 
  * @param mixed $arguments 
  * @param string $method 
  * @param array $httpHeaders 
  * @return string 
  */
 public function fetch($uri, $arguments = array(), $method = 'GET', $httpHeaders = array())
 {
     $httpRequest = new HTTP_Request2(null, HTTP_Request2::METHOD_GET, array('ssl_verify_peer' => false, 'ssl_verify_host' => false));
     $consumerRequest = new HTTP_OAuth_Consumer_Request();
     $consumerRequest->accept($httpRequest);
     $consumerRequest->setUrl($uri);
     $consumerRequest->setMethod($method);
     $consumerRequest->setSecrets($this->OAuth->getSecrets());
     $parameters = array('oauth_consumer_key' => $this->consumerKey, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token' => $this->oauth_token);
     if (is_array($arguments)) {
         $parameters = array_merge($parameters, $arguments);
     } elseif (is_string($arguments)) {
         $consumerRequest->setBody($arguments);
     }
     $consumerRequest->setParameters($parameters);
     if (count($httpHeaders)) {
         foreach ($httpHeaders as $k => $v) {
             $consumerRequest->setHeader($k, $v);
         }
     }
     $response = $consumerRequest->send();
     switch ($response->getStatus()) {
         // Not modified
         case 304:
             return array('httpStatus' => 304, 'body' => null);
             break;
         case 400:
             throw new Dropbox_Exception_Forbidden('Forbidden. Bad input parameter. Error message should indicate which one and why.');
         case 401:
             throw new Dropbox_Exception_Forbidden('Forbidden. Bad or expired token. This can happen if the user or Dropbox revoked or expired an access token. To fix, you should re-authenticate the user.');
         case 403:
             throw new Dropbox_Exception_Forbidden('Forbidden. This could mean a bad OAuth request, or a file or folder already existing at the target location.');
         case 404:
             throw new Dropbox_Exception_NotFound('Resource at uri: ' . $uri . ' could not be found');
         case 405:
             throw new Dropbox_Exception_Forbidden('Forbidden. Request method not expected (generally should be GET or POST).');
         case 500:
             throw new Dropbox_Exception_Forbidden('Server error. ' . $e->getMessage());
         case 503:
             throw new Dropbox_Exception_Forbidden('Forbidden. Your app is making too many requests and is being rate limited. 503s can trigger on a per-app or per-user basis.');
         case 507:
             throw new Dropbox_Exception_OverQuota('This dropbox is full');
     }
     return array('httpStatus' => $response->getStatus(), 'body' => $response->getBody());
 }
 /**
  * Send a POST request to the specified URL with the specified payload.
  * @param string $url
  * @param string $data
  * @return string Remote data
  **/
 public function sendPOST($url, $data = array())
 {
     $data['_fake_status'] = '200';
     // Send the actual request.
     $this->instance->setHeader('User-Agent', sprintf(Imgur::$user_agent, Imgur::$key));
     $this->instance->setMethod('POST');
     $this->instance->setUrl($url);
     foreach ($data as $k => $v) {
         $this->instance->addPostParameter($k, $v);
     }
     try {
         /** @var HTTP_Request2_Response */
         $response = $this->instance->send();
         return $response->getBody();
     } catch (HTTP_Request2_Exception $e) {
         throw new Imgur_Exception("HTTP Request Failure", null, $e);
     } catch (Exception $e) {
         throw new Imgur_Exception("Unknown Failure during HTTP Request", null, $e);
     }
 }
Пример #6
0
 /**
  * Gets instance of HTTP_OAuth_Consumer_Request
  *
  * @see accept()
  * @return HTTP_OAuth_Consumer_Request
  */
 public function getOAuthConsumerRequest()
 {
     if (!$this->consumerRequest instanceof HTTP_OAuth_Consumer_Request) {
         $this->consumerRequest = new HTTP_OAuth_Consumer_Request();
     }
     $this->consumerRequest->setConfig(array('ssl_verify_peer' => false, 'ssl_verify_host' => false));
     return $this->consumerRequest;
 }
<?php

header("Content-type: text/event-stream; charset=utf-8");
header("Transfer-encoding: chunked");
$_TARGET_URL = "https://userstream.twitter.com/2/user.json";
$consumer_key = $consumer_secret = $access_token = $access_token_secret = $time = time();
$oauth_nonce = md5($time . rand());
include_once 'HTTP/OAuth/Consumer.php';
$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
//認証用
$signature = HTTP_OAuth_Signature::factory($consumer->getSignatureMethod());
//signature作成用
//HTTPS接続の設定
$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);
$consumer_request = new HTTP_OAuth_Consumer_Request();
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);
//Tokenの設定
$consumer->setToken($access_token);
$consumer->setTokenSecret($access_token_secret);
//signature用の文字列設定
$param = array("oauth_consumer_key" => $consumer_key, "oauth_nonce" => $oauth_nonce, "oauth_signature_method" => $consumer->getSignatureMethod(), "oauth_timestamp" => $time, "oauth_token" => $access_token, "oauth_version" => "1.0");
//sigunature作成
$oauth_signature = urlencode($signature->build("GET", $_TARGET_URL, $param, $consumer_secret, $access_token_secret));
//echo 'Authorization: OAuth oauth_consumer_key="' . $consumer_key .'", oauth_nonce="'. $oauth_nonce .'", oauth_signature="' . $oauth_signature .'", oauth_signature_method="' . $consumer->getSignatureMethod() .'", oauth_timestamp="' . $time .'", oauth_token="' . $access_token .'", oauth_version="1.0"';
//HTTP通信ヘッダの作成
$options = array('http' => array('method' => "GET", 'header' => 'Authorization: OAuth oauth_consumer_key="' . $consumer_key . '", oauth_nonce="' . $oauth_nonce . '", oauth_signature="' . $oauth_signature . '", oauth_signature_method="' . $consumer->getSignatureMethod() . '", oauth_timestamp="' . $time . '", oauth_token="' . $access_token . '", oauth_version="1.0"', "Content-type: application/x-www-form-urlencoded\r\n"));
//通信と出力
//JSONに変換可能だったもののみ、出力を行う。
$context = stream_context_create($options);
Пример #8
0
 function OAuth_Consumer_build()
 {
     $this->consumer = new HTTP_OAuth_Consumer($this->_consumer_key, $this->_consumer_secret);
     $http_request = new HTTP_Request2();
     $http_request->setConfig('ssl_verify_peer', false);
     $consumer_request = new HTTP_OAuth_Consumer_Request();
     $consumer_request->accept($http_request);
     $this->consumer->accept($consumer_request);
     $this->consumer->setToken($this->_access_token);
     $this->consumer->setTokenSecret($this->_access_token_secret);
     return;
 }
Пример #9
0
 public function testNoOAuthParametersInGET()
 {
     $mockReq = new HTTP_Request2('http://example.com');
     $mockReq->setAdapter(new HTTP_Request2_Adapter_Mock());
     $req = new HTTP_OAuth_Consumer_Request();
     $req->accept($mockReq);
     $req->foo = 'bar';
     $req->oauth_consumer_key = 'key';
     $req->send();
     $this->assertEquals('http://example.com/?foo=bar', $req->getUrl()->getUrl());
 }
Пример #10
0
 /**
  * Sends an OAuth request to the Digg API
  * 
  * @param string $uri  The URI to talk to
  * @param array  $args An array of arguments
  * 
  * @ignore
  * @return HTTP_Request2_Response
  */
 protected function sendOAuthRequest($uri, array $args, $httpMethod)
 {
     $oauth = $this->getHTTPOAuthConsumer();
     // Use the same instance of HTTP_Request2
     $consumerRequest = new HTTP_OAuth_Consumer_Request();
     $consumerRequest->accept($this->getHTTPRequest2());
     $oauth->accept($consumerRequest);
     return $oauth->sendRequest($uri, $args, $httpMethod)->getResponse();
 }
if (isset($params['file'])) {
   // Content of multipart forms isn't signed according to the OAuth specs.
   // We handle this case by manually building the content of the multipart request
   // and then sending no params to the OAuth lib for signing.
   foreach ($params as $key => $val) {
     if ($key=='file') {
        $httpRequest->addUpload($key, $val);
     } else {
        $httpRequest->addPostParameter($key, $val);
     }
   }
   $params = array();
}

// Set up OAuth consumer
$request = new HTTP_OAuth_Consumer_Request;
$request->accept($httpRequest);
$consumer = new HTTP_OAuth_Consumer($visualplatform_config['key'], $visualplatform_config['secret'], $visualplatform_config['token'], $visualplatform_config['token_secret']);
$consumer->accept($request);

// Make request
$response = $consumer->sendRequest("http://" . $visualplatform_config['domain'] . $endpoint, $params, "POST");
$data = $response->getBody();

if ( !$output_php_p ) {
  print($data);
} else {
  print_r(json_decode($data));
}

?>
Пример #12
0
            echo "Missing {$var} option\n";
            die(0);
        }
        return $this->config[$var];
    }
    public function __set($var, $val)
    {
        $this->config[$var] = $val;
    }
}
$config = new Config();
if (!empty($_GET)) {
    $config->isHttp = true;
    foreach ($_GET as $name => $val) {
        if (empty($val)) {
            continue;
        }
        if (is_array($val)) {
            foreach ($val as $n => $v) {
                if (!strlen($v)) {
                    unset($val[$n]);
                }
            }
        }
        $config->{$name} = $val;
    }
}
$httpRequest = new HTTP_Request2();
$httpRequest->setHeader('Accept-Encoding', '.*');
$request = new HTTP_OAuth_Consumer_Request();
$request->accept($httpRequest);
Пример #13
0
 /**
  * Sends a request using OAuth instead of basic auth
  * 
  * @param string $uri    The full URI of the endpoint
  * @param string $method GET or POST
  * @param array  $params Array of additional parameter
  * @param array  $files  Array of files to upload
  * 
  * @throws Services_Twitter_Exception on failure
  * @return HTTP_Request2_Response
  * @see prepareRequest()
  */
 protected function sendOAuthRequest($uri, $method, $params, $files)
 {
     include_once 'HTTP/OAuth/Consumer/Request.php';
     try {
         $request = clone $this->getRequest();
         if ($method == 'POST') {
             foreach ($files as $key => $val) {
                 $request->addUpload($key, $val);
             }
         }
         // Use the same instance of HTTP_Request2
         $consumerRequest = new HTTP_OAuth_Consumer_Request();
         $consumerRequest->accept($request);
         $this->oauth->accept($consumerRequest);
         $response = $this->oauth->sendRequest($uri, $params, $method);
     } catch (HTTP_Request2_Exception $exc) {
         throw new Services_Twitter_Exception($exc->getMessage(), $exc, $uri);
     }
     return $response;
 }