<?php

namespace App\Integrations\Semrush;

use App\Integrations\Common\Configurable;

final class Client extends Configurable
{
    public function __construct(?array $options = null)
    {
        parent::__construct($options);
    }

    /**
     * @param $request
     * @param Requests\CreateKeywordRequest|Requests\DeleteCampaignRequest|Requests\DeleteKeywordRequest|Requests\GetApiUnitsRequest|Requests\GetBacklinksRequest|Requests\GetCountriesRequest|Requests\UpdateCampaignRequest $request
     *
     */
    public function execute($request)
    {
        $request->setOption('key', $this->getApiKey());

        return $this->getAdapter()->execute($request);
    }

    private function getAdapter()
    {
        return $this->getOption('adapter');
    }

    private function getApiKey()
    {
        return $this->getOption('apiKey');
    }
}
