AlkantarClanX12
Current Path : /home/thanudqk/thepball.com/wp-content/plugins/wordpress-seo/admin/ryte/ |
Current File : /home/thanudqk/thepball.com/wp-content/plugins/wordpress-seo/admin/ryte/class-ryte-request.php |
<?php /** * WPSEO plugin file. * * @package WPSEO\Admin */ /** * This class will fetch a new status from Ryte and if it's necessary it will * notify the site admin by email and remove the current meta value to hide the * notice for all admin users. */ class WPSEO_Ryte_Request { /** * The endpoint where the request will be send to. * * @var string */ private $ryte_endpoint = 'https://indexability.yoast.onpage.org/'; /** * Gets the response from the Ryte API and returns the body. * * @param string $target_url The URL to check indexability for. * @param array $parameters Array of extra parameters to send to the Ryte API. * * @return array The successful response or the error details. */ protected function get_remote( $target_url, $parameters = [] ) { $defaults = [ 'url' => $target_url, 'wp_version' => $GLOBALS['wp_version'], 'yseo_version' => WPSEO_VERSION, ]; $parameters = array_merge( $defaults, $parameters ); $url = add_query_arg( $parameters, $this->ryte_endpoint ); $response = wp_remote_get( $url ); return $this->process_response( $response ); } /** * Sends a request to the Ryte API to check whether a URL is indexable. * * @param string $target_url The URL to check indexability for. * @param array $parameters Array of extra parameters to send to the Ryte API. * * @return array */ public function do_request( $target_url, $parameters = [] ) { $json_body = $this->get_remote( $target_url, $parameters ); // Ryte recognized a redirect, fetch the data of that URL by calling this method with the value from Ryte. if ( ! empty( $json_body['passes_juice_to'] ) ) { return $this->do_request( $json_body['passes_juice_to'], $parameters ); } return $json_body; } /** * Processes the given Ryte response. * * @param array|WP_Error $response The response or WP_Error to process. * * @return array The response body or the error detaiils on failure. */ protected function process_response( $response ) { // Most of the potential errors are WP_Error(s). if ( is_wp_error( $response ) ) { return [ 'is_error' => true, 'raw_error_code' => '', // WP_Error codes aren't that helpful for users, let's display them in a less prominent way. 'wp_error_code' => '(' . $response->get_error_code() . ')', 'message' => $response->get_error_message(), ]; } /* * As of February 2020 the Ryte API returns an error 500 for non-reachable * sites. There's also the need to handle any potential raw HTTP error. */ if ( wp_remote_retrieve_response_code( $response ) !== 200 ) { // Not all HTTP errors may have a response message. Let's provide a default one. $response_message = wp_remote_retrieve_response_message( $response ); $message = ( $response_message ) ? $response_message : __( 'The request to Ryte returned an error.', 'wordpress-seo' ); return [ 'is_error' => true, 'raw_error_code' => wp_remote_retrieve_response_code( $response ), 'wp_error_code' => '', 'message' => $message, ]; } // When the request is successful, the response code will be 200. $response_body = wp_remote_retrieve_body( $response ); return json_decode( $response_body, true ); } }