Spaces:
Running
Running
| from dataclasses import dataclass | |
| from typing import Optional | |
| from dataclasses_json import dataclass_json | |
| import json | |
| from pathlib import Path | |
| class Slack: | |
| url: str | |
| channel: str | |
| username: str | |
| icon_emoji: str | |
| channel_id: Optional[str] = None | |
| bot_token: Optional[str] = None | |
| class Config(object): | |
| def __init__(self, env="dev"): | |
| if env == "dev": | |
| config_path = Path(__file__).parent.parent / "config/config.dev.json" | |
| else: | |
| config_path = Path(__file__).parent.parent / "config/config.prod.json" | |
| config = self._read_config(config_path) | |
| self.awss3_bucket, self.awss3_path = self.__parse_awss3_storage( | |
| config.get("storage", {}).get("awss3", {}) | |
| ) | |
| ( | |
| self.requested_img_path, | |
| self.text_removed_img_path, | |
| ) = self.__parse_local_storage(config.get("storage", {}).get("local", {})) | |
| self.mq_url = self._parse_amqp_server(config["mq_server"]) | |
| ( | |
| self.req_queue, | |
| self.req_pattern, | |
| self.resp_queue, | |
| self.success_resp_pattern, | |
| self.failure_resp_pattern, | |
| ) = self._parse_queue(config["queue"]) | |
| self.slack = self._parse_slack(config["alarm"]["slack"]) | |
| def _read_config(self, config_path) -> dict: | |
| with open(config_path, mode="r") as f: | |
| config = json.load(f) | |
| return config | |
| def _parse_amqp_server(self, amqp_server) -> str: | |
| username = amqp_server["username"] | |
| password = amqp_server["password"] | |
| url = amqp_server["url"] | |
| port = amqp_server["port"] | |
| amqp_url = f"amqps://{username}:{password}@{url}:{port}" | |
| return amqp_url | |
| def _parse_queue(self, queue) -> tuple: | |
| req_queue = queue["request_name"] | |
| req_pattern = queue["request_pattern"] | |
| resp_queue = queue.get("response_name") | |
| success_resp_pattern = queue["success_response_pattern"] | |
| failure_resp_pattern = queue["failure_response_pattern"] | |
| return ( | |
| req_queue, | |
| req_pattern, | |
| resp_queue, | |
| success_resp_pattern, | |
| failure_resp_pattern, | |
| ) | |
| def __parse_awss3_storage(self, awss3_storage) -> tuple: | |
| awss3_bucket = awss3_storage.get("default_bucket") | |
| awss3_path = awss3_storage.get("default_path") | |
| return awss3_bucket, awss3_path | |
| def __parse_local_storage(self, local_storage) -> tuple: | |
| requested_img_path = local_storage.get("requested") | |
| text_removed_img_path = local_storage.get("text_removed") | |
| return requested_img_path, text_removed_img_path | |
| def _parse_slack(self, slack) -> Slack: | |
| url = slack["url"] | |
| channel = slack["channel"] | |
| username = slack["username"] | |
| icon_emoji = slack["icon_emoji"] | |
| channel_id = slack.get("channel_id", None) | |
| bot_token = slack.get("bot_token", None) | |
| return Slack(url, channel, username, icon_emoji, channel_id, bot_token) | |
| class ImageTrConfig(object): | |
| def __init__(self, env="dev"): | |
| if env == "dev": | |
| config_path = Path(__file__).parent.parent / "config/config.dev.json" | |
| else: | |
| config_path = Path(__file__).parent.parent / "config/config.prod.json" | |
| config = self._read_config(config_path) | |
| ( | |
| self.awss3_bucket, | |
| self.awss3_inpainting_path, | |
| self.awss3_translation_path, | |
| ) = self.__parse_awss3_storage(config.get("storage", {}).get("awss3", {})) | |
| self.mq_url = self._parse_amqp_server(config["mq_server"]) | |
| ( | |
| self.req_queue, | |
| self.req_pattern, | |
| self.resp_queue, | |
| self.success_resp_pattern, | |
| self.failure_resp_pattern, | |
| ) = self._parse_queue(config["queue"]) | |
| self.slack = self._parse_slack(config["alarm"]["slack"]) | |
| def _read_config(self, config_path) -> dict: | |
| with open(config_path, mode="r") as f: | |
| config = json.load(f) | |
| return config | |
| def _parse_amqp_server(self, amqp_server) -> str: | |
| username = amqp_server["username"] | |
| password = amqp_server["password"] | |
| url = amqp_server["url"] | |
| port = amqp_server["port"] | |
| amqp_url = f"amqps://{username}:{password}@{url}:{port}" | |
| return amqp_url | |
| def _parse_queue(self, queue) -> tuple: | |
| req_queue = queue["request_name"] | |
| req_pattern = queue["request_pattern"] | |
| resp_queue = queue.get("response_name") | |
| success_resp_pattern = queue["success_response_pattern"] | |
| failure_resp_pattern = queue["failure_response_pattern"] | |
| return ( | |
| req_queue, | |
| req_pattern, | |
| resp_queue, | |
| success_resp_pattern, | |
| failure_resp_pattern, | |
| ) | |
| def __parse_awss3_storage(self, awss3_storage) -> tuple: | |
| awss3_bucket = awss3_storage.get("default_bucket") | |
| awss3_inpainting_path = awss3_storage.get("inpainting_path") | |
| awss3_translation_path = awss3_storage.get("translation_path") | |
| return awss3_bucket, awss3_inpainting_path, awss3_translation_path | |
| def __parse_local_storage(self, local_storage) -> tuple: | |
| requested_img_path = local_storage.get("requested") | |
| text_removed_img_path = local_storage.get("text_removed") | |
| return requested_img_path, text_removed_img_path | |
| def _parse_slack(self, slack) -> Slack: | |
| url = slack["url"] | |
| channel = slack["channel"] | |
| username = slack["username"] | |
| icon_emoji = slack["icon_emoji"] | |
| channel_id = slack.get("channel_id", None) | |
| bot_token = slack.get("bot_token", None) | |
| return Slack(url, channel, username, icon_emoji, channel_id, bot_token) | |