Source of file IOAuthClient.php

Size: 3,020 Bytes - Last Modified: 2019-08-09T18:27:54+00:00

/home/travis/build/zerospam/sdk-framework/src/Client/IOAuthClient.php

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
<?php
/**
 * Created by PhpStorm.
 * User: aaflalo
 * Date: 18-06-01
 * Time: 15:13.
 */

namespace ZEROSPAM\Framework\SDK\Client;

use League\OAuth2\Client\Token\AccessToken;
use ZEROSPAM\Framework\SDK\Client\Middleware\IMiddleware;
use ZEROSPAM\Framework\SDK\Client\Middleware\IPreRequestMiddleware;
use ZEROSPAM\Framework\SDK\Client\Middleware\IRefreshTokenMiddleware;
use ZEROSPAM\Framework\SDK\Config\IOAuthConfiguration;
use ZEROSPAM\Framework\SDK\Request\Api\IRequest;
use ZEROSPAM\Framework\SDK\Response\Api\IResponse;

/**
 * Interface IOAuthClient
 *
 * Client to make request to a server that use OAuth2 authentication
 *
 * @package ZEROSPAM\Framework\SDK\Client
 */
interface IOAuthClient
{
    /**
     * Register the given middleware.
     *
     * @param \ZEROSPAM\Framework\SDK\Client\Middleware\IMiddleware $middleware
     *
     * @return $this
     */
    public function registerMiddleware(IMiddleware $middleware): self;

    /**
     * Unregister the middleware.
     *
     * In fact, all middleware having the same class
     *
     * @param \ZEROSPAM\Framework\SDK\Client\Middleware\IMiddleware $middleware
     *
     * @return IOAuthClient
     */
    public function unregisterMiddleware(IMiddleware $middleware): self;

    /**
     * Refresh token.
     */
    public function refreshToken(): AccessToken;

    /**
     * Currently used access token.
     *
     * @return AccessToken
     */
    public function getToken(): AccessToken;

    /**
     * Process the given request and return an array containing the results.
     *
     * @param IRequest $request
     *
     * @return IResponse
     */
    public function processRequest(IRequest $request): IResponse;

    /**
     * Register a pre request middleware
     *
     * @param IPreRequestMiddleware $middleware
     *
     * @return IOAuthClient
     */
    public function registerPreRequestMiddleware(IPreRequestMiddleware $middleware): IOAuthClient;

    /**
     * UnRegister a pre request middleware
     *
     * @param IPreRequestMiddleware $middleware
     *
     * @return IOAuthClient
     */
    public function unregisterPreRequestMiddleware(IPreRequestMiddleware $middleware): IOAuthClient;

    /**
     * Set the AccessToken
     *
     * @param AccessToken $token
     */
    public function setToken(AccessToken $token): void;

    /**
     * Get linked configuration
     *
     * @return IOAuthConfiguration
     */
    public function getConfiguration(): IOAuthConfiguration;

    /**
     * Register a middleware to take care of refresh token
     *
     * @param IRefreshTokenMiddleware $middleware
     *
     * @return IOAuthClient
     */
    public function registerRefreshTokenMiddleware(IRefreshTokenMiddleware $middleware): IOAuthClient;

    /**
     * UnRegister a refreshToken middleware
     *
     * @param IPreRequestMiddleware $middleware
     *
     * @return IOAuthClient
     */
    public function unregisterRefreshTokenMiddleware(IRefreshTokenMiddleware $middleware): IOAuthClient;
}