Api_Server::api_call( $params )
api_call
Contents
Parameters Parameters
- $endpoint
-
(Required)
- $body
-
(Required)
Return Return
(void)
Source Source
File: src/core/classes/class-api-server.php
public static function api_call( $params ) { $api = self::get_instance(); if ( null !== self::$mock_response ) { return self::$mock_response; } if ( empty( $params['endpoint'] ) ) { throw new \Exception( 'Endpoint is required', 500 ); } if ( empty( $params['body'] ) ) { throw new \Exception( 'Request body is required', 500 ); } $params = $api->add_endpoint_parts( $params ); $params['method'] = 'POST'; $params['url'] = self::$url . $params['endpoint']; $params['body']['plugin_ver'] = InitializePlugin::PLUGIN_VERSION; $params = $api->filter_params( $params ); $response = self::call( $params ); $code = wp_remote_retrieve_response_code( $response ); $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); //Some endpoints like Mailchimp send a NULL as the reponse with a code in case of success. if ( empty( $response_body ) && ! empty( $code ) ) { $response_body = $api->create_payload( null, $code ); } if ( ! is_array( $response_body ) ) { automator_log( var_export( $response_body, true ), 'Invalid API response: ' ); //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export throw new \Exception( 'Invalid API response', 500 ); } if ( isset( $response_body['error'] ) && isset( $response_body['error']['description'] ) ) { $error = $response_body['error']['description']; automator_log( $error, 'api_call returned an error: ' ); throw new \Exception( $error, $response_body['statusCode'] ); } // Handle response body that has [data][error][message] (e.g. Instagram user media publish limit exceeded). if ( isset( $response_body['data']['error'] ) && isset( $response_body['data']['error']['message'] ) ) { throw new \Exception( 'API has responded with an error message: ' . $response_body['data']['error']['message'], $response_body['statusCode'] ); } if ( isset( $response_body['statusCode'] ) && array_key_exists( 'data', $response_body ) ) { return $response_body; } automator_log( var_export( $response_body, true ), 'Unrecognized API response: ' ); //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export throw new \Exception( 'Unrecognized API response', 500 ); }
Expand full source code Collapse full source code View on Github