예제 #1
0
 /**
  * Sends a request and returns the response 
  * 
  * @return string
  */
 public function send()
 {
     $url = $this->getURL();
     $data = $this->getData();
     $method = $this->getMethod();
     $ch = curl_init();
     $options = $this->_options;
     curl_setopt_array($ch, array(CURLOPT_USERAGENT => $options->useragent, CURLOPT_CONNECTTIMEOUT => $options->connection_timeout, CURLOPT_TIMEOUT => $options->timeout, CURLOPT_RETURNTRANSFER => true, CURLINFO_HEADER_OUT => true, CURLOPT_SSL_VERIFYPEER => $options->ssl, CURLOPT_HEADER => false));
     $headers = array();
     //if data is string then
     //set the authorization header
     //A Hack to make the linked-in work wihtout affecting
     //other services
     if (is_string($this->_data)) {
         $headers[] = $this->_internal_request->to_header();
         $headers[] = "Content-Type: text/plain";
     }
     if (!empty($headers)) {
         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
     }
     switch ($method) {
         case KHttpRequest::POST:
             curl_setopt($ch, CURLOPT_POST, true);
             if (!empty($data)) {
                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
             }
             break;
         case KHttpRequest::PUT:
             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
             if (!empty($data)) {
                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
             }
             break;
         case KHttpRequest::DELETE:
             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
             if (!empty($data)) {
                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
             }
     }
     curl_setopt($ch, CURLOPT_URL, $url);
     $response = curl_exec($ch);
     return new ComConnectOauthResponse($response, curl_getinfo($ch));
 }
예제 #2
0
 /**
  * Make an HTTP request
  *
  * @return API results
  */
 function http($url, $method, $postfields = NULL, OAuthRequest $request = NULL, $multipart = false)
 {
     $this->http_info = array();
     $ci = curl_init();
     /* Curl settings */
     curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
     curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
     curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
     curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
     $headers = array('Expect:');
     if ($multipart) {
         $headers[] = $request->to_header();
     }
     curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
     curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
     curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
     curl_setopt($ci, CURLOPT_HEADER, FALSE);
     switch ($method) {
         case 'POST':
             curl_setopt($ci, CURLOPT_POST, TRUE);
             if (!empty($postfields)) {
                 curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
             }
             break;
         case 'DELETE':
             curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
             if (!empty($postfields)) {
                 $url = "{$url}?{$postfields}";
             }
     }
     curl_setopt($ci, CURLOPT_URL, $url);
     $response = curl_exec($ci);
     $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
     $this->http_info = array_merge($this->http_info, curl_getinfo($ci));
     $this->url = $url;
     curl_close($ci);
     return $response;
 }
예제 #3
0
 /**
  * HTTP通信を行う。
  * 
  * @param OAuthRequest $request リクエストオブジェクト
  * @param array $body_params POSTのBODYに指定するパラメータ
  * @return HttpResponse
  */
 private static function http($request, $body_params = array())
 {
     // cURLリソースの生成
     $ch = curl_init();
     // Locationヘッダは無視
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
     // サーバ証明書の検証を行わない
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     // レスポンスを文字列として取得する設定
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     // (出力結果に)ヘッダを含める
     curl_setopt($ch, CURLOPT_HEADER, true);
     if (strcasecmp($request->get_normalized_http_method(), 'POST') == 0) {
         // POST通信
         curl_setopt($ch, CURLOPT_POST, true);
         // URLを指定
         curl_setopt($ch, CURLOPT_URL, $request->get_normalized_http_url());
         // リクエストヘッダを設定
         curl_setopt($ch, CURLOPT_HTTPHEADER, array($request->to_header()));
         // リクエストパラメータを設定
         curl_setopt($ch, CURLOPT_POSTFIELDS, $body_params);
     } else {
         // URLを指定
         curl_setopt($ch, CURLOPT_URL, $request->to_url());
     }
     // 実行
     $result = curl_exec($ch);
     // HTTPステータスコードを取得
     $http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     // close curl resource to free up system resources
     curl_close($ch);
     return explode("\r\n\r\n", $result, 2);
 }
예제 #4
0
 /**
  * Performs a OAuthRequest, returning the response
  * You can give a token to force signatures with this
  * token. If none given, the token used when creating
  * this instance of CampusNotesAPI is used
  * @param OAuthRequest $req
  * @param OAuthToken $token 
  * @return string
  * @throws CNApiException
  */
 private function _performRequest(OAuthRequest $req, OAuthToken $token = null)
 {
     $token = $token ? $token : $this->oauth_token;
     $req->sign_request($this->hmac_signature_method, $this->oauth_consumer, $token);
     $curl = curl_init();
     $params = $req->get_parameters();
     foreach (array_keys($params) as $i) {
         if (substr($i, 0, 6) == 'oauth_') {
             unset($params[$i]);
         }
     }
     $url = $req->get_normalized_http_url();
     if ($req->get_normalized_http_method() == 'POST') {
         curl_setopt($curl, CURLOPT_POST, true);
         curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
     } else {
         if (count($params)) {
             $url .= '?' . http_build_query($params);
         }
     }
     curl_setopt($curl, CURLOPT_URL, $url);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_HTTPHEADER, array($req->to_header()));
     $rtn = curl_exec($curl);
     if (!$rtn) {
         throw new OAuthClientException(curl_error($curl));
     } else {
         if (curl_getinfo($curl, CURLINFO_HTTP_CODE) != 200) {
             throw new OAuthClientException($rtn);
         } else {
             return $rtn;
         }
     }
 }
 private function __build_oauth_header($linkedin_url)
 {
     $request = new OAuthRequest('GET', $linkedin_url, array('oauth_nonce' => OAuthRequest::generate_nonce(), 'oauth_timestamp' => OAuthRequest::generate_timestamp(), 'oauth_version' => '1.0', 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_consumer_key' => $this->oaConsumerKey, 'oauth_token' => OAUTH_USER_TOKEN));
     $request->sign_request($this->signature, new OAuthConsumer('', $this->oaConsumerSecret), new OAuthToken('', '95b27494-0a99-47c0-a66c-533cef4b8a28'));
     return $request->to_header();
 }