Skip to content

Commit d97cffe

Browse files
committed
Merge pull request #1736 from tseaver/851-1696-pubsub-api_helper_classes
Factor out API helper classes from 'pubsub.Connection'.
2 parents 7983938 + 141eab5 commit d97cffe

File tree

8 files changed

+845
-906
lines changed

8 files changed

+845
-906
lines changed

gcloud/pubsub/client.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
from gcloud.client import JSONClient
1919
from gcloud.pubsub.connection import Connection
20+
from gcloud.pubsub.connection import _PublisherAPI
21+
from gcloud.pubsub.connection import _SubscriberAPI
22+
from gcloud.pubsub.connection import _IAMPolicyAPI
2023
from gcloud.pubsub.subscription import Subscription
2124
from gcloud.pubsub.topic import Topic
2225

@@ -43,6 +46,28 @@ class Client(JSONClient):
4346
"""
4447

4548
_connection_class = Connection
49+
_publisher_api = _subscriber_api = _iam_policy_api = None
50+
51+
@property
52+
def publisher_api(self):
53+
"""Helper for publisher-related API calls."""
54+
if self._publisher_api is None:
55+
self._publisher_api = _PublisherAPI(self.connection)
56+
return self._publisher_api
57+
58+
@property
59+
def subscriber_api(self):
60+
"""Helper for subscriber-related API calls."""
61+
if self._subscriber_api is None:
62+
self._subscriber_api = _SubscriberAPI(self.connection)
63+
return self._subscriber_api
64+
65+
@property
66+
def iam_policy_api(self):
67+
"""Helper for IAM policy-related API calls."""
68+
if self._iam_policy_api is None:
69+
self._iam_policy_api = _IAMPolicyAPI(self.connection)
70+
return self._iam_policy_api
4671

4772
def list_topics(self, page_size=None, page_token=None):
4873
"""List topics for the project associated with this client.
@@ -65,8 +90,8 @@ def list_topics(self, page_size=None, page_token=None):
6590
more topics can be retrieved with another call (pass that
6691
value as ``page_token``).
6792
"""
68-
conn = self.connection
69-
resources, next_token = conn.list_topics(
93+
api = self.publisher_api
94+
resources, next_token = api.list_topics(
7095
self.project, page_size, page_token)
7196
topics = [Topic.from_api_repr(resource, self)
7297
for resource in resources]
@@ -96,8 +121,8 @@ def list_subscriptions(self, page_size=None, page_token=None):
96121
more topics can be retrieved with another call (pass that
97122
value as ``page_token``).
98123
"""
99-
conn = self.connection
100-
resources, next_token = conn.list_subscriptions(
124+
api = self.subscriber_api
125+
resources, next_token = api.list_subscriptions(
101126
self.project, page_size, page_token)
102127
topics = {}
103128
subscriptions = [Subscription.from_api_repr(resource, self,

0 commit comments

Comments
 (0)