annotate bots/bigastbot.py @ 0:96f842f12121

start
author drewp@bigasterisk.com
date Tue, 28 Jan 2025 23:30:02 -0800
parents
children 2a288d2cb88c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
drewp@bigasterisk.com
parents:
diff changeset
1 import zulip
drewp@bigasterisk.com
parents:
diff changeset
2 from kubernetes import client, config
drewp@bigasterisk.com
parents:
diff changeset
3
drewp@bigasterisk.com
parents:
diff changeset
4 config.load_kube_config()
drewp@bigasterisk.com
parents:
diff changeset
5
drewp@bigasterisk.com
parents:
diff changeset
6
drewp@bigasterisk.com
parents:
diff changeset
7 def get_secret_api_key(email: str) -> str:
drewp@bigasterisk.com
parents:
diff changeset
8 api = client.CoreV1Api()
drewp@bigasterisk.com
parents:
diff changeset
9 secret = api.read_namespaced_secret('zulip-api-secrets', 'default')
drewp@bigasterisk.com
parents:
diff changeset
10 secret_key = email.replace('@', '.')
drewp@bigasterisk.com
parents:
diff changeset
11 return secret.data[secret_key] # type: ignore
drewp@bigasterisk.com
parents:
diff changeset
12
drewp@bigasterisk.com
parents:
diff changeset
13
drewp@bigasterisk.com
parents:
diff changeset
14 class BigAstBot:
drewp@bigasterisk.com
parents:
diff changeset
15
drewp@bigasterisk.com
parents:
diff changeset
16 def __init__(self, email: str):
drewp@bigasterisk.com
parents:
diff changeset
17
drewp@bigasterisk.com
parents:
diff changeset
18 class Options:
drewp@bigasterisk.com
parents:
diff changeset
19 zulip_api_key = get_secret_api_key(email)
drewp@bigasterisk.com
parents:
diff changeset
20 zulip_email = email
drewp@bigasterisk.com
parents:
diff changeset
21 zulip_site = 'https://chat.bigasterisk.com'
drewp@bigasterisk.com
parents:
diff changeset
22 cert_bundle = None
drewp@bigasterisk.com
parents:
diff changeset
23 client_cert = None
drewp@bigasterisk.com
parents:
diff changeset
24 client_cert_key = None
drewp@bigasterisk.com
parents:
diff changeset
25 insecure = False
drewp@bigasterisk.com
parents:
diff changeset
26 verbose = True
drewp@bigasterisk.com
parents:
diff changeset
27 zulip_client = None
drewp@bigasterisk.com
parents:
diff changeset
28 zulip_config_file = None
drewp@bigasterisk.com
parents:
diff changeset
29
drewp@bigasterisk.com
parents:
diff changeset
30 self.zulip_client = zulip.init_from_options(Options())
drewp@bigasterisk.com
parents:
diff changeset
31
drewp@bigasterisk.com
parents:
diff changeset
32 def send_to_channel(self, channelName: str, topic: str, content: str):
drewp@bigasterisk.com
parents:
diff changeset
33 msg = dict(type="stream",
drewp@bigasterisk.com
parents:
diff changeset
34 to=[channelName],
drewp@bigasterisk.com
parents:
diff changeset
35 topic=topic,
drewp@bigasterisk.com
parents:
diff changeset
36 content=content)
drewp@bigasterisk.com
parents:
diff changeset
37 return self.zulip_client.send_message(msg)