async def refresh(self, request: Request): try: token = ensureKey('refresh_token', await request.json(), "the request payload") creds = self.exchanger.refreshCredentials(token) new_creds = await self.exchanger.refresh(creds) return json_response(new_creds.serialize(include_secret=False)) except ClientResponseError as e: if e.status == 401: return json_response({"error": "expired"}, status=401) else: self.logError(request, e) return json_response( {"error": "Google returned HTTP {}".format(e.status)}, status=503) except ClientConnectorError: return json_response( {"error": "Couldn't connect to Google's servers"}, status=503) except ServerConnectionError: return json_response( {"error": "Couldn't connect to Google's servers"}, status=503) except ServerDisconnectedError: return json_response( {"error": "Couldn't connect to Google's servers"}, status=503) except ServerTimeoutError: return json_response({"error": "Google's servers timed out"}, status=503) except GoogleCredentialsExpired: return json_response({"error": "expired"}, status=401) except KnownError as e: return json_response({"error": e.message()}, status=503) except Exception as e: self.logError(request, e) return json_response({"error": str(e)}, status=500)
async def saveconfig(self, request: Request) -> Any: data = await request.json() update = ensureKey("config", data, "the confgiuration update request") # validate the snapshot password Password(self.config.getConfigFor(update)).resolve() validated = self.config.validate(update) await self._updateConfiguration(validated, ensureKey("snapshot_folder", data, "the configuration update request"), trigger=False) try: await self.cancelSync(request) await self.startSync(request) except: # noqa: E722 # eat the error, just cancel optimistically pass return web.json_response({'message': 'Settings saved'})
def __init__(self, data: Dict[str, Any], data_cache: DataCache, config: Config, retained=False): super().__init__(name=ensureKey('name', data, HA_KEY_TEXT), slug=ensureKey('slug', data, HA_KEY_TEXT), date=Time.parse(ensureKey('date', data, HA_KEY_TEXT)), size=float(ensureKey("size", data, HA_KEY_TEXT)) * 1024 * 1024, source=SOURCE_HA, snapshotType=ensureKey('type', data, HA_KEY_TEXT), version=ensureKey('homeassistant', data, HA_KEY_TEXT), protected=ensureKey('protected', data, HA_KEY_TEXT), retained=retained, uploadable=True, details=data) self._data_cache = data_cache self._config = config