from . import MIAB_HOST, MIAB_AUTH_HEADER from requests import get, put, delete import jmespath def list_records(record_type: str = None): response = get( f"https://{MIAB_HOST}/admin/dns/custom", headers={"Authorization": MIAB_AUTH_HEADER} ) if response.status_code == 200: records = response.json() if record_type: jmespath_expr = f"[?rtype=='{record_type.upper()}']" else: jmespath_expr = "[]" return jmespath.search(jmespath_expr + ".{name: qname, type: rtype, value: value}", records) else: raise Exception(f"Failed to retrieve DNS records: {response.status_code} {response.text}") def set_record(name: str, value: str, type: str = "A"): response = put( f"https://{MIAB_HOST}/admin/dns/custom/{name}/{type.upper()}", headers={ "Authorization": MIAB_AUTH_HEADER, "Content-Type": "text/plain" }, data=value ) if response.status_code == 200: return response.text else: raise Exception(f"Failed to set DNS record: {response.status_code} {response.text}") def delete_record(name: str, type: str): response = delete( f"https://{MIAB_HOST}/admin/dns/custom/{name}/{type}", headers={ "Authorization": MIAB_AUTH_HEADER, "Content-Type": "text/plain" }, data="" ) if response.status_code == 200: return response.text else: raise Exception(f"Failed to delete DNS record: {response.status_code} {response.text}")