async def example(): """Example usage of pycfdns.""" async with aiohttp.ClientSession() as session: cfupdate = CloudflareUpdater(session, EMAIL, TOKEN, ZONE, UPDATE_RECORDS) zone_id = await cfupdate.get_zone_id() records = await cfupdate.get_record_info(zone_id) for record in records: print(record.record_name) await cfupdate.update_records(zone_id, records)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Cloudflare from a config entry.""" cfupdate = CloudflareUpdater( async_get_clientsession(hass), entry.data[CONF_API_TOKEN], entry.data[CONF_ZONE], entry.data[CONF_RECORDS], ) try: zone_id = await cfupdate.get_zone_id() except CloudflareAuthenticationException: _LOGGER.error("API access forbidden. Please reauthenticate") return False except CloudflareConnectionException as error: raise ConfigEntryNotReady from error async def update_records(now): """Set up recurring update.""" try: await _async_update_cloudflare(cfupdate, zone_id) except CloudflareException as error: _LOGGER.error("Error updating zone %s: %s", entry.data[CONF_ZONE], error) async def update_records_service(call): """Set up service for manual trigger.""" try: await _async_update_cloudflare(cfupdate, zone_id) except CloudflareException as error: _LOGGER.error("Error updating zone %s: %s", entry.data[CONF_ZONE], error) update_interval = timedelta(minutes=DEFAULT_UPDATE_INTERVAL) undo_interval = async_track_time_interval(hass, update_records, update_interval) hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN][entry.entry_id] = { DATA_UNDO_UPDATE_INTERVAL: undo_interval, } hass.services.async_register(DOMAIN, SERVICE_UPDATE_RECORDS, update_records_service) return True
def setup(hass, config): """Set up the Cloudflare component.""" from pycfdns import CloudflareUpdater cfupdate = CloudflareUpdater() email = config[DOMAIN][CONF_EMAIL] key = config[DOMAIN][CONF_API_KEY] zone = config[DOMAIN][CONF_ZONE] records = config[DOMAIN][CONF_RECORDS] def update_records_interval(now): """Set up recurring update.""" _update_cloudflare(cfupdate, email, key, zone, records) def update_records_service(now): """Set up service for manual trigger.""" _update_cloudflare(cfupdate, email, key, zone, records) track_time_interval(hass, update_records_interval, INTERVAL) hass.services.register(DOMAIN, "update_records", update_records_service) return True
from pycfdns import CloudflareUpdater cfupdate = CloudflareUpdater() zone = '_zone_' email = '_email_' key = '_token_' records = [_subdomains_] headers = cfupdate.set_header(email, key) zoneid = cfupdate.get_zoneID(headers, zone) update_records = cfupdate.get_recordInfo(headers, zoneid, zone, records) result = cfupdate.update_records(headers, zoneid, update_records) print(result)