| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| """Google API key support. |
| This module provides authentication using the `API key`_. |
| .. _API key: |
| https://cloud.google.com/docs/authentication/api-keys/ |
| """ |
|
|
| from google.auth import _helpers |
| from google.auth import credentials |
| from google.auth import exceptions |
|
|
|
|
| class Credentials(credentials.Credentials): |
| """API key credentials. |
| These credentials use API key to provide authorization to applications. |
| """ |
|
|
| def __init__(self, token): |
| """ |
| Args: |
| token (str): API key string |
| Raises: |
| ValueError: If the provided API key is not a non-empty string. |
| """ |
| super(Credentials, self).__init__() |
| if not token: |
| raise exceptions.InvalidValue("Token must be a non-empty API key string") |
| self.token = token |
|
|
| @property |
| def expired(self): |
| return False |
|
|
| @property |
| def valid(self): |
| return True |
|
|
| @_helpers.copy_docstring(credentials.Credentials) |
| def refresh(self, request): |
| return |
|
|
| def apply(self, headers, token=None): |
| """Apply the API key token to the x-goog-api-key header. |
| Args: |
| headers (Mapping): The HTTP request headers. |
| token (Optional[str]): If specified, overrides the current access |
| token. |
| """ |
| headers["x-goog-api-key"] = token or self.token |
|
|
| def before_request(self, request, method, url, headers): |
| """Performs credential-specific before request logic. |
| Refreshes the credentials if necessary, then calls :meth:`apply` to |
| apply the token to the x-goog-api-key header. |
| Args: |
| request (google.auth.transport.Request): The object used to make |
| HTTP requests. |
| method (str): The request's HTTP method or the RPC method being |
| invoked. |
| url (str): The request's URI or the RPC service's URI. |
| headers (Mapping): The request's headers. |
| """ |
| self.apply(headers) |
|
|