Source of file AuthenticationMiddleware.php
Size: 1,760 Bytes - Last Modified: 2019-08-09T18:27:54+00:00
/home/travis/build/zerospam/sdk-framework/src/Client/Middleware/Error/AuthenticationMiddleware.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | <?php /** * Created by PhpStorm. * User: aaflalo * Date: 18-06-01 * Time: 10:41. */ namespace ZEROSPAM\Framework\SDK\Client\Middleware\Error; use Psr\Http\Message\ResponseInterface; use ZEROSPAM\Framework\SDK\Client\Exception\TooManyRetriesException; use ZEROSPAM\Framework\SDK\Client\IOAuthClient; use ZEROSPAM\Framework\SDK\Client\Middleware\IMiddleware; use ZEROSPAM\Framework\SDK\Request\Api\IRequest; use ZEROSPAM\Framework\SDK\Response\Api\BaseResponse; /** * Class AuthenticationMiddleware * * Catch a Authentication failure and try to refresh the access_token * * @package ZEROSPAM\Framework\SDK\Client\Middleware\Error */ class AuthenticationMiddleware implements IMiddleware { const MAX_TRIES = 3; /** * @var IOAuthClient */ protected $client; /** * Set the OAuth Client. * * @param IOAuthClient $client * * @return $this */ public function setClient(IOAuthClient $client): IMiddleware { $this->client = $client; return $this; } /** * Which status error code does this middleware manage. * * @return array */ public static function statusCode(): array { return [401]; } public function handle(IRequest $request, ResponseInterface $httpResponse, array $parsedData): array { if ($request->tries() > self::MAX_TRIES) { throw new TooManyRetriesException(sprintf('Tried to re-auth more than %d times.', self::MAX_TRIES)); } $this->client->refreshToken(); $response = $this->client->processRequest($request); if ($response instanceof BaseResponse) { return $response->getRawData(); } return $response->data(); } } |