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