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(); } } |