src/Sell/Negotiation/V1/Configuration.php
<?php
/**
* This file is part of the trollandtoad/ebay-sdk-php package.
*
* MIT License
*
* Copyright (c) 2022 Brandon Clothier
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/
declare(strict_types=1);
/**
* Configuration.
*
* PHP version ^7.2 || ^8.0
*
* @category Class
*
* @author OpenAPI Generator team
*
* @see https://openapi-generator.tech
*/
/**
* Negotiation API.
*
* The <b>Negotiations API</b> gives sellers the ability to proactively send discount offers to buyers who have shown an \"interest\" in their listings. <br><br>By sending buyers discount offers on listings where they have shown an interest, sellers can increase the velocity of their sales. <br><br>There are various ways for a buyer to show <i>interest </i> in a listing. For example, if a buyer adds the listing to their <b>Watch</b> list, or if they add the listing to their shopping cart and later abandon the cart, they are deemed to have shown an interest in the listing. <br><br>In the offers that sellers send, they can discount their listings by either a percentage off the listing price, or they can set a new discounted price that is lower than the original listing price. <br><br>For details about how seller offers work, see <a href=\"/api-docs/sell/static/marketing/offers-to-buyers.html\" title=\"Selling Integration Guide\">Sending offers to buyers</a>.
*
* The version of the OpenAPI document: v1.1.0
* Generated by: https://openapi-generator.tech
* OpenAPI Generator version: 5.4.0
*/
/**
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
namespace TNT\Ebay\Sell\Negotiation\V1;
/**
* Configuration Class Doc Comment.
*
* @category Class
*
* @author OpenAPI Generator team
*
* @see https://openapi-generator.tech
*/
class Configuration
{
/**
* @var Configuration
*/
private static $defaultConfiguration;
/**
* Associate array to store API key(s).
*
* @var string[]
*/
protected $apiKeys = [];
/**
* Associate array to store API prefix (e.g. Bearer).
*
* @var string[]
*/
protected $apiKeyPrefixes = [];
/**
* Access token for OAuth/Bearer authentication.
*
* @var string
*/
protected $accessToken = '';
/**
* Username for HTTP basic authentication.
*
* @var string
*/
protected $username = '';
/**
* Password for HTTP basic authentication.
*
* @var string
*/
protected $password = '';
/**
* The host.
*
* @var string
*/
protected $host = 'https://api.ebay.com/sell/negotiation/v1';
/**
* User agent of the HTTP request, set to "OpenAPI-Generator/{version}/PHP" by default.
*
* @var string
*/
protected $userAgent = 'brandon14/ebay-sdk-php/0.2.2/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 $apiKeyIdentifier API key identifier (authentication scheme)
* @param string $key API key or token
*
* @return $this
*/
public function setApiKey($apiKeyIdentifier, $key)
{
$this->apiKeys[$apiKeyIdentifier] = $key;
return $this;
}
/**
* Gets API key.
*
* @param string $apiKeyIdentifier API key identifier (authentication scheme)
*
* @return string|null API key or token
*/
public function getApiKey($apiKeyIdentifier)
{
return $this->apiKeys[$apiKeyIdentifier] ?? null;
}
/**
* Sets the prefix for API key (e.g. Bearer).
*
* @param string $apiKeyIdentifier API key identifier (authentication scheme)
* @param string $prefix API key prefix, e.g. Bearer
*
* @return $this
*/
public function setApiKeyPrefix($apiKeyIdentifier, $prefix)
{
$this->apiKeyPrefixes[$apiKeyIdentifier] = $prefix;
return $this;
}
/**
* Gets API key prefix.
*
* @param string $apiKeyIdentifier API key identifier (authentication scheme)
*
* @return string|null
*/
public function getApiKeyPrefix($apiKeyIdentifier)
{
return $this->apiKeyPrefixes[$apiKeyIdentifier] ?? null;
}
/**
* Sets the access token for OAuth.
*
* @param string $accessToken Token for OAuth
*
* @return $this
*/
public function setAccessToken($accessToken)
{
$this->accessToken = $accessToken;
return $this;
}
/**
* Gets the access token for OAuth.
*
* @return string Access token for OAuth
*/
public function getAccessToken()
{
return $this->accessToken;
}
/**
* Sets the username for HTTP basic authentication.
*
* @param string $username Username for HTTP basic authentication
*
* @return $this
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Gets the username for HTTP basic authentication.
*
* @return string Username for HTTP basic authentication
*/
public function getUsername()
{
return $this->username;
}
/**
* Sets the password for HTTP basic authentication.
*
* @param string $password Password for HTTP basic authentication
*
* @return $this
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
/**
* Gets the password for HTTP basic authentication.
*
* @return string Password for HTTP basic authentication
*/
public function getPassword()
{
return $this->password;
}
/**
* 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 self();
}
return self::$defaultConfiguration;
}
/**
* Sets the default configuration instance.
*
* @param Configuration $config An instance of the Configuration Object
*
* @return void
*/
public static function setDefaultConfiguration(self $config)
{
self::$defaultConfiguration = $config;
}
/**
* Gets the essential information for debugging.
*
* @return string The report for debugging
*/
public static function toDebugReport()
{
$report = 'PHP SDK (TNT\Ebay\Sell\Negotiation\V1) Debug Report:'.PHP_EOL;
$report .= ' OS: '.php_uname().PHP_EOL;
$report .= ' PHP Version: '.PHP_VERSION.PHP_EOL;
$report .= ' The version of the OpenAPI document: v1.1.0'.PHP_EOL;
$report .= ' Temp Folder Path: '.self::getDefaultConfiguration()->getTempFolderPath().PHP_EOL;
return $report;
}
/**
* Get API key (with prefix if set).
*
* @param string $apiKeyIdentifier name of apikey
*
* @return string|null API key with the prefix
*/
public function getApiKeyWithPrefix($apiKeyIdentifier)
{
$prefix = $this->getApiKeyPrefix($apiKeyIdentifier);
$apiKey = $this->getApiKey($apiKeyIdentifier);
if ($apiKey === null) {
return null;
}
if ($prefix === null) {
$keyWithPrefix = $apiKey;
} else {
$keyWithPrefix = $prefix.' '.$apiKey;
}
return $keyWithPrefix;
}
/**
* Returns an array of host settings.
*
* @return array an array of host settings
*/
public function getHostSettings()
{
return [
[
'url' => 'https://api.ebay.com{basePath}',
'description' => 'Production',
'variables' => [
'basePath' => [
'description' => 'No description provided',
'default_value' => '/sell/negotiation/v1',
],
],
],
];
}
/**
* 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)
{
if ($variables === null) {
$variables = [];
}
$hosts = $this->getHostSettings();
// check array index out of bound
if ($index < 0 || $index >= count($hosts)) {
throw new \InvalidArgumentException("Invalid index $index when selecting the host. Must be less than ".count($hosts));
}
$host = $hosts[$index];
$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 (\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 '.implode(',', $variable['enum_values']).'.');
}
} else {
// use default value
$url = str_replace('{'.$name.'}', $variable['default_value'], $url);
}
}
return $url;
}
}