Skip to content

Commit c5d9097

Browse files
be-haseokdtsk
authored andcommitted
Support 'user_id' in SourceGroup and SourceRoom (#48)
* Support 'user_id' in SourceGroup and SourceRoom * Add new line. * Add docstring comments * workaround (pypa/setuptools#1042)
1 parent 8c4c4b3 commit c5d9097

File tree

9 files changed

+249
-150
lines changed

9 files changed

+249
-150
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,4 @@ ENV/
101101
.idea
102102
.DS_Store
103103
tmp/
104-
104+
*.iml

README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,9 +534,11 @@ Source
534534
- SourceGroup
535535
- type
536536
- group\_id
537+
- user\_id
537538
- SourceRoom
538539
- type
539540
- room\_id
541+
- user\_id
540542

541543
Message
542544
^^^^^^^

linebot/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from __future__ import unicode_literals
1818

19-
__version__ = '1.2.0'
19+
__version__ = '1.3.0'
2020
__author__ = 'LINE Corporation'
2121
__copyright__ = 'Copyright 2016, LINE Corporation'
2222
__license__ = 'Apache 2.0'

linebot/models/sources.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from __future__ import unicode_literals
1818

19+
import warnings
1920
from abc import ABCMeta, abstractproperty
2021

2122
from future.utils import with_metaclass
@@ -42,9 +43,12 @@ def sender_id(self):
4243
If SourceGroup, return group_id.
4344
If SourceRoom, return room_id.
4445
46+
'sender_id' is deprecated.
47+
4548
:rtype: str
4649
:return:
4750
"""
51+
warnings.warn("'sender_id' is deprecated.", DeprecationWarning, stacklevel=2)
4852
raise NotImplementedError
4953

5054

@@ -71,9 +75,12 @@ def __init__(self, user_id=None, **kwargs):
7175
def sender_id(self):
7276
"""Alias of user_id.
7377
78+
'sender_id' is deprecated. Use 'user_id' instead.
79+
7480
:rtype: str
7581
:return:
7682
"""
83+
warnings.warn("'sender_id' is deprecated.", DeprecationWarning, stacklevel=2)
7784
return self.user_id
7885

7986

@@ -85,24 +92,29 @@ class SourceGroup(Source):
8592
JSON object which contains the source group of the event.
8693
"""
8794

88-
def __init__(self, group_id=None, **kwargs):
95+
def __init__(self, group_id=None, user_id=None, **kwargs):
8996
"""__init__ method.
9097
9198
:param str group_id: ID of the source group
99+
:param str user_id: ID of the source user
92100
:param kwargs:
93101
"""
94102
super(SourceGroup, self).__init__(**kwargs)
95103

96104
self.type = 'group'
97105
self.group_id = group_id
106+
self.user_id = user_id
98107

99108
@property
100109
def sender_id(self):
101110
"""Alias of group_id.
102111
112+
'sender_id' is deprecated. Use 'group_id' instead.
113+
103114
:rtype: str
104115
:return:
105116
"""
117+
warnings.warn("'sender_id' is deprecated.", DeprecationWarning, stacklevel=2)
106118
return self.group_id
107119

108120

@@ -114,22 +126,27 @@ class SourceRoom(Source):
114126
JSON object which contains the source room of the event.
115127
"""
116128

117-
def __init__(self, room_id=None, **kwargs):
129+
def __init__(self, room_id=None, user_id=None, **kwargs):
118130
"""__init__ method.
119131
120132
:param str room_id: ID of the source room
133+
:param str user_id: ID of the source user
121134
:param kwargs:
122135
"""
123136
super(SourceRoom, self).__init__(**kwargs)
124137

125138
self.type = 'room'
126139
self.room_id = room_id
140+
self.user_id = user_id
127141

128142
@property
129143
def sender_id(self):
130144
"""Alias of room_id.
131145
146+
'sender_id' is deprecated. Use 'room_id' instead.
147+
132148
:rtype: str
133149
:return:
134150
"""
151+
warnings.warn("'sender_id' is deprecated.", DeprecationWarning, stacklevel=2)
135152
return self.room_id

requirements-test.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
pytest
22
pytest-pep8
33
pytest-cov
4-
responses
4+
responses

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
requests >= 2.0
2-
future
2+
future

tests/test_webhook.py

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ def test_parse(self):
8080
self.assertEqual(events[1].timestamp, 1462629479859)
8181
self.assertIsInstance(events[1].source, SourceRoom)
8282
self.assertEqual(events[1].source.type, 'room')
83-
self.assertEqual(events[1].source.room_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
84-
self.assertEqual(events[1].source.sender_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
83+
self.assertEqual(events[1].source.room_id, 'Ra8dbf4673c4c812cd491258042226c99')
84+
self.assertEqual(events[1].source.user_id, None)
85+
self.assertEqual(events[1].source.sender_id, 'Ra8dbf4673c4c812cd491258042226c99')
8586
self.assertIsInstance(events[1].message, ImageMessage)
8687
self.assertEqual(events[1].message.id, '325708')
8788
self.assertEqual(events[1].message.type, 'image')
@@ -170,17 +171,19 @@ def test_parse(self):
170171
self.assertEqual(events[8].timestamp, 1462629479859)
171172
self.assertIsInstance(events[8].source, SourceGroup)
172173
self.assertEqual(events[8].source.type, 'group')
173-
self.assertEqual(events[8].source.group_id, 'cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
174-
self.assertEqual(events[8].source.sender_id, 'cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
174+
self.assertEqual(events[8].source.group_id, 'Ca56f94637cc4347f90a25382909b24b9')
175+
self.assertEqual(events[8].source.user_id, None)
176+
self.assertEqual(events[8].source.sender_id, 'Ca56f94637cc4347f90a25382909b24b9')
175177

176178
# LeaveEvent, SourceGroup
177179
self.assertIsInstance(events[9], LeaveEvent)
178180
self.assertEqual(events[9].type, 'leave')
179181
self.assertEqual(events[9].timestamp, 1462629479859)
180182
self.assertIsInstance(events[9].source, SourceGroup)
181183
self.assertEqual(events[9].source.type, 'group')
182-
self.assertEqual(events[9].source.group_id, 'cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
183-
self.assertEqual(events[9].source.sender_id, 'cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
184+
self.assertEqual(events[9].source.group_id, 'Ca56f94637cc4347f90a25382909b24b9')
185+
self.assertEqual(events[9].source.user_id, None)
186+
self.assertEqual(events[9].source.sender_id, 'Ca56f94637cc4347f90a25382909b24b9')
184187

185188
# PostbackEvent, SourceUser
186189
self.assertIsInstance(events[10], PostbackEvent)
@@ -221,6 +224,36 @@ def test_parse(self):
221224
self.assertEqual(events[12].beacon.dm, '1234567890abcdef')
222225
self.assertEqual(events[12].beacon.device_message, bytearray(b'\x124Vx\x90\xab\xcd\xef'))
223226

227+
# MessageEvent, SourceGroup with userId, TextMessage
228+
self.assertIsInstance(events[13], MessageEvent)
229+
self.assertEqual(events[13].reply_token, 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA')
230+
self.assertEqual(events[13].type, 'message')
231+
self.assertEqual(events[13].timestamp, 1462629479859)
232+
self.assertIsInstance(events[13].source, SourceGroup)
233+
self.assertEqual(events[13].source.type, 'group')
234+
self.assertEqual(events[13].source.group_id, 'Ca56f94637cc4347f90a25382909b24b9')
235+
self.assertEqual(events[13].source.user_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
236+
self.assertEqual(events[13].source.sender_id, 'Ca56f94637cc4347f90a25382909b24b9')
237+
self.assertIsInstance(events[13].message, TextMessage)
238+
self.assertEqual(events[13].message.id, '325708')
239+
self.assertEqual(events[13].message.type, 'text')
240+
self.assertEqual(events[13].message.text, 'Hello, world')
241+
242+
# MessageEvent, SourceRoom with userId, TextMessage
243+
self.assertIsInstance(events[14], MessageEvent)
244+
self.assertEqual(events[14].reply_token, 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA')
245+
self.assertEqual(events[14].type, 'message')
246+
self.assertEqual(events[14].timestamp, 1462629479859)
247+
self.assertIsInstance(events[14].source, SourceRoom)
248+
self.assertEqual(events[14].source.type, 'room')
249+
self.assertEqual(events[14].source.room_id, 'Ra8dbf4673c4c812cd491258042226c99')
250+
self.assertEqual(events[14].source.user_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
251+
self.assertEqual(events[14].source.sender_id, 'Ra8dbf4673c4c812cd491258042226c99')
252+
self.assertIsInstance(events[14].message, TextMessage)
253+
self.assertEqual(events[14].message.id, '325708')
254+
self.assertEqual(events[14].message.type, 'text')
255+
self.assertEqual(events[14].message.text, 'Hello, world')
256+
224257

225258
class TestWebhookHandler(unittest.TestCase):
226259
def setUp(self):

0 commit comments

Comments
 (0)