Skip to content

Commit 809f8ab

Browse files
be-haseokdtsk
authored andcommitted
Fix serialization error of Beacon model. (#41)
* fix beacon model
1 parent 969690b commit 809f8ab

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

examples/flask-kitchensink/app.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,9 @@ def handle_postback(event):
250250
def handle_beacon(event):
251251
line_bot_api.reply_message(
252252
event.reply_token,
253-
TextSendMessage(text='Got beacon event. hwid={}, device_message={}'
254-
.format(event.beacon.hwid, event.beacon.device_message)))
253+
TextSendMessage(
254+
text='Got beacon event. hwid={}, device_message(hex string)={}'.format(
255+
event.beacon.hwid, event.beacon.dm)))
255256

256257

257258
if __name__ == "__main__":

linebot/models/events.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,20 @@ def __init__(self, type=None, hwid=None, dm=None, **kwargs):
287287
288288
:param str type: Type of beacon event
289289
:param str hwid: Hardware ID of the beacon that was detected
290-
:param str dm: Optional. Device message of beacon that was detected in bytearray
290+
:param str dm: Optional. Device message of beacon which is hex string
291291
:param kwargs:
292292
"""
293293
super(Beacon, self).__init__(**kwargs)
294294

295295
self.type = type
296296
self.hwid = hwid
297-
self.device_message = bytearray.fromhex(dm) if dm is not None else None
297+
self.dm = dm
298+
299+
@property
300+
def device_message(self):
301+
"""Get dm(device_message) as bytearray.
302+
303+
:rtype: bytearray
304+
:return:
305+
"""
306+
return bytearray.fromhex(self.dm) if self.dm is not None else None

tests/test_webhook.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ def test_parse(self):
204204
self.assertEqual(events[11].source.sender_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
205205
self.assertEqual(events[11].beacon.hwid, 'd41d8cd98f')
206206
self.assertEqual(events[11].beacon.type, 'enter')
207+
self.assertEqual(events[11].beacon.dm, None)
207208
self.assertEqual(events[11].beacon.device_message, None)
208209

209210
# BeaconEvent, SourceUser (with device message)
@@ -217,6 +218,7 @@ def test_parse(self):
217218
self.assertEqual(events[12].source.sender_id, 'U206d25c2ea6bd87c17655609a1c37cb8')
218219
self.assertEqual(events[12].beacon.hwid, 'd41d8cd98f')
219220
self.assertEqual(events[12].beacon.type, 'enter')
221+
self.assertEqual(events[12].beacon.dm, '1234567890abcdef')
220222
self.assertEqual(events[12].beacon.device_message, bytearray(b'\x124Vx\x90\xab\xcd\xef'))
221223

222224

0 commit comments

Comments
 (0)