Repository URL to install this package:
|
Version:
0.4.184 ▾
|
lib-py-b2b
/
dialect.py
|
|---|
import abc
import logging
from os import environ
from typing import Type
from .order_request import OrderRequestType, OrderRequest
logger = logging.getLogger(__name__)
class Dialect:
@staticmethod
def infer_from(request):
from .shopify import ShopifyDialect
if ShopifyDialect.matches_dialect(request):
return ShopifyDialect(request)
else:
from .standard import StandardDialect
return StandardDialect(request)
@staticmethod
def matches_dialect(request):
pass
@property
@abc.abstractmethod
def request_type(self) -> OrderRequestType:
raise NotImplementedError
@abc.abstractmethod
def verify(self, request_type: OrderRequestType):
raise NotImplementedError
@abc.abstractmethod
def data_provider_for(self, order_request: OrderRequest, change_request_type: Type[OrderRequest.C]):
raise NotImplementedError
@property
@abc.abstractmethod
def shipTo(self):
raise NotImplementedError
class CreateOrderRequestDataProvider(metaclass=abc.ABCMeta):
@property
@abc.abstractmethod
def order_id(self):
raise NotImplementedError
class CancelOrderRequestDataProvider(metaclass=abc.ABCMeta):
@property
@abc.abstractmethod
def cancellation_reason(self):
raise NotImplementedError
@property
@abc.abstractmethod
def cancelled_at(self):
raise NotImplementedError