mirror of
https://github.com/LukeHagar/connexion.git
synced 2025-12-06 12:27:45 +00:00
The enforcedefaults example did not run as the port (9090) was passed as the server parameter.
49 lines
1.4 KiB
Python
Executable File
49 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import connexion
|
|
import jsonschema
|
|
import six
|
|
from connexion.decorators.validation import RequestBodyValidator
|
|
|
|
|
|
def echo(data):
|
|
return data
|
|
|
|
|
|
# via https://python-jsonschema.readthedocs.io/
|
|
def extend_with_set_default(validator_class):
|
|
validate_properties = validator_class.VALIDATORS['properties']
|
|
|
|
def set_defaults(validator, properties, instance, schema):
|
|
for property, subschema in six.iteritems(properties):
|
|
if 'default' in subschema:
|
|
instance.setdefault(property, subschema['default'])
|
|
|
|
for error in validate_properties(
|
|
validator, properties, instance, schema):
|
|
yield error
|
|
|
|
return jsonschema.validators.extend(
|
|
validator_class, {'properties': set_defaults})
|
|
|
|
DefaultsEnforcingDraft4Validator = extend_with_set_default(
|
|
jsonschema.Draft4Validator)
|
|
|
|
|
|
class DefaultsEnforcingRequestBodyValidator(RequestBodyValidator):
|
|
def __init__(self, *args, **kwargs):
|
|
super(DefaultsEnforcingRequestBodyValidator, self).__init__(
|
|
*args, validator=DefaultsEnforcingDraft4Validator, **kwargs)
|
|
|
|
|
|
validator_map = {
|
|
'body': DefaultsEnforcingRequestBodyValidator
|
|
}
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = connexion.FlaskApp(
|
|
__name__, port=8080, specification_dir='.', validator_map=validator_map)
|
|
app.add_api('enforcedefaults-api.yaml')
|
|
app.run()
|