RequestProxy.php 1.1 KB
<?php


namespace Lackoxygen\TopWarehouse\Request;

use Illuminate\Support\Arr;
use Lackoxygen\TopWarehouse\Exception\Exception;
use Lackoxygen\TopWarehouse\Request\Inventory\GetStockInventoryRequest;
use Lackoxygen\TopWarehouse\Request\Order\OrdersB2cAddRequest;
use Lackoxygen\TopWarehouse\Request\Order\OrderEntryStatusRequest;
use Lackoxygen\TopWarehouse\Request\Order\OrderLoadingDeliveryRequest;

class RequestProxy
{
    /**
     * @var string[]
     */
    protected static $proxies = [
        'ordersB2cAdd'      => OrdersB2cAddRequest::class,
        'getStockInventory' => GetStockInventoryRequest::class,
        'orderEntryStatus'  => OrderEntryStatusRequest::class,
        'loadDelivery'      => OrderLoadingDeliveryRequest::class,
    ];


    /**
     * @param string $name
     *
     * @return Request
     * @throws Exception
     */
    public static function proxy(string $name): Request
    {
        if (!Arr::exists(self::$proxies, $name)) {
            throw new Exception('Method not supported');
        }

        return new self::$proxies[$name];
    }
}