Exemple #1
0
 /**
  * eduwitterConnect
  * 
  * parameters
  *   url -- connection url
  *   method -- 'GET', 'POST' or 'DELETE'
  *   params -- request parameters oauth and post-field
  * 
  * return
  *   response of request
  */
 protected function eduwitteConnect($url, $method, $params)
 {
     $query = EDAssist::params2Query($params);
     /**
      * curl configure
      */
     $curl_opt = array(CURLOPT_URL => $url, CURLOPT_HEADER => TRUE, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSLVERSION => EDAssist::$ssl_version, CURLOPT_SSL_VERIFYPEER => EDAssist::$ssl_verifypeer, CURLOPT_HTTPHEADER => array('Expect:', EDAssist::params2Authorization($params)));
     /* switch of method */
     switch ($method) {
         case 'GET':
             $curl_opt[CURLOPT_URL] = $url . '?' . $query;
             break;
         case 'POST':
             $curl_opt[CURLOPT_URL] = $url;
             $curl_opt[CURLOPT_POST] = true;
             $curl_opt[CURLOPT_POSTFIELDS] = $query;
             break;
         case 'DELETE':
             $curl_opt[CURLOPT_URL] = $url . '?' . $query;
             $curl_opt[CURLOPT_CUSTOMREQUEST] = $method;
             break;
     }
     /* setting crt file path, if it is settled */
     if (!empty(EDAssist::$ssl_cainfo)) {
         $curl_opt[CURLOPT_CAINFO] = EDAssist::$ssl_cainfo;
     }
     /**
      *  curl connection
      */
     $ch = curl_init();
     curl_setopt_array($ch, $curl_opt);
     $header_body = curl_exec($ch);
     curl_close($ch);
     /* split response to header and body */
     $split_pos = strpos($header_body, "\r\n\r\n");
     $response_header = substr($header_body, 0, $split_pos);
     $response_body = substr($header_body, $split_pos + 4);
     /* get http status code */
     preg_match("/^HTTP\\/[\\d\\.]+ (\\d+) (.+)/", $response_header, $m);
     $this->last_status_code = $m[1];
     $this->last_status_reason = $m[2];
     // 改行が入るバグあり
     return $response_body;
 }