Source code for glados.glados_request

from glados import RouteType, BOT_ROUTES


[docs]class GladosParams: def __init__(self, **kwargs): for name, value in kwargs.items(): self.add_param(name, value)
[docs] def add_param(self, name, value): self.__setattr__(name, value)
def __getattr__(self, item): try: return super().__getattribute__(item) finally: return None
[docs]class SlackVerification: def __init__(self, data: str, timestamp: str = None, signature: str = None): """ Parameters ---------- data: str raw request body. This is used to verify the message is from slack. timestamp: str The X-Slack-Request-Timestamp from the headers of the request. This is used to verify the message is from slack. signature: str The X-Slack-Signature from the headers of the request. This is used to verify the message is from slack. """ self.data = data self.timestamp = timestamp self.signature = signature @property def json(self) -> dict: return { "data": self.data, "timestamp": self.timestamp, "signature": self.signature }
[docs]class GladosRequest: def __init__(self, route_type: RouteType, route: str, slack_verify: SlackVerification = None, bot_name: str = None, **kwargs): """ Parameters ---------- route_type: RouteType what type of route is this route: str what is the route to be called slack_verify: SlackVerification slack data used for verifying the request came from Slack bot_name: str The name of the bot to send the request to. This is used for select RouteTypes kwargs Examples -------- >>> request = GladosRequest(RouteType.SendMessage, "send_mock", message="my message") >>> print(request.params.message) my message >>> print(request.params.other_param) None """ self.route_type = route_type self.bot_name = bot_name self._route = route self.bot_route = f"{bot_name}_{route}" self.params = GladosParams(**kwargs) self.slack_verify = slack_verify @property def route(self) -> str: return self.bot_route if self.route_type in BOT_ROUTES else self._route @route.setter def route(self, value): self._route = value