Example #1
0
 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)
Example #2
0
    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'})
Example #3
0
 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