AdsHandler.php 1.03 KB
<?php
namespace App\Service\Handlers;

use App\Service\Contract\API;
use App\Service\Contract\APIRequest;

class AdsHandler{
    protected $request;
    protected $response;

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

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

    public function handle($response){

        $this->parse($response);
        //постраничная выбрка
        if ($this->limited($response)){
            $this->request->next($this->limited());
            dispatch( new ProcessCallLimitedAPI($this->request));
        }
        $this->request->handle($this->response);
    }

    protected function limited($response){
        return $response['result']['LimitedBy'] ?? 0;
    }

    protected function parse($response){
        $this->response = $response;
    }
}