) from flex.datastructures import ( ValidationDict, ValidationList, ) from .ref import ( ref_validator, ) from flex.loading.common.schema import ( schema_schema as common_schema_schema, schema_field_validators as common_schema_field_validators, schema_non_field_validators as common_schema_non_field_validators, properties_schema as common_properties_schema, items_schema as common_items_schema, ) schema_field_validators = ValidationDict() schema_field_validators.update(common_schema_field_validators) schema_field_validators.add_property_validator('$ref', ref_validator) schema_non_field_validators = ValidationDict() schema_non_field_validators.update(common_schema_non_field_validators) schema_validator = generate_object_validator( schema=common_schema_schema, field_validators=schema_field_validators, non_field_validators=schema_non_field_validators, ) # # Properties.
) from .headers import ( headers_validator, ) from .schema import ( schema_validator, ) single_response_schema = { 'type': OBJECT, 'properties': { 'description': { 'type': STRING, 'required': True, }, }, } field_validators = ValidationDict() field_validators.add_property_validator('schema', schema_validator) field_validators.add_property_validator('headers', headers_validator) single_response_validator = generate_object_validator( schema=single_response_schema, field_validators=field_validators, )
from flex.validation.common import ( generate_object_validator, ) from flex.loading.common.format import ( format_validator, ) from .description import ( description_validator, ) from .type import ( type_validator, ) from .collection_format import ( collection_format_validator, ) single_header_schema = { 'type': OBJECT, } single_header_field_validators = ValidationDict() single_header_field_validators.update(common_field_validators) single_header_field_validators.add_property_validator('description', description_validator) single_header_field_validators.add_property_validator('type', type_validator) single_header_field_validators.add_property_validator('format', format_validator) single_header_field_validators.add_property_validator( 'collectionFormat', collection_format_validator, ) @pull_keys_from_obj('type', 'items') @suffix_reserved_words def validate_items_required_if_type_arraw(type_, items, **kwargs):
ValidationDict, ) from flex.loading.common.single_parameter import ( single_parameter_schema, single_parameter_field_validators as common_single_parameter_field_validators, single_parameter_non_field_validators as common_single_parameter_non_field_validators, ) from flex.loading.schema.paths.path_item.operation.responses.single.schema import ( schema_validator, items_validator, ) from flex.validation.common import ( generate_object_validator, ) single_parameter_field_validators = ValidationDict() single_parameter_field_validators.update( common_single_parameter_field_validators) # schema fields single_parameter_field_validators.add_property_validator( 'schema', schema_validator) single_parameter_field_validators.add_property_validator( 'items', items_validator) single_parameter_non_field_validators = ValidationDict() single_parameter_non_field_validators.update( common_single_parameter_non_field_validators) single_parameter_validator = generate_object_validator( schema=single_parameter_schema,
) from .max_items import ( max_items_validator, validate_max_items_greater_than_or_equal_to_min_items, validate_type_for_max_items, ) from .unique_items import ( unique_items_validator, validate_type_for_unique_items, ) from .enum import ( enum_validator, ) field_validators = ValidationDict() field_validators.add_property_validator('multipleOf', multiple_of_validator) field_validators.add_property_validator('minimum', minimum_validator) field_validators.add_property_validator('maximum', maximum_validator) field_validators.add_property_validator('exclusiveMinimum', exclusive_minimum_validator) field_validators.add_property_validator('exclusiveMaximum', exclusive_maximum_validator) field_validators.add_property_validator('minLength', min_length_validator) field_validators.add_property_validator('maxLength', max_length_validator) field_validators.add_property_validator('pattern', pattern_validator) field_validators.add_property_validator('minItems', min_items_validator) field_validators.add_property_validator('maxItems', max_items_validator) field_validators.add_property_validator('uniqueItems', unique_items_validator) field_validators.add_property_validator('enum', enum_validator)
from flex.loading.common import ( field_validators as common_field_validators, non_field_validators as common_non_field_validators, type_validators as common_type_validators, ) schema_schema = { 'type': OBJECT, 'properties': { 'properties': { 'type': OBJECT, }, } } schema_field_validators = ValidationDict() schema_field_validators.update(common_field_validators) schema_field_validators.add_property_validator('format', format_validator) schema_field_validators.add_property_validator('title', title_validator) schema_field_validators.add_property_validator('minProperties', min_properties_validator) schema_field_validators.add_property_validator('maxProperties', max_properties_validator) schema_field_validators.add_property_validator('required', required_validator) schema_field_validators.add_property_validator('type', type_validator) schema_field_validators.add_property_validator('readOnly', read_only_validator) schema_field_validators.add_property_validator('externalDocs', external_docs_validator) schema_non_field_validators = ValidationDict() schema_non_field_validators.update(common_non_field_validators) schema_non_field_validators.update(common_type_validators)
def generate_parameters_validator(api_path, path_definition, parameters, context, **kwargs): """ Generates a validator function to validate. - request.path against the path parameters. - request.query against the query parameters. - request.headers against the header parameters. - TODO: request.body against the body parameters. - TODO: request.formData against any form data. """ # TODO: figure out how to merge this with the same code in response # validation. validators = ValidationDict() path_level_parameters = dereference_parameter_list( path_definition.get('parameters', []), context, ) operation_level_parameters = dereference_parameter_list( parameters, context, ) all_parameters = merge_parameter_lists( path_level_parameters, operation_level_parameters, ) # PATH in_path_parameters = filter_parameters(all_parameters, in_=PATH) validators.add_validator( 'path', chain_reduce_partial( attrgetter('path'), generate_path_parameters_validator(api_path, in_path_parameters, context), ), ) # QUERY in_query_parameters = filter_parameters(all_parameters, in_=QUERY) validators.add_validator( 'query', chain_reduce_partial( attrgetter('query_data'), functools.partial( validate_query_parameters, query_parameters=in_query_parameters, context=context, ), ), ) # HEADERS in_header_parameters = filter_parameters(all_parameters, in_=HEADER) validators.add_validator( 'headers', chain_reduce_partial( attrgetter('headers'), generate_header_validator(in_header_parameters, context), ), ) # FORM_DATA # in_form_data_parameters = filter_parameters(all_parameters, in_=FORM_DATA) # validators.add_validator( # 'form_data', # chain_reduce_partial( # attrgetter('data'), # generate_form_data_validator(in_form_data_parameters, context), # ) # ) # REQUEST_BODY in_request_body_parameters = filter_parameters(all_parameters, in_=BODY) validators.add_validator( 'request_body', chain_reduce_partial( attrgetter('data'), generate_request_body_validator(in_request_body_parameters, context), )) return generate_object_validator(field_validators=validators)