diff --git a/src/provider/update.py b/src/provider/update.py index f0a19db76..88d464d47 100755 --- a/src/provider/update.py +++ b/src/provider/update.py @@ -9,6 +9,9 @@ out_all = "" out_domains = "" domains_dict = {} +def camel(name): + words = name.split("_") + return "".join(w.capitalize() for i, w in enumerate(words)) def cleanstr(s): s = s.strip() @@ -31,6 +34,18 @@ def file2url(f): return "https://providers.delta.chat/" + f +def process_config_defaults(data): + if not "config_defaults" in data: + return "None" + defaults = "Some(vec![\n" + config_defaults = data.get("config_defaults", "") + for key in config_defaults: + value = str(config_defaults[key]) + defaults += " ConfigDefault { key: Config::" + camel(key) + ", value: \"" + value + "\" },\n" + defaults += " ])" + return defaults + + def process_data(data, file): status = data.get("status", "") if status != "OK" and status != "PREPARATION" and status != "BROKEN": @@ -83,6 +98,8 @@ def process_data(data, file): server += (" Server { protocol: " + protocol + ", socket: " + socket + ", hostname: \"" + hostname + "\", port: " + str(port) + ", username_pattern: " + username_pattern + " },\n") + config_defaults = process_config_defaults(data) + provider = "" before_login_hint = cleanstr(data.get("before_login_hint", "")) after_login_hint = cleanstr(data.get("after_login_hint", "")) @@ -93,6 +110,7 @@ def process_data(data, file): provider += " after_login_hint: \"" + after_login_hint + "\",\n" provider += " overview_page: \"" + file2url(file) + "\",\n" provider += " server: vec![\n" + server + " ],\n" + provider += " config_defaults: " + config_defaults + ",\n" provider += " };\n\n" else: raise TypeError("SMTP and IMAP must be specified together or left out both")