feat(Global): Implemented validation on requests and error handling
This commit is contained in:
parent
38d94cd041
commit
927ef220cd
8 changed files with 136 additions and 34 deletions
2
helpers/__init__.py
Normal file
2
helpers/__init__.py
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
from .kratos_api import *
|
||||
from .error_handler import *
|
||||
34
helpers/error_handler.py
Normal file
34
helpers/error_handler.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
from flask import jsonify
|
||||
from jsonschema import ValidationError
|
||||
|
||||
|
||||
class KratosError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class BadRequest(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def bad_request_error(e):
|
||||
message = e.args[0] if e.args else "Bad request to the server."
|
||||
return jsonify({"errorMessage": message})
|
||||
|
||||
|
||||
def validation_error(e):
|
||||
original_error = e.description
|
||||
return (
|
||||
jsonify({"errorMessage": "{} is not valid.".format(original_error.path[0])}),
|
||||
400,
|
||||
)
|
||||
|
||||
|
||||
def kratos_error(e):
|
||||
message = e.args[0] if e.args else "Failed to contant Kratos."
|
||||
status_code = e.args[1] if e.args else 500
|
||||
return jsonify({"errorMessage": message}), status_code
|
||||
|
||||
|
||||
def global_error(e):
|
||||
message = e.args[0] if e.args else "Something went wrong."
|
||||
return jsonify({"errorMessage": message})
|
||||
|
|
@ -1,32 +1,55 @@
|
|||
from logging import error
|
||||
import requests
|
||||
|
||||
from config import *
|
||||
from .error_handler import KratosError
|
||||
|
||||
|
||||
class KratosApi:
|
||||
@staticmethod
|
||||
def __handleError(res):
|
||||
if res.status_code >= 400:
|
||||
message = res.json()["error"]["message"]
|
||||
raise KratosError(message, res.status_code)
|
||||
|
||||
class KratosApi():
|
||||
@staticmethod
|
||||
def get(url):
|
||||
try:
|
||||
return requests.get('{}{}'.format(KRATOS_URL, url))
|
||||
res = requests.get("{}{}".format(KRATOS_URL, url))
|
||||
KratosApi.__handleError(res)
|
||||
return res
|
||||
except:
|
||||
return "Failed to contact Kratos"
|
||||
raise KratosError()
|
||||
|
||||
@staticmethod
|
||||
def post(url, data):
|
||||
try:
|
||||
return requests.post('{}{}'.format(KRATOS_URL, url), json=data)
|
||||
res = requests.post("{}{}".format(KRATOS_URL, url), json=data)
|
||||
KratosApi.__handleError(res)
|
||||
return res
|
||||
except KratosError as err:
|
||||
raise err
|
||||
except:
|
||||
return "Failed to contact Kratos"
|
||||
raise KratosError()
|
||||
|
||||
@staticmethod
|
||||
def put(url, data):
|
||||
try:
|
||||
return requests.put('{}{}'.format(KRATOS_URL, url), json=data)
|
||||
res = requests.put("{}{}".format(KRATOS_URL, url), json=data)
|
||||
KratosApi.__handleError(res)
|
||||
return res
|
||||
except KratosError as err:
|
||||
raise err
|
||||
except:
|
||||
return "Failed to contact Kratos"
|
||||
raise KratosError()
|
||||
|
||||
@staticmethod
|
||||
def delete(url):
|
||||
try:
|
||||
return requests.delete('{}{}'.format(KRATOS_URL, url))
|
||||
res = requests.delete("{}{}".format(KRATOS_URL, url))
|
||||
KratosApi.__handleError(res)
|
||||
return res
|
||||
except KratosError as err:
|
||||
raise err
|
||||
except:
|
||||
return "Failed to contact Kratos"
|
||||
raise KratosError()
|
||||
|
|
|
|||
Reference in a new issue