From 2d86a9c60ef57132fb2e4d858db063aee6135e03 Mon Sep 17 00:00:00 2001 From: Curtis Smith Date: Mon, 28 Jul 2014 11:30:52 -0700 Subject: [PATCH 1/3] subscriber custom headers change --- iron_mq.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/iron_mq.py b/iron_mq.py index ef7d448..d5e8617 100644 --- a/iron_mq.py +++ b/iron_mq.py @@ -5,6 +5,7 @@ except: import simplejson as json + class Queue: client = None name = None @@ -66,7 +67,7 @@ def delete_multiple(self, *messages): messages -- An array of messages to be deleted from the queue. """ url = "queues/%s/messages" % self.name - + data = json.dumps({"ids": messages}) result = self.client.delete(url=url, body=data, headers={"Content-Type":"application/json"}) @@ -149,6 +150,11 @@ def release(self, message_id, delay=0): return response['body'] + # Subscribers may now be: + # 1) a url string + # 2) a tuple of (url, headers) + # 3) a list of url strings or tuples + # headers must be in format: {'Example':'Header'} def update(self, subscribers=None, **kwargs): url = "queues/%s" % self.name body = kwargs @@ -156,12 +162,13 @@ def update(self, subscribers=None, **kwargs): if isinstance(subscribers, list): body.update(self._prepare_subscribers(*subscribers)) else: - body['subscribers'] = [{'url': subscribers}] + if isinstance(subscribers, tuple): + body['subscribers'] = [{'url': subscribers[0], 'headers': subscribers[1]}] + else: + body['subscribers'] = [{'url': subscribers}] body = json.dumps(body) - response = self.client.post(url, body=body, headers={"Content-Type":"application/json"}) - return response['body'] def delete_queue(self): @@ -231,10 +238,16 @@ def _prepare_alert_ids(self, *alert_ids): return {'alerts': alerts} def _prepare_subscribers(self, *subscribers): - subscrs = [{'url': ss} for ss in subscribers] + subscrs = [] + for ss in subscribers: + if isinstance(ss, tuple): + subscrs.append({'url': ss[0], 'headers': ss[1]}) + else: + subscrs.appen({'url': ss}) return {'subscribers': subscrs} + class IronMQ: NAME = "iron_mq_python" VERSION = "0.5" @@ -251,7 +264,6 @@ def __init__(self, name=None, **kwargs): self.client = iron_core.IronClient(name=IronMQ.NAME, version=IronMQ.VERSION, product="iron_mq", **kwargs) - def queues(self, page=None, per_page=None): """Execute an HTTP request to get a list of queues and return it. @@ -264,7 +276,7 @@ def queues(self, page=None, per_page=None): options['page'] = page if per_page is not None: options['per_page'] = per_page - + query = urllib.urlencode(options) url = "queues" if query != "": @@ -273,7 +285,6 @@ def queues(self, page=None, per_page=None): return [queue["name"] for queue in result["body"]] - def queue(self, queue_name): """Returns Queue object. @@ -282,7 +293,6 @@ def queue(self, queue_name): """ return Queue(self, queue_name) - # DEPRECATED def getQueues(self, page=None, project_id=None): From a052a9f7bc42fccd99fac783f79c4ef855d4b9a8 Mon Sep 17 00:00:00 2001 From: Curtis Smith Date: Mon, 28 Jul 2014 12:05:00 -0700 Subject: [PATCH 2/3] submitting pr --- iron_mq.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iron_mq.py b/iron_mq.py index d5e8617..a2aba54 100644 --- a/iron_mq.py +++ b/iron_mq.py @@ -154,7 +154,7 @@ def release(self, message_id, delay=0): # 1) a url string # 2) a tuple of (url, headers) # 3) a list of url strings or tuples - # headers must be in format: {'Example':'Header'} + # headers must be in the format: {'Example':'Header'} def update(self, subscribers=None, **kwargs): url = "queues/%s" % self.name body = kwargs From 1f7851c17dac482e33798f5a982424a8822cdd61 Mon Sep 17 00:00:00 2001 From: Curtis Smith Date: Mon, 28 Jul 2014 14:31:27 -0700 Subject: [PATCH 3/3] switched from tuple to dict --- iron_mq.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/iron_mq.py b/iron_mq.py index a2aba54..7484319 100644 --- a/iron_mq.py +++ b/iron_mq.py @@ -150,11 +150,10 @@ def release(self, message_id, delay=0): return response['body'] - # Subscribers may now be: + # Subscribers can be: # 1) a url string - # 2) a tuple of (url, headers) - # 3) a list of url strings or tuples - # headers must be in the format: {'Example':'Header'} + # 2) a dict of {'url': 'url.com', 'headers': {'Content-Type': 'plain/text'}} + # 3) a list of url strings or dicts def update(self, subscribers=None, **kwargs): url = "queues/%s" % self.name body = kwargs @@ -162,8 +161,8 @@ def update(self, subscribers=None, **kwargs): if isinstance(subscribers, list): body.update(self._prepare_subscribers(*subscribers)) else: - if isinstance(subscribers, tuple): - body['subscribers'] = [{'url': subscribers[0], 'headers': subscribers[1]}] + if isinstance(subscribers, dict): + body['subscribers'] = [subscribers] else: body['subscribers'] = [{'url': subscribers}] body = json.dumps(body) @@ -240,10 +239,10 @@ def _prepare_alert_ids(self, *alert_ids): def _prepare_subscribers(self, *subscribers): subscrs = [] for ss in subscribers: - if isinstance(ss, tuple): - subscrs.append({'url': ss[0], 'headers': ss[1]}) + if isinstance(ss, dict): + subscrs.append(ss) else: - subscrs.appen({'url': ss}) + subscrs.append({'url': ss}) return {'subscribers': subscrs}