1 """The NZBGet integration."""
3 import voluptuous
as vol
13 DATA_UNDO_UPDATE_LISTENER,
20 from .coordinator
import NZBGetDataUpdateCoordinator
22 PLATFORMS = [Platform.SENSOR, Platform.SWITCH]
25 SPEED_LIMIT_SCHEMA = vol.Schema(
26 {vol.Optional(ATTR_SPEED, default=DEFAULT_SPEED_LIMIT): cv.positive_int}
31 """Set up NZBGet from a config entry."""
32 hass.data.setdefault(DOMAIN, {})
39 await coordinator.async_config_entry_first_refresh()
41 undo_listener = entry.add_update_listener(_async_update_listener)
43 hass.data[DOMAIN][entry.entry_id] = {
44 DATA_COORDINATOR: coordinator,
45 DATA_UNDO_UPDATE_LISTENER: undo_listener,
48 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
56 """Unload a config entry."""
57 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
60 hass.data[DOMAIN][entry.entry_id][DATA_UNDO_UPDATE_LISTENER]()
61 hass.data[DOMAIN].pop(entry.entry_id)
68 coordinator: NZBGetDataUpdateCoordinator,
70 """Register integration-level services."""
72 def pause(call: ServiceCall) ->
None:
73 """Service call to pause downloads in NZBGet."""
74 coordinator.nzbget.pausedownload()
76 def resume(call: ServiceCall) ->
None:
77 """Service call to resume downloads in NZBGet."""
78 coordinator.nzbget.resumedownload()
80 def set_speed(call: ServiceCall) ->
None:
81 """Service call to rate limit speeds in NZBGet."""
82 coordinator.nzbget.rate(call.data[ATTR_SPEED])
84 hass.services.async_register(DOMAIN, SERVICE_PAUSE, pause, schema=vol.Schema({}))
85 hass.services.async_register(DOMAIN, SERVICE_RESUME, resume, schema=vol.Schema({}))
86 hass.services.async_register(
87 DOMAIN, SERVICE_SET_SPEED, set_speed, schema=SPEED_LIMIT_SCHEMA
92 """Handle options update."""
93 await hass.config_entries.async_reload(entry.entry_id)
None _async_register_services(HomeAssistant hass, NZBGetDataUpdateCoordinator coordinator)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
None _async_update_listener(HomeAssistant hass, ConfigEntry entry)