def api_macro_login( environment : str, username : str, password : str ): if ((username is None) or (password is None)): raise ValueError("username or password not given") else: response = ( api_call( environment, None, "account", "login", { "user": username, "pass": password, } ) ) return response["_accesstoken"] def api_macro_logout( environment : str, accesstoken : str ): response = api_call( environment, accesstoken, "account", "logout", { } ) return None def api_macro_info( environment : str, username : str, password : str ): accesstoken = api_macro_login(environment, username, password) info = api_call( environment, accesstoken, "account", "info", { } ) api_macro_logout(environment, accesstoken) return info def api_macro_list( environment : str, username : str, password : str, domain : str ): accesstoken = api_macro_login(environment, username, password) info = api_call( environment, accesstoken, "nameserver", "info", { "domain": domain, } ) api_macro_logout(environment, accesstoken) return info def api_macro_save( environment : str, username : str, password : str, domain : str, name : str, type_ : str, content : str ): accesstoken = api_macro_login(environment, username, password) info = api_call( environment, accesstoken, "nameserver", "info", { "domain": domain, } ) matching = list( filter( lambda record: ((record["name"] == (name + "." + domain)) and (record["type"] == type_)), info["record"] ) ) count = len(matching) if (count == 0): result = api_call( environment, accesstoken, "nameserver", "createRecord", { "domain": domain, "name": name, "type": type_, "content": content, } ) id_ = result["id"] log("created record %u" % id_) elif (count == 1): id_ = matching[0]["id"] result = api_call( environment, accesstoken, "nameserver", "updateRecord", { "id": id_, "content": content, } ) log("updated record %u" % id_) else: log("found multiple records with this name and type") api_macro_logout(environment, accesstoken)