/** * Test wrapper around wp_remote_request */ public function testEPRemoteRequest() { global $ep_backup_host; $ep_backup_host = false; define('EP_FORCE_HOST_REFRESH', true); //Test with EP_HOST constant $request_1 = false; $request = ep_remote_request('', array()); if (!is_wp_error($request)) { if (isset($request['response']['code']) && 200 === $request['response']['code']) { $request_1 = true; } } //Test with only backups define('EP_HOST_USE_ONLY_BACKUPS', true); $request_2 = false; $ep_backup_host = array('http://127.0.0.1:9200'); $request = ep_remote_request('', array()); if (!is_wp_error($request)) { if (isset($request['response']['code']) && 200 === $request['response']['code']) { $request_2 = true; } } $request_3 = false; $ep_backup_host = array('bad host 1', 'bad host 2'); $request = ep_remote_request('', array()); if (is_wp_error($request)) { $request_3 = $request; } $request_4 = false; $ep_backup_host = array('http://127.0.0.1:9200', 'bad host 2'); $request = ep_remote_request('', array()); if (!is_wp_error($request)) { if (isset($request['response']['code']) && 200 === $request['response']['code']) { $request_4 = true; } } $request_5 = false; $ep_backup_host = array('bad host 1', 'http://127.0.0.1:9200'); $request = ep_remote_request('', array()); if (!is_wp_error($request)) { if (isset($request['response']['code']) && 200 === $request['response']['code']) { $request_5 = true; } } $this->assertTrue($request_1); $this->assertTrue($request_2); $this->assertWPError($request_3); $this->assertTrue($request_4); $this->assertTrue($request_5); }
/** * Decode the bulk index response * * @since 0.9.2 * @param $body * @return array|object|WP_Error */ public function bulk_index_posts($body) { // create the url with index name and type so that we don't have to repeat it over and over in the request (thereby reducing the request size) $path = trailingslashit(ep_get_index_name()) . 'post/_bulk'; $request_args = array('method' => 'POST', 'body' => $body, 'timeout' => 30); $request = ep_remote_request($path, apply_filters('ep_bulk_index_posts_request_args', $request_args, $body)); if (is_wp_error($request)) { return $request; } $response = wp_remote_retrieve_response_code($request); if (200 !== $response) { return new WP_Error($response, wp_remote_retrieve_response_message($request), $request); } return json_decode(wp_remote_retrieve_body($request), true); }
/** * Retrieves search stats from Elasticsearch. * * Retrieves various search statistics from the ES server. * * @since 1.9 * * @param int $blog_id Id of blog to get stats. * * @return array Contains the status message or the returned statistics. */ public function get_search_status($blog_id = null) { if (is_wp_error(ep_get_host())) { return array('status' => false, 'msg' => esc_html__('Elasticsearch Host is not available.', 'elasticpress')); } else { if (is_multisite() && null === $blog_id) { $path = ep_get_network_alias() . '/_stats/search/'; } else { $path = ep_get_index_name($blog_id) . '/_stats/search/'; } $request = ep_remote_request($path, array('method' => 'GET')); } if (!is_wp_error($request)) { $stats = json_decode(wp_remote_retrieve_body($request)); if (isset($stats->_all)) { return $stats->_all->primaries->search; } return false; } return array('status' => false, 'msg' => $request->get_error_message()); }