/**
  * Sends a response, but also makes sure to attach headers that
  * are handy for debugging.
  * Specifically, we assume folks will want to know what exactly was the DB query that got run,
  * what exactly was the Models query that got run, what capabilities came into play, what fields were omitted from
  * the response, others?
  *
  * @param array|\WP_Error|\Exception $response
  * @return \WP_REST_Response
  */
 public function send_response($response)
 {
     if ($response instanceof \Exception) {
         $response = new \WP_Error($response->getCode(), $response->getMessage());
     }
     if ($response instanceof \WP_Error) {
         $response = $this->_add_ee_errors_to_response($response);
         $rest_response = $this->_create_rest_response_from_wp_error($response);
     } else {
         $rest_response = new \WP_REST_Response($response, 200);
     }
     $headers = array();
     if ($this->_debug_mode && is_array($this->_debug_info)) {
         foreach ($this->_debug_info as $debug_key => $debug_info) {
             if (is_array($debug_info)) {
                 $debug_info = json_encode($debug_info);
             }
             $headers['X-EE4-Debug-' . ucwords($debug_key)] = $debug_info;
         }
     }
     $headers = array_merge($headers, $this->_get_headers_from_ee_notices());
     $rest_response->set_headers($headers);
     return $rest_response;
 }
Example #2
-2
 /**
  * Sends a response, but also makes sure to attach headers that
  * are handy for debugging.
  * Specifically, we assume folks will want to know what exactly was the DB query that got run,
  * what exactly was the Models query that got run, what capabilities came into play, what fields were omitted from
  * the response, others?
  *
  * @param array|\WP_Error|\Exception $response
  * @return \WP_REST_Response
  */
 public function send_response($response)
 {
     if ($response instanceof \Exception) {
         $response = new \WP_Error($response->getCode(), $response->getMessage());
     }
     if ($response instanceof \WP_Error) {
         //we want to send a "normal"-looking WP error response, but we also
         //want to add headers. It doesn't seem WP API 1.2 supports this.
         //I'd like to use WP_JSON_Server::error_to_response() but its protected
         //so here's most of it copy-and-pasted :P
         $error_data = $response->get_error_data();
         if (is_array($error_data) && isset($error_data['status'])) {
             $status = $error_data['status'];
         } else {
             $status = 500;
         }
         $errors = array();
         foreach ((array) $response->errors as $code => $messages) {
             foreach ((array) $messages as $message) {
                 $errors[] = array('code' => $code, 'message' => $message, 'data' => $response->get_error_data($code));
             }
         }
         $data = isset($errors[0]) ? $errors[0] : array();
         if (count($errors) > 1) {
             // Remove the primary error.
             array_shift($errors);
             $data['additional_errors'] = $errors;
         }
         $rest_response = new \WP_REST_Response($data, $status);
     } else {
         $rest_response = new \WP_REST_Response($response, 200);
     }
     $headers = array();
     if ($this->_debug_mode && is_array($this->_debug_info)) {
         foreach ($this->_debug_info as $debug_key => $debug_info) {
             if (is_array($debug_info)) {
                 $debug_info = json_encode($debug_info);
             }
             $headers['X-EE4-Debug-' . ucwords($debug_key)] = $debug_info;
         }
     }
     $rest_response->set_headers($headers);
     return $rest_response;
 }