mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
101 lines
2.5 KiB
PHP
101 lines
2.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace OAuth\Common\Service;
|
||
|
|
||
|
use OAuth\Common\Consumer\CredentialsInterface;
|
||
|
use OAuth\Common\Http\Client\ClientInterface;
|
||
|
use OAuth\Common\Http\Uri\Uri;
|
||
|
use OAuth\Common\Http\Uri\UriInterface;
|
||
|
use OAuth\Common\Exception\Exception;
|
||
|
use OAuth\Common\Storage\TokenStorageInterface;
|
||
|
|
||
|
/**
|
||
|
* Abstract OAuth service, version-agnostic
|
||
|
*/
|
||
|
abstract class AbstractService implements ServiceInterface
|
||
|
{
|
||
|
/** @var Credentials */
|
||
|
protected $credentials;
|
||
|
|
||
|
/** @var ClientInterface */
|
||
|
protected $httpClient;
|
||
|
|
||
|
/** @var TokenStorageInterface */
|
||
|
protected $storage;
|
||
|
|
||
|
/**
|
||
|
* @param CredentialsInterface $credentials
|
||
|
* @param ClientInterface $httpClient
|
||
|
* @param TokenStorageInterface $storage
|
||
|
*/
|
||
|
public function __construct(
|
||
|
CredentialsInterface $credentials,
|
||
|
ClientInterface $httpClient,
|
||
|
TokenStorageInterface $storage
|
||
|
) {
|
||
|
$this->credentials = $credentials;
|
||
|
$this->httpClient = $httpClient;
|
||
|
$this->storage = $storage;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param UriInterface|string $path
|
||
|
* @param UriInterface $baseApiUri
|
||
|
*
|
||
|
* @return UriInterface
|
||
|
*
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
protected function determineRequestUriFromPath($path, UriInterface $baseApiUri = null)
|
||
|
{
|
||
|
if ($path instanceof UriInterface) {
|
||
|
$uri = $path;
|
||
|
} elseif (stripos($path, 'http://') === 0 || stripos($path, 'https://') === 0) {
|
||
|
$uri = new Uri($path);
|
||
|
} else {
|
||
|
if (null === $baseApiUri) {
|
||
|
throw new Exception(
|
||
|
'An absolute URI must be passed to ServiceInterface::request as no baseApiUri is set.'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
$uri = clone $baseApiUri;
|
||
|
if (false !== strpos($path, '?')) {
|
||
|
$parts = explode('?', $path, 2);
|
||
|
$path = $parts[0];
|
||
|
$query = $parts[1];
|
||
|
$uri->setQuery($query);
|
||
|
}
|
||
|
|
||
|
if ($path[0] === '/') {
|
||
|
$path = substr($path, 1);
|
||
|
}
|
||
|
|
||
|
$uri->setPath($uri->getPath() . $path);
|
||
|
}
|
||
|
|
||
|
return $uri;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accessor to the storage adapter to be able to retrieve tokens
|
||
|
*
|
||
|
* @return TokenStorageInterface
|
||
|
*/
|
||
|
public function getStorage()
|
||
|
{
|
||
|
return $this->storage;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function service()
|
||
|
{
|
||
|
// get class name without backslashes
|
||
|
$classname = get_class($this);
|
||
|
|
||
|
return preg_replace('/^.*\\\\/', '', $classname);
|
||
|
}
|
||
|
}
|