Repository URL to install this package:
|
Version:
0.4.200 ▾
|
lib-py-b2b
/
validator.py
|
|---|
import yaml
import os
from bravado_core.spec import Spec
from bravado_core.validate import validate_object
from enum import Enum
from aws_xray_sdk.core import xray_recorder
class B2BModel(Enum):
ORDER = 'Order'
ORDER_LINE = 'OrderLine'
class StandardDialectValidator:
def __init__(self, schema_file='b2bApi.yaml'):
self.spec = self.__load_spec(schema_file)
self.spec_models = {}
for m in B2BModel:
self.spec_models[m] = self.spec_dict['definitions'][m.value]
def __load_spec(self, schema_file):
dir_path = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(dir_path, schema_file)
with open(file_path, 'r') as spec:
self.spec_dict = yaml.load(spec.read(), yaml.Loader)
return Spec.from_dict(self.spec_dict, config={
'validate_swagger_spec': False,
'validate_requests': False,
'validate_responses': False,
'use_models': True
})
@xray_recorder.capture()
def validate_model(self, model: B2BModel, json_data):
validate_object(self.spec, self.spec_models[model], json_data)