mirror of
https://github.com/LukeHagar/plexphp.git
synced 2025-12-06 04:20:51 +00:00
173 lines
4.7 KiB
PHP
173 lines
4.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
|
|
*/
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace LukeHagar\Plex_API;
|
|
|
|
/**
|
|
* PlexAPIBuilder is used to configure and build an instance of the SDK.
|
|
*
|
|
* @package LukeHagar\Plex_API
|
|
*/
|
|
class PlexAPIBuilder
|
|
{
|
|
public function __construct(
|
|
private SDKConfiguration $sdkConfig = new SDKConfiguration(),
|
|
) {}
|
|
|
|
/**
|
|
* setClient allows setting a custom Guzzle client for the SDK to make requests with.
|
|
*
|
|
* @param \GuzzleHttp\ClientInterface $client
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setClient(\GuzzleHttp\ClientInterface $client): PlexAPIBuilder
|
|
{
|
|
$this->sdkConfig->defaultClient = $client;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* setSecurity is used to configure the security required for the SDK.
|
|
*
|
|
* @param Models\Components\Security $security
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setSecurity(Models\Components\Security $security): PlexAPIBuilder
|
|
{
|
|
$this->sdkConfig->security = $security;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* setServerUrl is used to configure the server URL for the SDK, and optionally template any parameters in the URL.
|
|
*
|
|
* @param string $serverUrl
|
|
* @param array<string, string> $params
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setServerUrl(string $serverUrl, ?array $params = null): PlexAPIBuilder
|
|
{
|
|
$this->sdkConfig->serverUrl = Utils\Utils::templateUrl($serverUrl, $params);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* setServer is used to configure the server for the SDK
|
|
*
|
|
* @param int $serverIdx
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setServerIndex(int $serverIdx): PlexAPIBuilder
|
|
{
|
|
$this->sdkConfig->serverIndex = $serverIdx;
|
|
|
|
return $this;
|
|
}
|
|
|
|
|
|
/**
|
|
* setProtocol is used to configure the protocol variable for url substitution
|
|
*
|
|
* @param ServerProtocol $protocol
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setProtocol(ServerProtocol $protocol): PlexAPIBuilder
|
|
{
|
|
foreach ($this->sdkConfig->serverDefaults as $idx => $serverDefaults) {
|
|
if (!array_key_exists('protocol', $serverDefaults)) {
|
|
continue;
|
|
}
|
|
|
|
$this->sdkConfig->serverDefaults[$idx]['protocol'] = $protocol->value;
|
|
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
/**
|
|
* setIp is used to configure the ip variable for url substitution
|
|
*
|
|
* @param string $ip
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setIp(string $ip): PlexAPIBuilder
|
|
{
|
|
foreach ($this->sdkConfig->serverDefaults as $idx => $serverDefaults) {
|
|
if (!array_key_exists('ip', $serverDefaults)) {
|
|
continue;
|
|
}
|
|
|
|
$this->sdkConfig->serverDefaults[$idx]['ip'] = $ip;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
/**
|
|
* setPort is used to configure the port variable for url substitution
|
|
*
|
|
* @param string $port
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setPort(string $port): PlexAPIBuilder
|
|
{
|
|
foreach ($this->sdkConfig->serverDefaults as $idx => $serverDefaults) {
|
|
if (!array_key_exists('port', $serverDefaults)) {
|
|
continue;
|
|
}
|
|
|
|
$this->sdkConfig->serverDefaults[$idx]['port'] = $port;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* setXPlexClientIdentifier is used to configure the X-Plex-Client-Identifier parameter for the SDK.
|
|
*
|
|
* @param string $xPlexClientIdentifier
|
|
* @return PlexAPIBuilder
|
|
*/
|
|
public function setXPlexClientIdentifier(string $xPlexClientIdentifier): PlexAPIBuilder
|
|
{
|
|
if (!array_key_exists('header', $this->sdkConfig->globals['parameters']))
|
|
{
|
|
$this->sdkConfig->globals['parameters']['header'] = [];
|
|
}
|
|
|
|
$this->sdkConfig->globals['parameters']['header']['xPlexClientIdentifier'] = $xPlexClientIdentifier;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* build is used to build the SDK with any of the configured options.
|
|
*
|
|
* @return PlexAPI
|
|
*/
|
|
public function build(): PlexAPI
|
|
{
|
|
if ($this->sdkConfig->defaultClient === null) {
|
|
$this->sdkConfig->defaultClient = new \GuzzleHttp\Client([
|
|
'timeout' => 60,
|
|
]);
|
|
}
|
|
if ($this->sdkConfig->security !== null) {
|
|
$this->sdkConfig->securityClient = Utils\Utils::configureSecurityClient($this->sdkConfig->defaultClient, $this->sdkConfig->security);
|
|
}
|
|
|
|
if ($this->sdkConfig->securityClient === null) {
|
|
$this->sdkConfig->securityClient = $this->sdkConfig->defaultClient;
|
|
}
|
|
|
|
return new PlexAPI($this->sdkConfig);
|
|
}
|
|
} |