380 lines
8.6 KiB
PHP
380 lines
8.6 KiB
PHP
<?php
|
|
/**
|
|
* Configuration
|
|
* PHP version 7.4
|
|
*
|
|
* @category Class
|
|
* @package Xendit
|
|
*/
|
|
|
|
/**
|
|
* Payment Requests
|
|
*
|
|
* The version of the OpenAPI document: 1.59.0
|
|
*/
|
|
|
|
/**
|
|
* NOTE: This class is auto generated.
|
|
* Do not edit the class manually.
|
|
*/
|
|
|
|
namespace Xendit;
|
|
|
|
/**
|
|
* Configuration Class Doc Comment
|
|
* PHP version 7.4
|
|
*
|
|
* @category Class
|
|
* @package Xendit
|
|
*/
|
|
class Configuration
|
|
{
|
|
public const BOOLEAN_FORMAT_INT = 'int';
|
|
public const BOOLEAN_FORMAT_STRING = 'string';
|
|
|
|
/**
|
|
* @var Configuration
|
|
*/
|
|
private static $defaultConfiguration;
|
|
|
|
/**
|
|
* API Key
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $apiKey = '';
|
|
|
|
|
|
/**
|
|
* Boolean format for query string
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $booleanFormatForQueryString = self::BOOLEAN_FORMAT_INT;
|
|
|
|
/**
|
|
* The host
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $host = 'https://api.xendit.co';
|
|
|
|
/**
|
|
* User agent of the HTTP request, set to "OpenAPI-Generator/{version}/PHP" by default
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $userAgent = 'OpenAPI-Generator/5.0.0/PHP';
|
|
|
|
/**
|
|
* Debug switch (default set to false)
|
|
*
|
|
* @var bool
|
|
*/
|
|
protected $debug = false;
|
|
|
|
/**
|
|
* Debug file location (log to STDOUT by default)
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $debugFile = 'php://output';
|
|
|
|
/**
|
|
* Debug file location (log to STDOUT by default)
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $tempFolderPath;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->tempFolderPath = sys_get_temp_dir();
|
|
}
|
|
|
|
/**
|
|
* Sets API key
|
|
*
|
|
* @param string $key API key or token
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setApiKey($key)
|
|
{
|
|
$this->apiKey = $key;
|
|
return $this;
|
|
}
|
|
|
|
|
|
public static function setXenditKey($key)
|
|
{
|
|
Configuration::getDefaultConfiguration()->setApiKey($key);
|
|
}
|
|
|
|
/**
|
|
* Gets API key
|
|
*
|
|
* @return null|string API key
|
|
*/
|
|
public function getApiKey()
|
|
{
|
|
return $this->apiKey;
|
|
}
|
|
|
|
/**
|
|
* Sets boolean format for query string.
|
|
*
|
|
* @param string $booleanFormatForQueryString Boolean format for query string
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setBooleanFormatForQueryString(string $booleanFormat)
|
|
{
|
|
$this->booleanFormatForQueryString = $booleanFormat;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets boolean format for query string.
|
|
*
|
|
* @return string Boolean format for query string
|
|
*/
|
|
public function getBooleanFormatForQueryString(): string
|
|
{
|
|
return $this->booleanFormatForQueryString;
|
|
}
|
|
|
|
/**
|
|
* Sets the host
|
|
*
|
|
* @param string $host Host
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setHost($host)
|
|
{
|
|
$this->host = $host;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the host
|
|
*
|
|
* @return string Host
|
|
*/
|
|
public function getHost()
|
|
{
|
|
return $this->host;
|
|
}
|
|
|
|
/**
|
|
* Sets the user agent of the api client
|
|
*
|
|
* @param string $userAgent the user agent of the api client
|
|
*
|
|
* @throws \InvalidArgumentException
|
|
* @return $this
|
|
*/
|
|
public function setUserAgent($userAgent)
|
|
{
|
|
if (!is_string($userAgent)) {
|
|
throw new \InvalidArgumentException('User-agent must be a string.');
|
|
}
|
|
|
|
$this->userAgent = $userAgent;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the user agent of the api client
|
|
*
|
|
* @return string user agent
|
|
*/
|
|
public function getUserAgent()
|
|
{
|
|
return $this->userAgent;
|
|
}
|
|
|
|
/**
|
|
* Sets debug flag
|
|
*
|
|
* @param bool $debug Debug flag
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setDebug($debug)
|
|
{
|
|
$this->debug = $debug;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the debug flag
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function getDebug()
|
|
{
|
|
return $this->debug;
|
|
}
|
|
|
|
/**
|
|
* Sets the debug file
|
|
*
|
|
* @param string $debugFile Debug file
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setDebugFile($debugFile)
|
|
{
|
|
$this->debugFile = $debugFile;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the debug file
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getDebugFile()
|
|
{
|
|
return $this->debugFile;
|
|
}
|
|
|
|
/**
|
|
* Sets the temp folder path
|
|
*
|
|
* @param string $tempFolderPath Temp folder path
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setTempFolderPath($tempFolderPath)
|
|
{
|
|
$this->tempFolderPath = $tempFolderPath;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Gets the temp folder path
|
|
*
|
|
* @return string Temp folder path
|
|
*/
|
|
public function getTempFolderPath()
|
|
{
|
|
return $this->tempFolderPath;
|
|
}
|
|
|
|
/**
|
|
* Gets the default configuration instance
|
|
*
|
|
* @return Configuration
|
|
*/
|
|
public static function getDefaultConfiguration()
|
|
{
|
|
if (self::$defaultConfiguration === null) {
|
|
self::$defaultConfiguration = new Configuration();
|
|
}
|
|
|
|
return self::$defaultConfiguration;
|
|
}
|
|
|
|
/**
|
|
* Sets the default configuration instance
|
|
*
|
|
* @param Configuration $config An instance of the Configuration Object
|
|
*
|
|
* @return void
|
|
*/
|
|
public static function setDefaultConfiguration(Configuration $config)
|
|
{
|
|
self::$defaultConfiguration = $config;
|
|
}
|
|
|
|
/**
|
|
* Gets the essential information for debugging
|
|
*
|
|
* @return string The report for debugging
|
|
*/
|
|
public static function toDebugReport()
|
|
{
|
|
$report = 'PHP SDK (Xendit) Debug Report:' . PHP_EOL;
|
|
$report .= ' OS: ' . php_uname() . PHP_EOL;
|
|
$report .= ' PHP Version: ' . PHP_VERSION . PHP_EOL;
|
|
$report .= ' The version of the OpenAPI document: 1.59.0' . PHP_EOL;
|
|
$report .= ' SDK Package Version: 5.0.0' . PHP_EOL;
|
|
$report .= ' Temp Folder Path: ' . self::getDefaultConfiguration()->getTempFolderPath() . PHP_EOL;
|
|
|
|
return $report;
|
|
}
|
|
|
|
/**
|
|
* Returns an array of host settings
|
|
*
|
|
* @return array an array of host settings
|
|
*/
|
|
public function getHostSettings()
|
|
{
|
|
return [
|
|
[
|
|
"url" => "https://api.xendit.co",
|
|
"description" => "Xendit API Server",
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Returns URL based on host settings, index and variables
|
|
*
|
|
* @param array $hostSettings array of host settings, generated from getHostSettings() or equivalent from the API clients
|
|
* @param int $hostIndex index of the host settings
|
|
* @param array|null $variables hash of variable and the corresponding value (optional)
|
|
* @return string URL based on host settings
|
|
*/
|
|
public static function getHostString(array $hostsSettings, $hostIndex, array $variables = null)
|
|
{
|
|
if (null === $variables) {
|
|
$variables = [];
|
|
}
|
|
|
|
// check array index out of bound
|
|
if ($hostIndex < 0 || $hostIndex >= count($hostsSettings)) {
|
|
throw new \InvalidArgumentException("Invalid index $hostIndex when selecting the host. Must be less than ".count($hostsSettings));
|
|
}
|
|
|
|
$host = $hostsSettings[$hostIndex];
|
|
$url = $host["url"];
|
|
|
|
// go through variable and assign a value
|
|
foreach ($host["variables"] ?? [] as $name => $variable) {
|
|
if (array_key_exists($name, $variables)) { // check to see if it's in the variables provided by the user
|
|
if (!isset($variable['enum_values']) || in_array($variables[$name], $variable["enum_values"], true)) { // check to see if the value is in the enum
|
|
$url = str_replace("{".$name."}", $variables[$name], $url);
|
|
} else {
|
|
throw new \InvalidArgumentException("The variable `$name` in the host URL has invalid value ".$variables[$name].". Must be ".join(',', $variable["enum_values"]).".");
|
|
}
|
|
} else {
|
|
// use default value
|
|
$url = str_replace("{".$name."}", $variable["default_value"], $url);
|
|
}
|
|
}
|
|
|
|
return $url;
|
|
}
|
|
|
|
/**
|
|
* Returns URL based on the index and variables
|
|
*
|
|
* @param int $index index of the host settings
|
|
* @param array|null $variables hash of variable and the corresponding value (optional)
|
|
* @return string URL based on host settings
|
|
*/
|
|
public function getHostFromSettings($index, $variables = null)
|
|
{
|
|
return self::getHostString($this->getHostSettings(), $index, $variables);
|
|
}
|
|
}
|