* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @link https://www.temando.com/ */ class CarrierRegistration implements ArgumentInterface, ShippingApiInterface { /** * @var RequestInterface */ private $request; /** * @var ShippingApiAccess */ private $apiAccess; /** * @var CarrierUrl */ private $carrierUrl; /** * @var ProductMetadataInterface */ private $productMetaData; /** * CarrierRegistration constructor. * @param RequestInterface $request * @param ShippingApiAccess $apiAccess * @param CarrierUrl $carrierUrl * @param ProductMetadataInterface $productMetaData */ public function __construct( RequestInterface $request, ShippingApiAccess $apiAccess, CarrierUrl $carrierUrl, ProductMetadataInterface $productMetaData ) { $this->request = $request; $this->apiAccess = $apiAccess; $this->carrierUrl = $carrierUrl; $this->productMetaData = $productMetaData; } /** * @return ShippingApiAccessInterface */ public function getShippingApiAccess(): ShippingApiAccessInterface { return $this->apiAccess; } /** * @return EntityUrlInterface|CarrierUrl */ public function getCarrierUrl(): EntityUrlInterface { return $this->carrierUrl; } /** * Obtain the Temando carrier integration id. * * @return string The Temando carrier integration ID. */ public function getCarrierIntegrationId(): string { $integrationId = $this->request->getParam(CarrierInterface::INTEGRATION_ID); return preg_replace('/[^\w0-9-_]/', '', $integrationId); } /** * Get the Magento version number. * * @return string */ public function getMagentoVersion() { if (!preg_match('/\d+\.\d+(\.\d+)?/', $this->productMetaData->getVersion(), $matches)) { return ''; } return $matches[0]; } }