diff --git a/zulip_bots/zulip_bots/config.py b/zulip_bots/zulip_bots/config.py new file mode 100644 index 0000000..965506d --- /dev/null +++ b/zulip_bots/zulip_bots/config.py @@ -0,0 +1,12 @@ +import json + +import yaml + +def get_config(conf_file): + if conf_file.startswith("{"): + return json.loads(conf_file) + else: + with open(conf_file) as f: + return yaml.safe_load(f) + + diff --git a/zulip_bots/zulip_bots/schedulebot.py b/zulip_bots/zulip_bots/schedulebot.py index 11a22d6..bb32709 100644 --- a/zulip_bots/zulip_bots/schedulebot.py +++ b/zulip_bots/zulip_bots/schedulebot.py @@ -9,9 +9,9 @@ from datetime import datetime, timedelta import gevent.pool import argh -import yaml from zulip import Client +from config import get_config logging.basicConfig(level='INFO') @@ -203,8 +203,7 @@ def main(conf_file, hour=-1, no_groups=False, stream="General", no_mentions=Fals NAME: GROUP_ID authentication is an object {email, api_key} """ - with open(conf_file) as f: - config = yaml.safe_load(f) + config = get_config(conf_file) client = Client(config["url"], config["api_user"]["email"], config["api_user"]["api_key"]) send_auth = config.get("send_user", config["api_user"]) send_client = Client(config["url"], send_auth["email"], send_auth["api_key"]) diff --git a/zulip_bots/zulip_bots/tootbot.py b/zulip_bots/zulip_bots/tootbot.py index 2e8bf21..57113da 100644 --- a/zulip_bots/zulip_bots/tootbot.py +++ b/zulip_bots/zulip_bots/tootbot.py @@ -5,19 +5,14 @@ import logging import time import mastodon -import yaml from bs4 import BeautifulSoup import zulip +from config import get_config cli = argh.EntryPoint() -def get_config(conf_file): - with open(conf_file) as f: - return yaml.safe_load(f) - - def format_account(account): return f"**[{account['display_name']}]({account['url']})**" diff --git a/zulip_bots/zulip_bots/twitchbot.py b/zulip_bots/zulip_bots/twitchbot.py index b96eccf..1c3540a 100644 --- a/zulip_bots/zulip_bots/twitchbot.py +++ b/zulip_bots/zulip_bots/twitchbot.py @@ -6,9 +6,9 @@ import logging import argh import girc -import yaml import zulip +from config import get_config def run(zulip_client, nick, oauth_token, stream, topic): @@ -49,8 +49,7 @@ def main(conf_file, stream="bot-spam", topic="Twitch DMs", retry_interval=10): """ logging.basicConfig(level='INFO') - with open(conf_file) as f: - config = yaml.safe_load(f) + config = get_config(conf_file) zulip_client = zulip.Client(config["zulip_url"], config["zulip_email"], config["zulip_api_key"])