2023-07-12 07:14:57 +00:00
|
|
|
/**
|
|
|
|
* The default Header
|
|
|
|
*
|
|
|
|
* @var array
|
|
|
|
* @since 3.2.0
|
|
|
|
*/
|
|
|
|
protected array $defaultHeaders = ['Content-Type' => 'application/json'];
|
|
|
|
|
2023-07-04 06:26:05 +00:00
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*
|
|
|
|
* @param string|null $token The Openai API token.
|
2023-07-12 07:14:57 +00:00
|
|
|
* @param string|null $orgToken The Openai API Organization token.
|
2023-07-04 06:26:05 +00:00
|
|
|
*
|
|
|
|
* @since 3.2.0
|
|
|
|
* @throws \InvalidArgumentException
|
|
|
|
**/
|
2023-07-12 07:14:57 +00:00
|
|
|
public function __construct(?string $token, ?string $orgToken = null)
|
2023-07-04 06:26:05 +00:00
|
|
|
{
|
2023-07-12 07:14:57 +00:00
|
|
|
// add the token if given
|
|
|
|
if (is_string($token))
|
|
|
|
{
|
|
|
|
$this->defaultHeaders['Authorization'] = 'Bearer ' . $token;
|
|
|
|
}
|
|
|
|
|
|
|
|
// add the organization token if given
|
|
|
|
if (is_string($orgToken))
|
|
|
|
{
|
|
|
|
$this->defaultHeaders['OpenAI-Organization'] = $orgToken;
|
|
|
|
}
|
|
|
|
|
2023-07-04 06:26:05 +00:00
|
|
|
// setup config
|
|
|
|
$config = [
|
|
|
|
'userAgent' => 'JoomlaOpenai/3.0',
|
2023-07-12 07:14:57 +00:00
|
|
|
'headers' => $this->defaultHeaders
|
2023-07-04 06:26:05 +00:00
|
|
|
];
|
|
|
|
|
2023-07-12 07:14:57 +00:00
|
|
|
$options = new Registry($config);
|
|
|
|
|
|
|
|
// run parent constructor
|
|
|
|
parent::__construct($options);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Change the Tokens.
|
|
|
|
*
|
|
|
|
* @param string|null $token The Openai API token.
|
|
|
|
* @param string|null $orgToken The Openai API Organization token.
|
|
|
|
*
|
|
|
|
* @since 3.2.0
|
|
|
|
**/
|
|
|
|
public function setTokens(?string $token = null, ?string $orgToken = null)
|
|
|
|
{
|
|
|
|
// get the current headers
|
|
|
|
$this->defaultHeaders = (array) $this->getOption('headers',
|
|
|
|
$this->defaultHeaders
|
|
|
|
);
|
|
|
|
|
2023-07-04 06:26:05 +00:00
|
|
|
// add the token if given
|
|
|
|
if (is_string($token))
|
|
|
|
{
|
2023-07-12 07:14:57 +00:00
|
|
|
$this->defaultHeaders['Authorization'] = 'Bearer ' . $token;
|
2023-07-04 06:26:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// add the organization token if given
|
2023-07-12 07:14:57 +00:00
|
|
|
if (is_string($orgToken))
|
2023-07-04 06:26:05 +00:00
|
|
|
{
|
2023-07-12 07:14:57 +00:00
|
|
|
$this->defaultHeaders['OpenAI-Organization'] = $orgToken;
|
2023-07-04 06:26:05 +00:00
|
|
|
}
|
|
|
|
|
2023-07-12 07:14:57 +00:00
|
|
|
$this->setOption('headers', $this->defaultHeaders);
|
|
|
|
}
|
2023-07-04 06:26:05 +00:00
|
|
|
|
2023-07-12 07:14:57 +00:00
|
|
|
/**
|
|
|
|
* Change the User Token.
|
|
|
|
*
|
|
|
|
* @param string $token The API token.
|
|
|
|
*
|
|
|
|
* @since 3.2.0
|
|
|
|
**/
|
|
|
|
public function setToken(string $token)
|
|
|
|
{
|
|
|
|
// get the current headers
|
|
|
|
$this->defaultHeaders = (array) $this->getOption('headers',
|
|
|
|
$this->defaultHeaders
|
|
|
|
);
|
|
|
|
|
|
|
|
// add the token
|
|
|
|
$this->defaultHeaders['Authorization'] = 'Bearer ' . $token;
|
|
|
|
|
|
|
|
$this->setOption('headers', $this->defaultHeaders);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Change the Organization Token.
|
|
|
|
*
|
|
|
|
* @param string $token The Organization API token.
|
|
|
|
*
|
|
|
|
* @since 3.2.0
|
|
|
|
**/
|
|
|
|
public function setOrgToken(string $token)
|
|
|
|
{
|
|
|
|
// get the current headers
|
|
|
|
$this->defaultHeaders = (array) $this->getOption('headers',
|
|
|
|
$this->defaultHeader
|
|
|
|
);
|
|
|
|
|
|
|
|
// add the token
|
|
|
|
$this->defaultHeaders['OpenAI-Organization'] = $token;
|
|
|
|
|
|
|
|
$this->setOption('headers', $this->defaultHeaders);
|
2023-07-04 06:26:05 +00:00
|
|
|
}
|