API.php 912 Bytes
<?php
namespace App\Service\API;

use App\Service\Contract\APIRequest;
use Illuminate\Http\Client\Response;

class API  implements \App\Service\Contract\API {
    protected $request;

    protected function __construct(APIRequest $request = null){
        if ($request){
            $this->request = $request;
        }
    }

    static function getInstance(APIRequest $request = null){
        switch($request->getApi()){
            case API::YANDEX:
                return new YandexDirect($request);
                break;
        }
    }

    function getAuthLink()
    {
        return '';
    }

    function getToken($code)
    {

    }

    protected function getTokenUrl(){
        return '';
    }

    function extractToken($data){
        return '';
    }

    function setRequest(APIRequest $request)
    {
        $this->request = $request;
    }

    function execute(): Response
    {

    }
}