first commit
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
class Api
|
||||
{
|
||||
|
||||
private static $instance;
|
||||
private static $httpAuthToken;
|
||||
private static $encryptionAlg;
|
||||
private static $encryptionKey;
|
||||
private static $encryptionIV;
|
||||
private static $baseURL;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
public static function initConfig()
|
||||
{
|
||||
global $savvyext;
|
||||
self::$httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token');
|
||||
self::$encryptionAlg = $savvyext->cfgReadChar('encryption.algorithm');
|
||||
self::$encryptionKey = $savvyext->cfgReadChar('encryption.key');
|
||||
self::$encryptionIV = $savvyext->cfgReadChar('encryption.iv');
|
||||
self::$baseURL = $savvyext->cfgReadChar('system.api_url');
|
||||
}
|
||||
|
||||
public static function getInstance()
|
||||
{
|
||||
if (null === static::$instance) {
|
||||
static::$instance = new static;
|
||||
self::initConfig();
|
||||
return static::$instance;
|
||||
}
|
||||
return static::$instance;
|
||||
}
|
||||
|
||||
public static function postData($endpoint, $payload)
|
||||
{
|
||||
self::getInstance();
|
||||
$encrypted_payload = bin2hex(
|
||||
openssl_encrypt(
|
||||
$payload,
|
||||
self::$encryptionAlg,
|
||||
self::$encryptionKey,
|
||||
OPENSSL_RAW_DATA,
|
||||
self::$encryptionIV
|
||||
));
|
||||
$postdata = "{\"encrypted_payload\": \"${encrypted_payload}\"}";
|
||||
$url = self::$baseURL . $endpoint;
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, false);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json',
|
||||
'Content-Length: ' . strlen($postdata),
|
||||
'Authorization: Server-Token ' . self::$httpAuthToken,
|
||||
"client_id: BATCH"
|
||||
)
|
||||
);
|
||||
|
||||
$body = curl_exec($ch);
|
||||
$result = json_decode($body, true);
|
||||
|
||||
$decrypted = openssl_decrypt(
|
||||
hex2bin(
|
||||
$result['payload']
|
||||
),
|
||||
self::$encryptionAlg,
|
||||
self::$encryptionKey,
|
||||
OPENSSL_RAW_DATA,
|
||||
self::$encryptionIV
|
||||
);
|
||||
$payload = json_decode($decrypted, true);
|
||||
return $payload;
|
||||
}
|
||||
|
||||
public static function getData($endpoint)
|
||||
{
|
||||
self::getInstance();
|
||||
if ($endpoint != "") { // minimal sanity
|
||||
sleep(1);
|
||||
$url = self::$baseURL . $endpoint;
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, false);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json',
|
||||
'Authorization: Server-Token ' . self::$httpAuthToken,
|
||||
"client_id: BATCH"
|
||||
)
|
||||
);
|
||||
|
||||
$body = curl_exec($ch);
|
||||
$result = json_decode($body, true);
|
||||
$decrypted = openssl_decrypt(
|
||||
hex2bin(
|
||||
$result['payload']
|
||||
),
|
||||
self::$encryptionAlg,
|
||||
self::$encryptionKey,
|
||||
OPENSSL_RAW_DATA,
|
||||
self::$encryptionIV
|
||||
);
|
||||
$payload = json_decode($decrypted, true);
|
||||
return [$payload, $decrypted, $result, $body];
|
||||
}
|
||||
return [null, null, null, null];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user