def _exists_resource( self, collection: discovery.Resource, filter: str) -> bool: # pylint: disable=redefined-builtin resp = collection.list( project=self.project, filter=filter, maxResults=1).execute(num_retries=self._GCP_API_RETRIES) if 'kind' not in resp: # TODO(sergiitk): better error raise ValueError('List response "kind" is missing') return 'items' in resp and resp['items']
def _paginate(self, resource: Resource, list_args: Optional[Dict[str, Any]] = None) -> List[dict]: list_args = list_args or {} result: List[dict] = [] while True: # start index has value 1 request = resource.list(start_index=len(result) + 1, **list_args) # pylint: disable=no-member response = request.execute(num_retries=self.num_retries) result.extend(response.get("items", [])) # result is the number of fetched links from Analytics # when all links will be added to the result # the loop will break if response["totalResults"] <= len(result): break return result
async def async_get_events_page( self, hass: HomeAssistant, events: google_discovery.Resource, params: dict[str, Any], page_token: str | None, event_list: list[dict[str, Any]], ) -> str | None: """Get a page of events in a specific time frame.""" params["pageToken"] = page_token result = await hass.async_add_executor_job( events.list(**params).execute) items = result.get("items", []) for item in items: if not self.ignore_availability and "transparency" in item: if item["transparency"] == "opaque": event_list.append(item) else: event_list.append(item) return result.get("nextPageToken")
def _list_resource(self, collection: discovery.Resource): return collection.list(project=self.project).execute( num_retries=self._GCP_API_RETRIES)