diff options
| author | Devendra | 2014-11-22 02:56:39 +0530 |
|---|---|---|
| committer | Devendra | 2014-11-22 02:56:39 +0530 |
| commit | f97718ca0682a627857ae66f454582ec71670716 (patch) | |
| tree | b2e11c61b560b0d1440948f2ffe0e580da71df51 /Pubnub.py | |
| parent | cdf0429083251dae7b6a1b472e6ead7a42f6adaf (diff) | |
| download | pubnub-python-f97718ca0682a627857ae66f454582ec71670716.tar.bz2 | |
Channel groups
Diffstat (limited to 'Pubnub.py')
| -rw-r--r-- | Pubnub.py | 91 |
1 files changed, 89 insertions, 2 deletions
@@ -613,8 +613,13 @@ class PubnubBase(object): def _new_format_callback(response): if 'payload' in response: if (callback is not None): - callback({'message': response['message'], - 'payload': response['payload']}) + callback_data = dict() + callback_data['payload'] = response['payload'] + + if 'message' in response: + callback_data['message'] = response['message'] + + callback(callback_data) else: if (callback is not None): callback(response) @@ -873,8 +878,90 @@ class PubnubBase(object): if ("urlparams" in request): url = url + '?' + "&".join([x + "=" + str(y) for x, y in request[ "urlparams"].items() if y is not None]) + print url return url + def _channel_registry(self, url=None, params=None, callback=None, error=None): + + if (params is None): + params = dict() + + urlcomponents = ['v1', 'channel-registration', 'sub-key', self.subscribe_key ] + + if (url is not None): + urlcomponents += url + + params['auth'] = self.auth_key + params['pnsdk'] = self.pnsdk + + ## Get History + return self._request({'urlcomponents': urlcomponents, 'urlparams': params}, + callback=self._return_wrapped_callback(callback), + error=self._return_wrapped_callback(error)) + + def _channel_group(self, channel_group=None, channels=None, cloak=None,mode='add', callback=None, error=None): + params = dict() + url = [] + namespace = None + + if (channel_group is not None and len(channel_group) > 0): + ns_ch_a = channel_group.split(':') + + if len(ns_ch_a) > 1: + namespace = None if ns_ch_a[0] == '*' else ns_ch_a[0] + channel_group = ns_ch_a[1] + else: + channel_group = ns_ch_a[0] + + if (namespace is not None): + url.append('namespace') + url.append(self._encode(namespace)) + + url.append('channel-group') + + if channel_group is not None and channel_group != '*': + url.append(channel_group) + + if (channels is not None): + if (type(channels) is list): + channels = channels.join(',') + params[mode] = channels + #params['cloak'] = 'true' if CLOAK is True else 'false' + else: + if mode == 'remove': + url.append('remove') + + return self._channel_registry(url=url, params=params, callback=callback, error=error) + + + def channel_group_list_namespaces(self, callback=None, error=None): + url = ['namespace'] + return self._channel_registry(url=url) + + def channel_group_remove_namespace(self, namespace, callback=None, error=None): + url = ['namespace', self._encode(namespace), 'remove'] + return self._channel_registry(url=url, callback=callback, error=error) + + def channel_group_list_groups(self, namespace=None, channel_group=None, callback=None, error=None): + + if (namespace is not None and len(namespace) > 0): + channel_group = namespace + ':*' + + return self._channel_group(channel_group=channel_group, callback=callback, error=error) + + def channel_group_list_channels(self, channel_group, callback=None, error=None): + return self._channel_group(channel_group=channel_group, callback=callback, error=error) + + def channel_group_add_channel(self, channel_group, channel, callback=None, error=None): + return self._channel_group(channel_group=channel_group, channels=channel, mode='add', callback=callback, error=error) + + def channel_group_remove_channel(self, channel_group, channel, callback=None, error=None): + return self._channel_group(channel_group=channel_group, channels=channel, mode='remove', callback=callback, error=error) + + def channel_group_remove_group(self, channel_group, callback=None, error=None): + return self._channel_group(channel_group=channel_group, mode='remove', callback=callback, error=error) + + class EmptyLock(): def __enter__(self): |
