From 3624a2c7c6181667af76f316d7e7f65e47a51909 Mon Sep 17 00:00:00 2001 From: Paul Dechov Date: Wed, 14 Mar 2018 16:55:13 -0400 Subject: [PATCH 1/5] Edit API client error message wording for syntax and redundancy --- classes/class-wc-connect-api-client.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/classes/class-wc-connect-api-client.php b/classes/class-wc-connect-api-client.php index c33984eb4..2d3cf9a39 100644 --- a/classes/class-wc-connect-api-client.php +++ b/classes/class-wc-connect-api-client.php @@ -372,11 +372,12 @@ protected function request( $method, $path, $body = array() ) { // If the received response is not JSON, return the raw response $content_type = wp_remote_retrieve_header( $response, 'content-type' ); if ( false === strpos( $content_type, 'application/json' ) ) { - if ( 200 != $response_code ) { - return new WP_Error( - 'wcc_server_error', - sprintf( 'Error: The WooCommerce Services server returned HTTP code: %d', $response_code ) - ); + if ( ! $response_code ) { + return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not be reached. Please make sure your server can make requests to api.woocommerce.com, and try again.' ); + } elseif ( 500 == $response_code ) { + return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API encountered an error. Please try again.' ); + } elseif ( 200 != $response_code ) { + return new WP_Error( 'wcc_server_error', sprintf( 'The WooCommerce Services API returned HTTP status code: %d', $response_code ) ); } return $response; } @@ -391,7 +392,7 @@ protected function request( $method, $path, $body = array() ) { return new WP_Error( 'wcc_server_empty_response', sprintf( - 'Error: The WooCommerce Services server returned ( %d ) and an empty response body.', + 'The WooCommerce Services API returned HTTP status code %d and an empty response body.', $response_code ) ); @@ -401,13 +402,17 @@ protected function request( $method, $path, $body = array() ) { $message = property_exists( $response_body, 'message' ) ? $response_body->message : ''; $data = property_exists( $response_body, 'data' ) ? $response_body->data : ''; + if ( 500 == $response_code ) { + return new WP_Error( 'wcc_server_error_response', 'The WooCommerce Services API encountered an error. Please try again.' ); + } + return new WP_Error( 'wcc_server_error_response', sprintf( - 'Error: The WooCommerce Services server returned: %s %s ( %d )', + 'The WooCommerce Services API returned HTTP status code %d: %s. %s', + $response_code, $error, - $message, - $response_code + $message ), $data ); From bda979ec6691815d6c844438f45c05dccdb452ac Mon Sep 17 00:00:00 2001 From: Paul Dechov Date: Fri, 30 Mar 2018 19:19:36 -0400 Subject: [PATCH 2/5] Only suggest checking server access if client receives 403 --- classes/class-wc-connect-api-client.php | 2 +- client/api/request.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/classes/class-wc-connect-api-client.php b/classes/class-wc-connect-api-client.php index 2d3cf9a39..e25b64c88 100644 --- a/classes/class-wc-connect-api-client.php +++ b/classes/class-wc-connect-api-client.php @@ -373,7 +373,7 @@ protected function request( $method, $path, $body = array() ) { $content_type = wp_remote_retrieve_header( $response, 'content-type' ); if ( false === strpos( $content_type, 'application/json' ) ) { if ( ! $response_code ) { - return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not be reached. Please make sure your server can make requests to api.woocommerce.com, and try again.' ); + return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not be reached.' ); } elseif ( 500 == $response_code ) { return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API encountered an error. Please try again.' ); } elseif ( 200 != $response_code ) { diff --git a/client/api/request.js b/client/api/request.js index 8ec38d2d8..cfb0bb68a 100644 --- a/client/api/request.js +++ b/client/api/request.js @@ -47,6 +47,15 @@ const _request = ( url, data, method, namespace = '' ) => { return; } + if ( 403 === response.status ) { + throw { + data: { + message: __( 'Please check the security configuration of your host, and make sure ' + + 'requests can be made to the WooCommerce Services API (192.0.96.246).' ), + }, + }; + } + throw json; } ); } ); From 5e6fae0f94f307531f03c4a402d16eadcca55a8c Mon Sep 17 00:00:00 2001 From: Paul Dechov Date: Fri, 30 Mar 2018 19:26:56 -0400 Subject: [PATCH 3/5] Omit HTTP status code from error, in favor of raw (if available) or generic message --- classes/class-wc-connect-api-client.php | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/classes/class-wc-connect-api-client.php b/classes/class-wc-connect-api-client.php index e25b64c88..67df9bbe0 100644 --- a/classes/class-wc-connect-api-client.php +++ b/classes/class-wc-connect-api-client.php @@ -376,8 +376,8 @@ protected function request( $method, $path, $body = array() ) { return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not be reached.' ); } elseif ( 500 == $response_code ) { return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API encountered an error. Please try again.' ); - } elseif ( 200 != $response_code ) { - return new WP_Error( 'wcc_server_error', sprintf( 'The WooCommerce Services API returned HTTP status code: %d', $response_code ) ); + } elseif ( 400 <= $response_code ) { + return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not process the request.' ); } return $response; } @@ -387,15 +387,9 @@ protected function request( $method, $path, $body = array() ) { $response_body = json_decode( $response_body ); } - if ( 200 != $response_code ) { + if ( 400 <= $response_code ) { if ( empty( $response_body ) ) { - return new WP_Error( - 'wcc_server_empty_response', - sprintf( - 'The WooCommerce Services API returned HTTP status code %d and an empty response body.', - $response_code - ) - ); + return new WP_Error( 'wcc_server_empty_response', 'The WooCommerce Services API could not process the request.' ); } $error = property_exists( $response_body, 'error' ) ? $response_body->error : ''; @@ -406,16 +400,7 @@ protected function request( $method, $path, $body = array() ) { return new WP_Error( 'wcc_server_error_response', 'The WooCommerce Services API encountered an error. Please try again.' ); } - return new WP_Error( - 'wcc_server_error_response', - sprintf( - 'The WooCommerce Services API returned HTTP status code %d: %s. %s', - $response_code, - $error, - $message - ), - $data - ); + return new WP_Error( 'wcc_server_error_response', $message, $data ); } return $response_body; From 687251ded6e43061d2881327d40326faaddfd833 Mon Sep 17 00:00:00 2001 From: Paul Dechov Date: Fri, 30 Mar 2018 19:36:30 -0400 Subject: [PATCH 4/5] Add an error message covering 502 (and similar) error response --- classes/class-wc-connect-api-client.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/classes/class-wc-connect-api-client.php b/classes/class-wc-connect-api-client.php index 67df9bbe0..61bac2729 100644 --- a/classes/class-wc-connect-api-client.php +++ b/classes/class-wc-connect-api-client.php @@ -376,6 +376,8 @@ protected function request( $method, $path, $body = array() ) { return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not be reached.' ); } elseif ( 500 == $response_code ) { return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API encountered an error. Please try again.' ); + } elseif ( 500 < $response_code ) { + return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API is unavailable. Please try again in just a moment.' ); } elseif ( 400 <= $response_code ) { return new WP_Error( 'wcc_server_error', 'The WooCommerce Services API could not process the request.' ); } @@ -398,6 +400,8 @@ protected function request( $method, $path, $body = array() ) { if ( 500 == $response_code ) { return new WP_Error( 'wcc_server_error_response', 'The WooCommerce Services API encountered an error. Please try again.' ); + } elseif ( 500 < $response_code ) { + return new WP_Error( 'wcc_server_error_response', 'The WooCommerce Services API is unavailable. Please try again in just a moment.' ); } return new WP_Error( 'wcc_server_error_response', $message, $data ); From 7dfe3a351b3b97082be41358acf14b73c81312b9 Mon Sep 17 00:00:00 2001 From: Paul Dechov Date: Fri, 6 Apr 2018 17:04:39 -0400 Subject: [PATCH 5/5] Revert unhelpful 403-specific message in client API module --- client/api/request.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/client/api/request.js b/client/api/request.js index cfb0bb68a..8ec38d2d8 100644 --- a/client/api/request.js +++ b/client/api/request.js @@ -47,15 +47,6 @@ const _request = ( url, data, method, namespace = '' ) => { return; } - if ( 403 === response.status ) { - throw { - data: { - message: __( 'Please check the security configuration of your host, and make sure ' + - 'requests can be made to the WooCommerce Services API (192.0.96.246).' ), - }, - }; - } - throw json; } ); } );