File "class-yith-external-services.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/yith-woocommerce-compare/plugin-fw/includes/class-yith-external-services.php
File size: 2.53 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* YITH Plugin External Services Class.
*
* @class YITH_External_Services
* @author YITH <[email protected]>
* @package YITH\PluginFramework\Classes
* @since 4.6.2
*/
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
if ( ! class_exists( 'YITH_External_Services' ) ) {
/**
* Class YITH_External_Services
*/
class YITH_External_Services {
const API_URL = "https://o37n31x524.execute-api.eu-north-1.amazonaws.com/v1/";
/**
* The single instance of the class.
*
* @var self
*/
protected static $instance = null;
/**
* Get class instance.
*
* @return self
*/
public static function get_instance() {
return ! is_null( static::$instance ) ? static::$instance : static::$instance = new static();
}
/**
* Constructor
*/
protected function __construct() {
}
/**
* Do an API request
*
* @param string $endpoint The endpoint of the request.
* @param array $args An array of request arguments.
*
* @return array
* @throws Exception Throws Exception.
* @since 4.6.2
*/
public function request( $endpoint, $args = array() ) {
$defaults = array(
'headers' => array(
'Content-Type' => ' application/json',
),
'method' => 'POST',
'timeout' => 2900,
);
// Merge given args with default.
$args = array_merge( $defaults, $args );
$url = self::API_URL . $endpoint;
// Make the request.
$response = wp_remote_request( $url, $args );
if ( is_wp_error( $response ) || ! in_array( absint( $response['response']['code'] ), array( 200, 201, 400, 204 ), true ) ) {
throw new Exception( esc_html_x( 'Error: Unable to process the External Services API Request.' . $response['response']['message'], 'External Services error message', 'yith-plugin-fw' ) );
}
return $this->maybe_json_decode( $response['body'] );
}
/**
* Decode a Json string if necessary
*
* @param string $response String to check.
*
* @return string|array
*/
private function maybe_json_decode( $response ) {
json_decode( $response );
return json_last_error() === JSON_ERROR_NONE ? json_decode( $response, true ) : $response;
}
/**
* Return the authentication token
*
* @param array $args Args to request a new token.
*
* @return array|string
* @throws Exception
*/
public function auth( $args ) {
return $this->request('auth', $args );
}
}
}
YITH_External_Services::get_instance();