Ejemplo n.º 1
0
 /**
  * Makes an HTTP request using PHP's CURL
  *
  * @param RESTian_Request $request
  * @param RESTian_Response $response
  * @return RESTian_Response
  */
 function make_request($request, $response)
 {
     $ch = curl_init();
     curl_setopt_array($ch, array(CURLOPT_URL => $request->get_url(), CURLOPT_USERAGENT => $request->client->get_user_agent(), CURLOPT_HTTPHEADER => $request->get_curl_headers(), CURLOPT_POST => false, CURLOPT_HEADER => false, CURLOPT_TIMEOUT => '30', CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => $request->sslverify, CURLOPT_SSL_VERIFYHOST => true === $request->sslverify ? 2 : false));
     if (!$request->omit_body) {
         $response->body = trim(curl_exec($ch));
     }
     $info = curl_getinfo($ch);
     $response->status_code = $info['http_code'];
     if (0 != curl_errno($ch)) {
         $response->set_http_error(curl_errno($ch), curl_error($ch));
     }
     if (!$request->omit_result) {
         $response->result = (object) array('info' => $info, 'version' => curl_version(), 'error' => curl_error($ch), 'errno' => curl_errno($ch));
     }
     curl_close($ch);
     return $response;
 }
Ejemplo n.º 2
0
 /**
  * Makes an HTTP request using WordPress' WP_Http class and related functions.
  *
  * @param RESTian_Request $request
  * @param RESTian_Response $response
  * @return RESTian_Response
  */
 function make_request($request, $response)
 {
     switch ($request->http_method) {
         case 'GET':
             $url = $request->get_url();
             $args = $this->get_args($request);
             $result = wp_remote_get($url, $args);
             break;
         case 'POST':
             if ($content_type = $request->get_content_type()) {
                 $request->add_header('Content-type', $content_type);
             }
             $url = $request->get_url();
             $args = $this->get_args($request);
             $result = wp_remote_post($url, $args);
             break;
         case 'PUT':
             $result = new WP_Error(-1, 'HTTP PUT not yet supported.');
             break;
         case 'DELETE':
             $result = new WP_Error(-2, 'HTTP DELETE not yet supported.');
             break;
     }
     if (method_exists($request->client, 'filter_result')) {
         $result = $request->client->filter_result($result, $response);
     }
     if (is_wp_error($result)) {
         /**
          * These errors likely won't be 100% compatible with the errors from CURL when standalone
          */
         $error_num = $result->get_error_code();
         $response->set_http_error($error_num, $result->get_error_message($error_num));
     } else {
         $response->message = wp_remote_retrieve_response_message($result);
     }
     $response->status_code = wp_remote_retrieve_response_code($result);
     $response->body = wp_remote_retrieve_body($result);
     $response->body = $request->client->apply_filters('result_body', $response->body, $response);
     $response->result = $result;
     return $response;
 }