From 30a40acee7158a7d0f556e7dfeb7953c1c1582f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20W=C4=85troba?= <markowanga@gmail.com> Date: Fri, 13 Aug 2021 16:10:58 +0200 Subject: [PATCH] Add missing dependency --- mypy.ini | 3 +++ poetry.lock | 17 ++++++++++++++++- pyproject.toml | 1 + .../base_asr_service/asr_processor.py | 17 ++++++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/mypy.ini b/mypy.ini index 0baeb89..754ff4f 100644 --- a/mypy.ini +++ b/mypy.ini @@ -38,5 +38,8 @@ ignore_missing_imports = True [mypy-fasttext.*] ignore_missing_imports = True +[mypy-flask_httpauth.*] +ignore_missing_imports = True + [mypy-pytest.*] ignore_missing_imports = True diff --git a/poetry.lock b/poetry.lock index c14ca3b..75d65c7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -118,6 +118,17 @@ Werkzeug = ">=2.0" async = ["asgiref (>=3.2)"] dotenv = ["python-dotenv"] +[[package]] +name = "flask-httpauth" +version = "4.4.0" +description = "Basic and Digest HTTP authentication for Flask routes" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +Flask = "*" + [[package]] name = "idna" version = "3.2" @@ -474,7 +485,7 @@ developer = [] [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "339f3a61fd3a6005117dded8ba0727e8eab938a43ad3c1b492db4ac55b8b9009" +content-hash = "6c2a6af3437d43d9d55a0468d823a6da5abb2bbec9936e76ccb7729f0a014057" [metadata.files] appdirs = [ @@ -515,6 +526,10 @@ flask = [ {file = "Flask-2.0.1-py3-none-any.whl", hash = "sha256:a6209ca15eb63fc9385f38e452704113d679511d9574d09b2cf9183ae7d20dc9"}, {file = "Flask-2.0.1.tar.gz", hash = "sha256:1c4c257b1892aec1398784c63791cbaa43062f1f7aeb555c4da961b20ee68f55"}, ] +flask-httpauth = [ + {file = "Flask-HTTPAuth-4.4.0.tar.gz", hash = "sha256:bcaaa7a35a3cba0b2eafd4f113b3016bf70eb78087456d96484c3c18928b813a"}, + {file = "Flask_HTTPAuth-4.4.0-py2.py3-none-any.whl", hash = "sha256:d9131122cdc5709dda63790f6e9b3142d8101447d424b0b95ffd4ee279f49539"}, +] idna = [ {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"}, {file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"}, diff --git a/pyproject.toml b/pyproject.toml index e94b32d..73e5ed9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ pandas = "^1.2.4" fasttext = "^0.9.2" pymongo = "^3.11.4" Flask = "^2.0.1" +Flask-HTTPAuth = "^4.4.0" [tool.poetry.dev-dependencies] pytest = "^5.2" diff --git a/sziszapangma/integration/base_asr_service/asr_processor.py b/sziszapangma/integration/base_asr_service/asr_processor.py index e35c862..a35df95 100644 --- a/sziszapangma/integration/base_asr_service/asr_processor.py +++ b/sziszapangma/integration/base_asr_service/asr_processor.py @@ -2,8 +2,10 @@ import os import uuid from abc import ABC, abstractmethod from pathlib import Path +from typing import Optional from flask import Flask, Response, jsonify, request +from flask_httpauth import HTTPTokenAuth from sziszapangma.integration.base_asr_service.asr_result import AsrResult @@ -11,6 +13,11 @@ _TEMP_DIRECTORY = "asr_processing" class AsrProcessor(ABC): + user_token: str + + def __init__(self): + self.user_token = os.environ["AUTH_TOKEN"] + @abstractmethod def process_asr(self, audio_file_path: str) -> AsrResult: """Method to call for ASR results.""" @@ -35,8 +42,16 @@ class AsrProcessor(ABC): result_object = jsonify({"error": "Error on asr processing"}) return result_object + def is_token_correct(self, token: str) -> Optional[str]: + if token == self.user_token: + return "asr_client" + else: + return None + def start_processor(self): app = Flask(__name__) + auth = HTTPTokenAuth(scheme="Bearer") + auth.verify_token(self.is_token_correct) Path(_TEMP_DIRECTORY).mkdir(parents=True, exist_ok=True) - app.route("/process_asr", methods=["POST"])(self.process_request) + app.route("/process_asr", methods=["POST"])(auth.login_required(self.process_request)) app.run(debug=True, host="0.0.0.0") -- GitLab