def from_api_repr(cls, resource, client, topics=None): """Factory: construct a topic given its API representation :type resource: dict :param resource: topic resource representation returned from the API :type client: :class:`gcloud.pubsub.client.Client` :param client: Client which holds credentials and project configuration for a topic. :type topics: dict or None :param topics: A mapping of topic names -> topics. If not passed, the subscription will have a newly-created topic. :rtype: :class:`gcloud.pubsub.subscription.Subscription` :returns: Subscription parsed from ``resource``. """ if topics is None: topics = {} t_name = resource['topic'] topic = topics.get(t_name) if topic is None: topic = topics[t_name] = Topic.from_api_repr({'name': t_name}, client) _, _, _, name = resource['name'].split('/') ack_deadline = resource.get('ackDeadlineSeconds') push_config = resource.get('pushConfig', {}) push_endpoint = push_config.get('pushEndpoint') return cls(name, topic, ack_deadline, push_endpoint)
def list_topics(self, page_size=None, page_token=None): """List topics for the project associated with this client. See: https://cloud.google.com/pubsub/reference/rest/v1beta2/projects/topics/list :type page_size: int :param page_size: maximum number of topics to return, If not passed, defaults to a value set by the API. :type page_token: string :param page_token: opaque marker for the next "page" of topics. If not passed, the API will return the first page of topics. :rtype: tuple, (list, str) :returns: list of :class:`gcloud.pubsub.topic.Topic`, plus a "next page token" string: if not None, indicates that more topics can be retrieved with another call (pass that value as ``page_token``). """ params = {} if page_size is not None: params['pageSize'] = page_size if page_token is not None: params['pageToken'] = page_token path = '/projects/%s/topics' % (self.project,) resp = self.connection.api_request(method='GET', path=path, query_params=params) topics = [Topic.from_api_repr(resource, self) for resource in resp['topics']] return topics, resp.get('nextPageToken')
def list_topics(self, page_size=None, page_token=None): """List topics for the project associated with this client. See: https://cloud.google.com/pubsub/reference/rest/v1/projects.topics/list :type page_size: int :param page_size: maximum number of topics to return, If not passed, defaults to a value set by the API. :type page_token: string :param page_token: opaque marker for the next "page" of topics. If not passed, the API will return the first page of topics. :rtype: tuple, (list, str) :returns: list of :class:`gcloud.pubsub.topic.Topic`, plus a "next page token" string: if not None, indicates that more topics can be retrieved with another call (pass that value as ``page_token``). """ api = self.publisher_api resources, next_token = api.list_topics( self.project, page_size, page_token) topics = [Topic.from_api_repr(resource, self) for resource in resources] return topics, next_token
def list_topics(self, page_size=None, page_token=None): """List topics for the project associated with this client. See: https://cloud.google.com/pubsub/reference/rest/v1/projects.topics/list :type page_size: int :param page_size: maximum number of topics to return, If not passed, defaults to a value set by the API. :type page_token: string :param page_token: opaque marker for the next "page" of topics. If not passed, the API will return the first page of topics. :rtype: tuple, (list, str) :returns: list of :class:`gcloud.pubsub.topic.Topic`, plus a "next page token" string: if not None, indicates that more topics can be retrieved with another call (pass that value as ``page_token``). """ params = {} if page_size is not None: params['pageSize'] = page_size if page_token is not None: params['pageToken'] = page_token path = '/projects/%s/topics' % (self.project,) resp = self.connection.api_request(method='GET', path=path, query_params=params) topics = [Topic.from_api_repr(resource, self) for resource in resp.get('topics', ())] return topics, resp.get('nextPageToken')
def list_topics(self, page_size=None, page_token=None): """List topics for the project associated with this client. See: https://cloud.google.com/pubsub/reference/rest/v1/projects.topics/list Example: .. literalinclude:: pubsub_snippets.py :start-after: [START client_list_topics] :end-before: [END client_list_topics] :type page_size: int :param page_size: maximum number of topics to return, If not passed, defaults to a value set by the API. :type page_token: string :param page_token: opaque marker for the next "page" of topics. If not passed, the API will return the first page of topics. :rtype: tuple, (list, str) :returns: list of :class:`gcloud.pubsub.topic.Topic`, plus a "next page token" string: if not None, indicates that more topics can be retrieved with another call (pass that value as ``page_token``). """ api = self.publisher_api resources, next_token = api.list_topics( self.project, page_size, page_token) topics = [Topic.from_api_repr(resource, self) for resource in resources] return topics, next_token
def list_topics(page_size=None, page_token=None, project=None, connection=None): """List topics for a given project. See: https://cloud.google.com/pubsub/reference/rest/v1beta2/projects/topics/list :type page_size: int :param page_size: maximum number of topics to return, If not passed, defaults to a value set by the API. :type page_token: string :param page_token: opaque marker for the next "page" of topics. If not passed, the API will return the first page of topics. :type project: string :param project: project ID to query. If not passed, defaults to the project ID inferred from the environment. :type connection: :class:`gcloud.pubsub.connection.Connection` :param connection: connection to use for the query. If not passed, defaults to the connection inferred from the environment. :rtype: tuple, (list, str) :returns: list of :class:`gcloud.pubsub.topic.Topic`, plus a "next page token" string: if not None, indicates that more topics can be retrieved with another call (pass that value as ``page_token``). """ if project is None: project = get_default_project() if connection is None: connection = get_default_connection() params = {} if page_size is not None: params['pageSize'] = page_size if page_token is not None: params['pageToken'] = page_token path = '/projects/%s/topics' % project resp = connection.api_request(method='GET', path=path, query_params=params) topics = [Topic.from_api_repr(resource, connection) for resource in resp['topics']] return topics, resp.get('nextPageToken')
def list_topics(page_size=None, page_token=None, project=None, connection=None): """List topics for a given project. See: https://cloud.google.com/pubsub/reference/rest/v1beta2/projects/topics/list :type page_size: int :param page_size: maximum number of topics to return, If not passed, defaults to a value set by the API. :type page_token: string :param page_token: opaque marker for the next "page" of topics. If not passed, the API will return the first page of topics. :type project: string :param project: project ID to query. If not passed, defaults to the project ID inferred from the environment. :type connection: :class:`gcloud.pubsub.connection.Connection` :param connection: connection to use for the query. If not passed, defaults to the connection inferred from the environment. :rtype: tuple, (list, str) :returns: list of :class:`gcloud.pubsub.topic.Topic`, plus a "next page token" string: if not None, indicates that more topics can be retrieved with another call (pass that value as ``page_token``). """ if project is None: project = get_default_project() connection = _require_connection(connection) params = {} if page_size is not None: params['pageSize'] = page_size if page_token is not None: params['pageToken'] = page_token path = '/projects/%s/topics' % project resp = connection.api_request(method='GET', path=path, query_params=params) topics = [Topic.from_api_repr(resource) for resource in resp['topics']] return topics, resp.get('nextPageToken')
def from_api_repr(cls, resource, topics=None): """Factory: construct a topic given its API representation :type resource: dict :param resource: topic resource representation returned from the API :type topics: dict or None :param topics: A mapping of topic names -> topics. If not passed, the subscription will have a newly-created topic. :rtype: :class:`gcloud.pubsub.subscription.Subscription` """ if topics is None: topics = {} t_name = resource['topic'] topic = topics.get(t_name) if topic is None: topic = topics[t_name] = Topic.from_api_repr({'name': t_name}) _, _, _, name = resource['name'].split('/') ack_deadline = resource.get('ackDeadlineSeconds') push_config = resource.get('pushConfig', {}) push_endpoint = push_config.get('pushEndpoint') return cls(name, topic, ack_deadline, push_endpoint)