示例#1
0
 /**
  * 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 Rest_Exception) {
         $response = new \WP_Error($response->get_string_code(), $response->getMessage(), $response->get_data());
     }
     if ($response instanceof \Exception) {
         $code = $response->getCode() ? $response->getCode() : 'error_occurred';
         $response = new \WP_Error($code, $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_response_headers(), $this->_get_headers_from_ee_notices());
     $rest_response->set_headers($headers);
     return $rest_response;
 }