in presidio-image-redactor/app.py [0:0]
def __init__(self):
self.logger = logging.getLogger("presidio-image-redactor")
self.app = Flask(__name__)
self.logger.info("Starting image redactor engine")
self.engine = ImageRedactorEngine()
self.logger.info(WELCOME_MESSAGE)
@self.app.route("/health")
def health() -> str:
"""Return basic health probe result."""
return "Presidio Image Redactor service is up"
@self.app.route("/redact", methods=["POST"])
def redact():
"""Return a redacted image."""
params = get_json_data(request.form.get("data"))
color_fill = color_fill_string_to_value(params)
image_file = request.files.get("image")
if not image_file:
raise InvalidParamException("Invalid parameter, please add image data")
im = Image.open(image_file)
redacted_image = self.engine.redact(im, color_fill)
img_byte_arr = image_to_byte_array(redacted_image, im.format)
return Response(img_byte_arr, mimetype="application/octet-stream")
@self.app.errorhandler(InvalidParamException)
def invalid_param(err):
self.logger.warning(
f"failed to redact image with validation error: {err.err_msg}"
)
return jsonify(error=err.err_msg), 422
@self.app.errorhandler(Exception)
def server_error(e):
self.logger.error(f"A fatal error occurred during execution: {e}")
return jsonify(error="Internal server error"), 500