Passed
Push — master ( ce75d8...b8824f )
by Mingyu
01:00
created

app.decorators.json_validator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 20
rs 10
c 0
b 0
f 0
wmc 3

1 Function

Rating   Name   Duplication   Size   Complexity  
A validate_with_jsonschema() 0 13 3
1
from functools import wraps
2
3
from flask import abort, request
4
from jsonschema import ValidationError, validate
5
6
7
def validate_with_jsonschema(jsonschema: dict):
8
    def decorator(fn):
9
        @wraps(fn)
10
        def wrapper(*args, **kwargs):
11
            if request.is_json:
12
                try:
13
                    validate(request.json, jsonschema)
14
                except ValidationError:
15
                    abort(400)
16
17
            return fn(*args, **kwargs)
18
        return wrapper
19
    return decorator
20