WC_Admin_Addons::process_api_responseprivate staticWC 1.0

Process API response from WooCommerce.com endpoints.

Method of the class: WC_Admin_Addons{}

Returns

Array|WP_Error. Processed API data or WP_Error on failure.

Usage

$result = WC_Admin_Addons::process_api_response( $response, $context, $associative );
$response(array|WP_Error) (required)
The response from the API request.
$context(string)
Context for error messages (e.g. 'featured', 'product-preview').
Default: 'api'
$associative(true|false)
Whether to decode the JSON as an associative array.
Default: false

WC_Admin_Addons::process_api_response() code WC 10.7.0

private static function process_api_response( $response, $context = 'api', $associative = false ) {
	if ( is_wp_error( $response ) ) {
		/**
		 * Hook fired when there is a connection error with WooCommerce.com.
		 *
		 * @since 6.1.0
		 * @param string $error_message The error message.
		 */
		do_action( 'woocommerce_page_wc_addons_connection_error', $response->get_error_message() );

		$message = self::is_ssl_error( $response->get_error_message() )
			? __(
				'We encountered an SSL error. Please ensure your site supports TLS version 1.2 or above.',
				'woocommerce'
			)
			: $response->get_error_message();

		return new WP_Error( 'wc-addons-connection-error', $message );
	}

	$response_code = (int) wp_remote_retrieve_response_code( $response );
	if ( 200 !== $response_code ) {
		/**
		 * Hook fired when there is a connection error with WooCommerce.com.
		 *
		 * @since 6.1.0
		 * @param int $response_code The HTTP response code.
		 */
		do_action( 'woocommerce_page_wc_addons_connection_error', $response_code );

		$message = sprintf(
			/* translators: 1: Context (e.g. 'featured', 'product-preview') 2: HTTP error code */
			__( 'Our request to the %1$s API got error code %2$d.', 'woocommerce' ),
			$context,
			$response_code
		);

		return new WP_Error( 'wc-addons-connection-error', $message );
	}

	$data = json_decode( wp_remote_retrieve_body( $response ), $associative );
	if ( empty( $data ) || ! is_array( $data ) ) {
		/**
		 * Hook fired when there is a connection error with WooCommerce.com.
		 *
		 * @since 6.1.0
		 * @param string $error_message The error message.
		 */
		do_action( 'woocommerce_page_wc_addons_connection_error', 'Empty or malformed response' );

		$message = sprintf(
			/* translators: %s: Context (e.g. 'featured', 'product-preview') */
			__( 'Our request to the %s API got a malformed response.', 'woocommerce' ),
			$context
		);

		return new WP_Error( 'wc-addons-connection-error', $message );
	}

	return $data;
}