onse_data Object of data returned from request. * @param string $url Url for the web page to be checked. * @param bool $is_mobile Optional. Flag for if this is cpcss for mobile or not. Default: false. * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. * * @return string */ private function get_response_message( $response_status_code, $response_data, $url, $is_mobile = false, $item_type = 'custom' ) { $message = ''; switch ( $response_status_code ) { case 200: if ( ! isset( $response_data->data->id ) ) { $message .= sprintf( $is_mobile ? // translators: %s = item URL. __( 'Critical CSS for %1$s on mobile not generated. Error: The API returned an empty response.', 'rocket' ) : // translators: %s = item URL. __( 'Critical CSS for %1$s not generated. Error: The API returned an empty response.', 'rocket' ), ( 'custom' === $item_type ) ? $url : $item_type ); } break; case 400: case 440: case 404: // translators: %s = item URL. $message .= sprintf( $is_mobile // translators: %s = item URL. ? __( 'Critical CSS for %1$s on mobile not generated.', 'rocket' ) // translators: %s = item URL. : __( 'Critical CSS for %1$s not generated.', 'rocket' ), ( 'custom' === $item_type ) ? $url : $item_type ); break; default: $message .= sprintf( $is_mobile // translators: %s = URL. ? __( 'Critical CSS for %1$s on mobile not generated. Error: The API returned an invalid response code.', 'rocket' ) // translators: %s = URL. : __( 'Critical CSS for %1$s not generated. Error: The API returned an invalid response code.', 'rocket' ), ( 'custom' === $item_type ) ? $url : $item_type ); break; } if ( isset( $response_data->message ) ) { // translators: %1$s = error message. $message .= ' ' . sprintf( __( 'Error: %1$s', 'rocket' ), $response_data->message ); } return $message; } /** * Get response data from the API. * * @since 3.6 * * @param array|WP_Error $response The response or WP_Error on failure. * * @return mixed response of API. */ private function get_response_data( $response ) { return json_decode( wp_remote_retrieve_body( $response ) ); } /** * Get our internal response code [Not the standard HTTP codes]. * * @since 3.6 * * @param array|WP_Error $response The response or WP_Error on failure. * * @return string response code. */ private function get_response_code( $response ) { // Todo: we can return code based on the response status number, for example 404 not_found. return 'cpcss_generation_failed'; } /** * Get job details by calling API with job ID. * * @since 3.6 * * @param string $job_id ID for the job to get details. * @param string $url URL to be used in error messages. * @param bool $is_mobile Optional. Flag for if this is cpcss for mobile or not. Default: false. * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. * * @return mixed|WP_Error Details for job. */ public function get_job_details( $job_id, $url, $is_mobile = false, $item_type = 'custom' ) { $response = wp_remote_get( self::API_URL . "{$job_id}/" ); return $this->prepare_response( $response, $url, $is_mobile, $item_type ); } }