* @license http://www.gnu.org/licenses/agpl-3.0 * @link http://fusio-project.org */ class Client { /** @var string */ private $baseUri; /** @var string */ private $appKey; /** @var string */ private $appSecret; /** @var string[]|null */ private $scopes; /** @var TokenStoreInterface */ private $tokenStore; /** @var HttpClient|null */ private $httpClient; /** @var SchemaManager|null */ private $schemaManager; /** * @param string $baseUri * @param string $appKey * @param string $appSecret * @param array|null $scopes * @param HttpClient|null $httpClient * @param SchemaManager|null $schemaManager */ public function __construct( string $baseUri, string $appKey, string $appSecret, ?array $scopes = null, ?TokenStoreInterface $tokenStore = null, ?HttpClient $httpClient = null, ?SchemaManager $schemaManager = null, ) { $this->baseUri = $baseUri; $this->appKey = $appKey; $this->appSecret = $appSecret; $this->scopes = $scopes; $this->tokenStore = $tokenStore ?? new MemoryTokenStore(); $this->httpClient = $httpClient; $this->schemaManager = $schemaManager; } public function authenticate(): AccessToken { $token = $this->tokenStore->get(); if ($token && $token->getExpiresIn() > time()) { return $token; } $authenticator = new Authenticator($this->baseUri, $this->httpClient); $token = $authenticator->requestAccessToken($this->appKey, $this->appSecret, $this->scopes); $this->tokenStore->persist($token); return $token; } public function backend(): Backend\Client { $token = $this->authenticate(); return new Backend\Client($this->baseUri, $token->getAccessToken(), $this->httpClient, $this->schemaManager); } public function consumer(): Consumer\Client { $token = $this->authenticate(); return new Consumer\Client($this->baseUri, $token->getAccessToken(), $this->httpClient, $this->schemaManager); } } __halt_compiler();----SIGNATURE:----XLJ4srlL79c67nGzftqUO9RUtuJf7aX5ehztSd2/HBT6liSA5iQdbGOeCnLP13w7OJjXD2X16VAAfN5bv4zwPkJ3wfAVrEX+L77m/bdoQKg9YbUZW4i83+/dSEN9Dvj3iN7e8uo/xgNYATJ4g3o6DNTBp4Vc+bonYH7SCSVgdyf0N/CAv9HbQtF7NCkCTjIoGLEZy+2g4lsrHcx204V25Iv7SHEy4HEyMSLkQ2KufIQRVRHoDKmeVZkl+L4i9D8WRJPFLjGXp2Q8DB/sQmLDf6t3K/8s8t5Uf3xFpkpJg7xwOISfMNcx5e9pC5TvVjghhltAyeQJ46gsfyYG3vFUTX49oYjWBWinPjQpR7wEnXYJUeDyzLJWbe5cz1tGWEg/58Vw94mzp0yH36okBp0eKdywocu2aJdQ/c4EDjyaO+SqVICWWWyqnseZ9Q8TKvlKJ4iViGwSAdo8hDTz3LOewKtJNw0Gfk9gSOz2/qQbbsT/HKbpJqEZ82E3+gyaA/qlNBNGR4MkoPSV5UHbDMH6wt2W62PUXwd8O7OWoJ9oP6Tgd3y9ADHFC9dpKBCerjqfky6W0q0MfJFkQ7+TNYeDTjphC08kHt4EUh5f7IB/F2hjnfIezfyfM0TOlOzEyGWsvHvr2UaC8EqGxZA43yfGKe5l3idkLOx7TD3FqrCkIBs=----ATTACHMENT:----OTQ3NjYzNTMzMTczNDUxMSAyMDU3MTQ5MTA4MTk0ODAzIDQ2NzczMzA1NzYxMjkwODQ=