1# -*- coding: utf-8 -*- 
    2# Copyright 2023 Google LLC 
    3# 
    4# Licensed under the Apache License, Version 2.0 (the "License"); 
    5# you may not use this file except in compliance with the License. 
    6# You may obtain a copy of the License at 
    7# 
    8#     http://www.apache.org/licenses/LICENSE-2.0 
    9# 
    10# Unless required by applicable law or agreed to in writing, software 
    11# distributed under the License is distributed on an "AS IS" BASIS, 
    12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    13# See the License for the specific language governing permissions and 
    14# limitations under the License. 
    15# 
    16from typing import ( 
    17    Any, 
    18    AsyncIterator, 
    19    Awaitable, 
    20    Callable, 
    21    Iterator, 
    22    Optional, 
    23    Sequence, 
    24    Tuple, 
    25) 
    26 
    27from google.cloud.secretmanager_v1beta1.types import resources, service 
    28 
    29 
    30class ListSecretsPager: 
    31    """A pager for iterating through ``list_secrets`` requests. 
    32 
    33    This class thinly wraps an initial 
    34    :class:`google.cloud.secretmanager_v1beta1.types.ListSecretsResponse` object, and 
    35    provides an ``__iter__`` method to iterate through its 
    36    ``secrets`` field. 
    37 
    38    If there are more pages, the ``__iter__`` method will make additional 
    39    ``ListSecrets`` requests and continue to iterate 
    40    through the ``secrets`` field on the 
    41    corresponding responses. 
    42 
    43    All the usual :class:`google.cloud.secretmanager_v1beta1.types.ListSecretsResponse` 
    44    attributes are available on the pager. If multiple requests are made, only 
    45    the most recent response is retained, and thus used for attribute lookup. 
    46    """ 
    47 
    48    def __init__( 
    49        self, 
    50        method: Callable[..., service.ListSecretsResponse], 
    51        request: service.ListSecretsRequest, 
    52        response: service.ListSecretsResponse, 
    53        *, 
    54        metadata: Sequence[Tuple[str, str]] = () 
    55    ): 
    56        """Instantiate the pager. 
    57 
    58        Args: 
    59            method (Callable): The method that was originally called, and 
    60                which instantiated this pager. 
    61            request (google.cloud.secretmanager_v1beta1.types.ListSecretsRequest): 
    62                The initial request object. 
    63            response (google.cloud.secretmanager_v1beta1.types.ListSecretsResponse): 
    64                The initial response object. 
    65            metadata (Sequence[Tuple[str, str]]): Strings which should be 
    66                sent along with the request as metadata. 
    67        """ 
    68        self._method = method 
    69        self._request = service.ListSecretsRequest(request) 
    70        self._response = response 
    71        self._metadata = metadata 
    72 
    73    def __getattr__(self, name: str) -> Any: 
    74        return getattr(self._response, name) 
    75 
    76    @property 
    77    def pages(self) -> Iterator[service.ListSecretsResponse]: 
    78        yield self._response 
    79        while self._response.next_page_token: 
    80            self._request.page_token = self._response.next_page_token 
    81            self._response = self._method(self._request, metadata=self._metadata) 
    82            yield self._response 
    83 
    84    def __iter__(self) -> Iterator[resources.Secret]: 
    85        for page in self.pages: 
    86            yield from page.secrets 
    87 
    88    def __repr__(self) -> str: 
    89        return "{0}<{1!r}>".format(self.__class__.__name__, self._response) 
    90 
    91 
    92class ListSecretsAsyncPager: 
    93    """A pager for iterating through ``list_secrets`` requests. 
    94 
    95    This class thinly wraps an initial 
    96    :class:`google.cloud.secretmanager_v1beta1.types.ListSecretsResponse` object, and 
    97    provides an ``__aiter__`` method to iterate through its 
    98    ``secrets`` field. 
    99 
    100    If there are more pages, the ``__aiter__`` method will make additional 
    101    ``ListSecrets`` requests and continue to iterate 
    102    through the ``secrets`` field on the 
    103    corresponding responses. 
    104 
    105    All the usual :class:`google.cloud.secretmanager_v1beta1.types.ListSecretsResponse` 
    106    attributes are available on the pager. If multiple requests are made, only 
    107    the most recent response is retained, and thus used for attribute lookup. 
    108    """ 
    109 
    110    def __init__( 
    111        self, 
    112        method: Callable[..., Awaitable[service.ListSecretsResponse]], 
    113        request: service.ListSecretsRequest, 
    114        response: service.ListSecretsResponse, 
    115        *, 
    116        metadata: Sequence[Tuple[str, str]] = () 
    117    ): 
    118        """Instantiates the pager. 
    119 
    120        Args: 
    121            method (Callable): The method that was originally called, and 
    122                which instantiated this pager. 
    123            request (google.cloud.secretmanager_v1beta1.types.ListSecretsRequest): 
    124                The initial request object. 
    125            response (google.cloud.secretmanager_v1beta1.types.ListSecretsResponse): 
    126                The initial response object. 
    127            metadata (Sequence[Tuple[str, str]]): Strings which should be 
    128                sent along with the request as metadata. 
    129        """ 
    130        self._method = method 
    131        self._request = service.ListSecretsRequest(request) 
    132        self._response = response 
    133        self._metadata = metadata 
    134 
    135    def __getattr__(self, name: str) -> Any: 
    136        return getattr(self._response, name) 
    137 
    138    @property 
    139    async def pages(self) -> AsyncIterator[service.ListSecretsResponse]: 
    140        yield self._response 
    141        while self._response.next_page_token: 
    142            self._request.page_token = self._response.next_page_token 
    143            self._response = await self._method(self._request, metadata=self._metadata) 
    144            yield self._response 
    145 
    146    def __aiter__(self) -> AsyncIterator[resources.Secret]: 
    147        async def async_generator(): 
    148            async for page in self.pages: 
    149                for response in page.secrets: 
    150                    yield response 
    151 
    152        return async_generator() 
    153 
    154    def __repr__(self) -> str: 
    155        return "{0}<{1!r}>".format(self.__class__.__name__, self._response) 
    156 
    157 
    158class ListSecretVersionsPager: 
    159    """A pager for iterating through ``list_secret_versions`` requests. 
    160 
    161    This class thinly wraps an initial 
    162    :class:`google.cloud.secretmanager_v1beta1.types.ListSecretVersionsResponse` object, and 
    163    provides an ``__iter__`` method to iterate through its 
    164    ``versions`` field. 
    165 
    166    If there are more pages, the ``__iter__`` method will make additional 
    167    ``ListSecretVersions`` requests and continue to iterate 
    168    through the ``versions`` field on the 
    169    corresponding responses. 
    170 
    171    All the usual :class:`google.cloud.secretmanager_v1beta1.types.ListSecretVersionsResponse` 
    172    attributes are available on the pager. If multiple requests are made, only 
    173    the most recent response is retained, and thus used for attribute lookup. 
    174    """ 
    175 
    176    def __init__( 
    177        self, 
    178        method: Callable[..., service.ListSecretVersionsResponse], 
    179        request: service.ListSecretVersionsRequest, 
    180        response: service.ListSecretVersionsResponse, 
    181        *, 
    182        metadata: Sequence[Tuple[str, str]] = () 
    183    ): 
    184        """Instantiate the pager. 
    185 
    186        Args: 
    187            method (Callable): The method that was originally called, and 
    188                which instantiated this pager. 
    189            request (google.cloud.secretmanager_v1beta1.types.ListSecretVersionsRequest): 
    190                The initial request object. 
    191            response (google.cloud.secretmanager_v1beta1.types.ListSecretVersionsResponse): 
    192                The initial response object. 
    193            metadata (Sequence[Tuple[str, str]]): Strings which should be 
    194                sent along with the request as metadata. 
    195        """ 
    196        self._method = method 
    197        self._request = service.ListSecretVersionsRequest(request) 
    198        self._response = response 
    199        self._metadata = metadata 
    200 
    201    def __getattr__(self, name: str) -> Any: 
    202        return getattr(self._response, name) 
    203 
    204    @property 
    205    def pages(self) -> Iterator[service.ListSecretVersionsResponse]: 
    206        yield self._response 
    207        while self._response.next_page_token: 
    208            self._request.page_token = self._response.next_page_token 
    209            self._response = self._method(self._request, metadata=self._metadata) 
    210            yield self._response 
    211 
    212    def __iter__(self) -> Iterator[resources.SecretVersion]: 
    213        for page in self.pages: 
    214            yield from page.versions 
    215 
    216    def __repr__(self) -> str: 
    217        return "{0}<{1!r}>".format(self.__class__.__name__, self._response) 
    218 
    219 
    220class ListSecretVersionsAsyncPager: 
    221    """A pager for iterating through ``list_secret_versions`` requests. 
    222 
    223    This class thinly wraps an initial 
    224    :class:`google.cloud.secretmanager_v1beta1.types.ListSecretVersionsResponse` object, and 
    225    provides an ``__aiter__`` method to iterate through its 
    226    ``versions`` field. 
    227 
    228    If there are more pages, the ``__aiter__`` method will make additional 
    229    ``ListSecretVersions`` requests and continue to iterate 
    230    through the ``versions`` field on the 
    231    corresponding responses. 
    232 
    233    All the usual :class:`google.cloud.secretmanager_v1beta1.types.ListSecretVersionsResponse` 
    234    attributes are available on the pager. If multiple requests are made, only 
    235    the most recent response is retained, and thus used for attribute lookup. 
    236    """ 
    237 
    238    def __init__( 
    239        self, 
    240        method: Callable[..., Awaitable[service.ListSecretVersionsResponse]], 
    241        request: service.ListSecretVersionsRequest, 
    242        response: service.ListSecretVersionsResponse, 
    243        *, 
    244        metadata: Sequence[Tuple[str, str]] = () 
    245    ): 
    246        """Instantiates the pager. 
    247 
    248        Args: 
    249            method (Callable): The method that was originally called, and 
    250                which instantiated this pager. 
    251            request (google.cloud.secretmanager_v1beta1.types.ListSecretVersionsRequest): 
    252                The initial request object. 
    253            response (google.cloud.secretmanager_v1beta1.types.ListSecretVersionsResponse): 
    254                The initial response object. 
    255            metadata (Sequence[Tuple[str, str]]): Strings which should be 
    256                sent along with the request as metadata. 
    257        """ 
    258        self._method = method 
    259        self._request = service.ListSecretVersionsRequest(request) 
    260        self._response = response 
    261        self._metadata = metadata 
    262 
    263    def __getattr__(self, name: str) -> Any: 
    264        return getattr(self._response, name) 
    265 
    266    @property 
    267    async def pages(self) -> AsyncIterator[service.ListSecretVersionsResponse]: 
    268        yield self._response 
    269        while self._response.next_page_token: 
    270            self._request.page_token = self._response.next_page_token 
    271            self._response = await self._method(self._request, metadata=self._metadata) 
    272            yield self._response 
    273 
    274    def __aiter__(self) -> AsyncIterator[resources.SecretVersion]: 
    275        async def async_generator(): 
    276            async for page in self.pages: 
    277                for response in page.versions: 
    278                    yield response 
    279 
    280        return async_generator() 
    281 
    282    def __repr__(self) -> str: 
    283        return "{0}<{1!r}>".format(self.__class__.__name__, self._response)