* @copyright 2021 DIGITAL RETAIL TECHNOLOGIES SL * @license https://opensource.org/licenses/MIT The MIT License * * Don't forget to prefix your containers with your own identifier * to avoid any conflicts with others containers. */ class RetailcrmProxy { /** * @var RetailcrmApiClientV5 */ private $client; /** * @var RetailcrmPipeline */ private $pipeline; public function __construct($url, $key) { $this->client = new RetailcrmApiClientV5($url, $key); $this->buildPipeline(); } public function __call($method, $arguments) { $request = new RetailcrmApiRequest(); $request->setApi($this->client) ->setMethod($method) ->setData($arguments) ; return $this->pipeline->run($request); } public function setClient($client) { $this->client = $client; $this->buildPipeline(); } private function buildPipeline() { $this->pipeline = new RetailcrmPipeline(); $this->pipeline ->setMiddlewares( RetailcrmTools::filter( 'RetailcrmFilterMiddlewares', [ RetailcrmExceptionMiddleware::class, RetailcrmLoggerMiddleware::class, RetailcrmReferenceMiddleware::class, RetailcrmExportOrdersMiddleware::class, ] ) ) ->setAction(function ($request) { return call_user_func_array([$this->client, $request->getMethod()], $request->getData()); }) ->build() ; } }