Skip to content

Commit a0b12f6

Browse files
authored
Merge pull request #29 from arjenzijlstra/add-list-messages
Added class MessageList and implemented message_list for text messages.
2 parents 2848a14 + 5cb46e5 commit a0b12f6

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

messagebird/client.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from messagebird.error import Error
77
from messagebird.group import Group, GroupList
88
from messagebird.hlr import HLR
9-
from messagebird.message import Message
9+
from messagebird.message import Message, MessageList
1010
from messagebird.mms import MMS
1111
from messagebird.voicemessage import VoiceMessage
1212
from messagebird.lookup import Lookup
@@ -98,6 +98,11 @@ def message(self, id):
9898
"""Retrieve the information of a specific message."""
9999
return Message().load(self.request('messages/' + str(id)))
100100

101+
def message_list(self, limit=20, offset=0):
102+
"""Retrieve a list of the most recent messages."""
103+
query = 'limit=' + str(limit) + '&offset=' + str(offset)
104+
return MessageList().load(self.request('messages?' + query))
105+
101106
def message_create(self, originator, recipients, body, params=None):
102107
"""Create a new message."""
103108
if params is None: params = {}
@@ -276,6 +281,6 @@ def conversation_list_webhooks(self, limit=10, offset=0):
276281
def conversation_read_webhook(self, id):
277282
uri = CONVERSATION_WEB_HOOKS_PATH + '/' + str(id)
278283
return ConversationWebhook().load(self.request(uri, 'GET', None, CONVERSATION_TYPE))
279-
284+
280285
def _format_query(self, limit, offset):
281286
return 'limit=' + str(limit) + '&offset=' + str(offset)

messagebird/message.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
from messagebird.base import Base
2+
from messagebird.base_list import BaseList
23
from messagebird.recipient import Recipient
34

5+
6+
class MessageList(BaseList):
7+
def __init__(self):
8+
# We're expecting items of type Message
9+
super(MessageList, self).__init__(Message)
10+
11+
412
class Message(Base):
513
def __init__(self):
614
self.id = None

tests/test_message.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,15 @@ def test_message_delete_invalid(self):
4545
Client('', http_client).message_delete('non-existent-message-id')
4646

4747
http_client.request.assert_called_once_with('messages/non-existent-message-id', 'DELETE', None)
48+
49+
def test_message_list(self):
50+
http_client = Mock()
51+
http_client.request.return_value = '{"offset": 0,"limit": 20,"count": 2,"totalCount": 2,"links": {"first": "https://rest.messagebird.com/messages/?offset=0","previous": null,"next": null,"last": "https://rest.messagebird.com/messages/?offset=0"},"items": [{"originator": "TEST","body": "This is a test message, sent through the MessageBird API, using the official Python SDK.","direction": "mt","mclass": 1,"reference": null,"createdDatetime": "2018-07-13T10:34:08+00:00","recipients": {"totalCount": 1,"totalSentCount": 1,"totalDeliveredCount": 1,"totalDeliveryFailedCount": 0,"items": [{"originator": null,"status": "delivered","statusDatetime": "2018-07-13T10:34:13+00:00","recipient": 123456789011}]},"validity": null,"gateway": 1,"typeDetails": {},"href": "https://rest.messagebird.com/messages/first-message-id","datacoding": "plain","scheduledDatetime": null,"type": "sms","id": "first-message-id"},{"originator": "TEST","body": "This is a test message, sent through the MessageBird API, using the official Python SDK.","direction": "mt","mclass": 1,"reference": null,"createdDatetime": "2018-07-13T10:33:52+00:00","recipients": {"totalCount": 1,"totalSentCount": 1,"totalDeliveredCount": 1,"totalDeliveryFailedCount": 0,"items": [{"originator": null,"status": "delivered","statusDatetime": "2018-07-13T10:33:56+00:00","recipient": 123456789012}]},"validity": null,"gateway": 1,"typeDetails": {},"href": "https://rest.messagebird.com/messages/second-message-id","datacoding": "plain","scheduledDatetime": null,"type": "sms","id": "second-message-id"}]}'
52+
53+
message_list = Client('', http_client).message_list(20, 0)
54+
55+
http_client.request.assert_called_once_with('messages?limit=20&offset=0', 'GET', None)
56+
57+
self.assertEqual(2, message_list.totalCount)
58+
self.assertEqual('https://rest.messagebird.com/messages/?offset=0', message_list.links.first)
59+
self.assertEqual('https://rest.messagebird.com/messages/first-message-id', message_list.items[0].href)

0 commit comments

Comments
 (0)