Skip to content

Commit 914a2d5

Browse files
authored
Add ImageSet. (#343)
Closes #339
1 parent 5f27b7e commit 914a2d5

File tree

3 files changed

+65
-2
lines changed

3 files changed

+65
-2
lines changed

linebot/models/messages.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,16 @@ class ImageMessage(Message):
9898
The binary image data can be retrieved with the Content API.
9999
"""
100100

101-
def __init__(self, id=None, content_provider=None, **kwargs):
101+
def __init__(self, id=None, content_provider=None, image_set=None, **kwargs):
102102
"""__init__ method.
103103
104104
:param str id: Message ID
105105
:param content_provider: ContentProvider object
106106
:type content_provider:
107107
:py:class:`linebot.models.messages.ContentProvider`
108+
:param image_set: ImageSet object
109+
:type image_set:
110+
:py:class:`linebot.models.messages.ImageSet`
108111
:param kwargs:
109112
"""
110113
super(ImageMessage, self).__init__(id=id, **kwargs)
@@ -113,6 +116,9 @@ def __init__(self, id=None, content_provider=None, **kwargs):
113116
self.content_provider = self.get_or_new_from_json_dict(
114117
content_provider, ContentProvider
115118
)
119+
self.image_set = self.get_or_new_from_json_dict(
120+
image_set, ImageSet
121+
)
116122

117123

118124
class VideoMessage(Message):
@@ -266,3 +272,21 @@ def __init__(self, type=None, original_content_url=None, preview_image_url=None,
266272
self.type = type
267273
self.original_content_url = original_content_url
268274
self.preview_image_url = preview_image_url
275+
276+
277+
class ImageSet(Base):
278+
"""Image Set."""
279+
280+
def __init__(self, id=None, index=None, total=0, **kwargs):
281+
"""__init__ method.
282+
283+
:param str id: Image set ID.
284+
:param int index: Image number in a set of images sent simultaneously.
285+
:param int total: Total number of images sent simultaneously.
286+
:param kwargs:
287+
"""
288+
super(ImageSet, self).__init__(**kwargs)
289+
290+
self.id = id
291+
self.index = index
292+
self.total = total

tests/test_webhook.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def test_parse(self):
8181
self.assertEqual(events[0].message.type, 'text')
8282
self.assertEqual(events[0].message.text, 'Hello, world')
8383

84-
# MessageEvent, SourceRoom, TextMessage
84+
# MessageEvent, SourceRoom, ImageMessage
8585
self.assertIsInstance(events[1], MessageEvent)
8686
self.assertEqual(events[1].reply_token, 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA')
8787
self.assertEqual(events[1].type, 'message')
@@ -444,6 +444,23 @@ def test_parse(self):
444444
self.assertIsInstance(events[26].video_play_complete, VideoPlayComplete)
445445
self.assertEqual(events[26].video_play_complete.tracking_id, 'track_id')
446446

447+
# MessageEvent, SourceUser, ImageMessage with ImageSet
448+
self.assertIsInstance(events[1], MessageEvent)
449+
self.assertEqual(events[27].reply_token, 'fbf94e269485410da6b7e3a5e33283e8')
450+
self.assertEqual(events[27].type, 'message')
451+
self.assertEqual(events[27].mode, 'active')
452+
self.assertEqual(events[27].timestamp, 1627356924722)
453+
self.assertIsInstance(events[27].source, SourceUser)
454+
self.assertEqual(events[27].source.type, 'user')
455+
self.assertEqual(events[27].source.user_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
456+
self.assertIsInstance(events[27].message, ImageMessage)
457+
self.assertEqual(events[27].message.id, '354718705033693861')
458+
self.assertEqual(events[27].message.type, 'image')
459+
self.assertEqual(events[27].message.content_provider.type, 'line')
460+
self.assertEqual(events[27].message.image_set.id, 'E005D41A7288F41B655')
461+
self.assertEqual(events[27].message.image_set.index, 2)
462+
self.assertEqual(events[27].message.image_set.total, 2)
463+
447464
def test_parse_webhook_req_without_destination(self):
448465
body = """
449466
{

tests/text/webhook.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,28 @@
427427
"videoPlayComplete": {
428428
"trackingId": "track_id"
429429
}
430+
},
431+
{
432+
"type": "message",
433+
"message": {
434+
"type": "image",
435+
"id": "354718705033693861",
436+
"contentProvider": {
437+
"type": "line"
438+
},
439+
"imageSet": {
440+
"id": "E005D41A7288F41B655",
441+
"index": 2,
442+
"total": 2
443+
}
444+
},
445+
"timestamp": 1627356924722,
446+
"source": {
447+
"type": "user",
448+
"userId": "U206d25c2ea6bd87c17655609a1c37cb8"
449+
},
450+
"replyToken": "fbf94e269485410da6b7e3a5e33283e8",
451+
"mode": "active"
430452
}
431453
]
432454
}

0 commit comments

Comments
 (0)