gogetssl-api/GoGetSSLApi.php

452 lines
11 KiB
PHP

<?php
class GoGetSSLApi
{
protected $key;
protected $lastError;
protected $lastStatus;
protected $lastResponse;
protected $apiUrl = 'https://my.gogetssl.com/api';
public function __construct($key = null)
{
if (isset($key)) {
$this->setKey($key);
}
}
public function auth($user, $pass)
{
$response = $this->call('/auth/', [], [
'user' => $user,
'pass' => $pass
]);
if (isset($response ['key'])) {
$this->setKey($response ['key']);
return $response;
}
return false;
}
public function addSslSan($orderId, $count)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call(
'/orders/add_ssl_san_order/',
['auth_key' => $this->key],
['order_id' => $orderId, 'count' => $count]
);
}
public function cancelSSLOrder($orderId, $reason)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call(
'/orders/cancel_ssl_order/',
['auth_key' => $this->key],
['order_id' => $orderId, 'reason' => $reason]);
}
public function changeDcv($orderId, $data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/ssl/change_dcv/{$orderId}",
['auth_key' => $this->key],
$data);
}
public function changeValidationEmail($orderId, $data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/ssl/change_validation_email/{$orderId}",
['auth_key' => $this->key],
$data);
}
public function decodeCSR($csr, $brand = 1, $wildcard = 0)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/tools/csr/decode/',
['auth_key' => $this->key],
['csr' => $csr, 'brand' => $brand, 'wildcard' => $wildcard]);
}
/*
* Get Domain Emails List
*/
public function getWebServers($type)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/tools/webservers/{$type}", ['auth_key' => $this->key]);
}
public function getDomainAlternative($csr)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/tools/domain/alternative/',
['auth_key' => $this->key],
['csr' => trim($csr)]);
}
/*
* Get Domain Emails List
*/
public function getDomainEmails($domain)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/tools/domain/emails/',
['auth_key' => $this->key],
['domain' => $domain]);
}
public function getDomainEmailsForGeotrust($domain)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/tools/domain/emails/geotrust',
['auth_key' => $this->key],
['domain' => $domain]);
}
/**
* @deprecated
* @return mixed
* @throws GoGetSSLAuthException
*/
public function getAllProductPrices()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/products/all_prices/', ['auth_key' => $this->key]);
}
/**
* @deprecated
* @return mixed
* @throws GoGetSSLAuthException
*/
public function getAllProducts()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/products/', ['auth_key' => $this->key]);
}
public function getProduct($productId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/products/ssl/{$productId}", ['auth_key' => $this->key]);
}
public function getProducts()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/products/ssl/', ['auth_key' => $this->key]);
}
/**
* @deprecated
* @param int $productId
* @return array
* @throws GoGetSSLAuthException
*/
public function getProductDetails($productId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/products/details/{$productId}", ['auth_key' => $this->key]);
}
/**
* @deprecated
* @param int $productId
* @return array
* @throws GoGetSSLAuthException
*/
public function getProductPrice($productId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/products/price/{$productId}", ['auth_key' => $this->key]);
}
public function getUserAgreement($productId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/products/agreement/{$productId}", ['auth_key' => $this->key]);
}
public function getAccountBalance()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/account/balance/', ['auth_key' => $this->key]);
}
public function getAccountDetails()
{
if (!$this->key) {
throw new GoGetSSLAuthExceptio();
}
return $this->call('/account/', ['auth_key' => $this->key]);
}
public function getTotalOrders()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/account/total_orders/', ['auth_key' => $this->key]);
}
public function getAllInvoices()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/account/invoices/', ['auth_key' => $this->key]);
}
public function getUnpaidInvoices()
{
if (!$this->key) {
throw new GoGetSSLAuthException ();
}
return $this->call('/account/invoices/unpaid/', ['auth_key' => $this->key]);
}
public function getTotalTransactions()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/account/total_transactions/', ['auth_key' => $this->key]);
}
public function addSSLOrder($data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/orders/add_ssl_order/', ['auth_key' => $this->key], $data);
}
public function addSSLRenewOrder($data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/orders/add_ssl_renew_order/', ['auth_key' => $this->key], $data);
}
public function reIssueOrder($orderId, $data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/ssl/reissue/{$orderId}", ['auth_key' => $this->key], $data);
}
public function addSandboxAccount($data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/accounts/sandbox/add/', ['auth_key' => $this->key], $data);
}
public function getOrderStatus($orderId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/status/{$orderId}", ['auth_key' => $this->key]);
}
public function comodoClaimFreeEV($orderId, $data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/ssl/comodo_claim_free_ev/{$orderId}" , ['auth_key' => $this->key], $data);
}
public function getOrderInvoice($orderId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/invoice/{$orderId}", ['auth_key' => $this->key]);
}
public function getUnpaidOrders()
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/orders/list/unpaid/', ['auth_key' => $this->key]);
}
public function resendEmail($orderId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/ssl/resend_validation_email/{$orderId}", ['auth_key' => $this->key]);
}
public function resendValidationEmail($orderId)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call("/orders/ssl/resend_validation_email/{$orderId}", ['auth_key' => $this->key]);
}
public function getCSR($data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/tools/csr/get/', ['auth_key' => $this->key], $data);
}
public function generateCSR($data)
{
if (!$this->key) {
throw new GoGetSSLAuthException();
}
return $this->call('/tools/csr/generate/', ['auth_key' => $this->key], $data);
}
protected function call($uri, $getData = [], $postData = [])
{
$curl = curl_init();
$endpoint = count($getData)
? "{$this->apiUrl}{$uri}?" . http_build_query($getData)
: "{$this->apiUrl}{$uri}";
$options = [
CURLOPT_URL => $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_SSL_VERIFYPEER => false,
];
if (count($postData)) {
$options[CURLOPT_CUSTOMREQUEST] = "POST";
$options[CURLOPT_POSTFIELDS] = http_build_query($postData);
$options[CURLOPT_HTTPHEADER] = ["Content-Type: application/x-www-form-urlencoded"];
}
curl_setopt_array($curl, $options);
$response = curl_exec($curl);
$this->lastError = curl_error($curl);
$this->lastStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$this->lastResponse = json_decode($response, true);
curl_close($curl);
return $this->lastResponse;
}
public function setKey($key)
{
$this->key = $key;
}
public function setUrl($url)
{
$this->apiUrl = $url;
}
public function getLastStatus()
{
return $this->lastStatus;
}
public function getLastResponse()
{
return $this->lastResponse;
}
}
class GoGetSSLAuthException extends Exception
{
public function __construct()
{
parent::__construct('Please authorize first');
}
}