From c4cfcaececa6d9682c26696d3cbfa8c48663fa62 Mon Sep 17 00:00:00 2001 From: Leandro Toledo Date: Tue, 7 Jul 2015 20:52:57 -0300 Subject: [PATCH] Adding PhotoSize and Audio models --- telegram/__init__.py | 4 ++-- telegram/audio.py | 21 +++++++++++++++++++++ telegram/message.py | 16 ++++++++++++++-- telegram/photosize.py | 21 +++++++++++++++++++++ tests/test_bot.py | 8 ++++---- 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/telegram/__init__.py b/telegram/__init__.py index f3af46202..128164d1b 100644 --- a/telegram/__init__.py +++ b/telegram/__init__.py @@ -11,8 +11,8 @@ from user import User from message import Message from update import Update from groupchat import GroupChat -# from photosize import PhotoSize -# from audio import Audio +from photosize import PhotoSize +from audio import Audio # from document import Document # from sticket import Sticker # from video import Video diff --git a/telegram/audio.py b/telegram/audio.py index e69de29bb..f803104d1 100644 --- a/telegram/audio.py +++ b/telegram/audio.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + + +class Audio(object): + def __init__(self, **kwargs): + param_defaults = { + 'file_id': None, + 'duration': None, + 'mime_type': None, + 'file_size': None + } + + for (param, default) in param_defaults.iteritems(): + setattr(self, param, kwargs.get(param, default)) + + @staticmethod + def newFromJsonDict(data): + return Audio(file_id=data.get('file_id', None), + duration=data.get('duration', None), + mime_type=data.get('mime_type', None), + file_size=data.get('file_size', None)) diff --git a/telegram/message.py b/telegram/message.py index 58dfae250..0f007c4d1 100644 --- a/telegram/message.py +++ b/telegram/message.py @@ -61,6 +61,18 @@ class Message(object): else: reply_to_message = None + if 'audio' in data: + from telegram import Audio + audio = Audio.newFromJsonDict(data['audio']) + else: + audio = None + + if 'photo' in data: + from telegram import PhotoSize + photo = [PhotoSize.newFromJsonDict(x) for x in data['photo']] + else: + photo = None + if 'new_chat_participant' in data: from telegram import User new_chat_participant = User.newFromJsonDict( @@ -85,9 +97,9 @@ class Message(object): forward_date=data.get('forward_date', None), reply_to_message=reply_to_message, text=data.get('text', None), - audio=data.get('audio', None), + audio=audio, document=data.get('document', None), - photo=data.get('photo', None), + photo=photo, sticker=data.get('sticker', None), video=data.get('video', None), contact=data.get('contact', None), diff --git a/telegram/photosize.py b/telegram/photosize.py index e69de29bb..d09321db1 100644 --- a/telegram/photosize.py +++ b/telegram/photosize.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + + +class PhotoSize(object): + def __init__(self, **kwargs): + param_defaults = { + 'file_id': None, + 'width': None, + 'height': None, + 'file_size': None + } + + for (param, default) in param_defaults.iteritems(): + setattr(self, param, kwargs.get(param, default)) + + @staticmethod + def newFromJsonDict(data): + return PhotoSize(file_id=data.get('file_id', None), + width=data.get('width', None), + height=data.get('height', None), + file_size=data.get('file_size', None)) diff --git a/tests/test_bot.py b/tests/test_bot.py index 1d8501be1..c29b3834b 100644 --- a/tests/test_bot.py +++ b/tests/test_bot.py @@ -49,25 +49,25 @@ class BotTest(unittest.TestCase): print 'Testing sendPhoto - File' message = self._bot.sendPhoto(photo=open('tests/telegram.png', 'rb'), chat_id=12173560) - self.assertEqual(12948, message.photo[2].get('file_size')) + self.assertEqual(12948, message.photo[2].file_size) def testResendPhoto(self): '''Test the telegram.Bot sendPhoto method''' print 'Testing sendPhoto - Resend' message = self._bot.sendPhoto(photo=str('AgAD_v___6-nMRs1PC0HuqtHTCQ9qx0AFAI'), chat_id=12173560) - self.assertEqual(u'AgAD_v___6-nMRs1PC0HuqtHTCQ9qx0AFAI', message.photo[2].get('file_id')) + self.assertEqual(u'AgAD_v___6-nMRs1PC0HuqtHTCQ9qx0AFAI', message.photo[2].file_id) def testSendAudio(self): '''Test the telegram.Bot sendAudio method''' print 'Testing sendAudio - File' message = self._bot.sendAudio(audio=open('tests/telegram.ogg', 'rb'), chat_id=12173560) - self.assertEqual(9199, message.audio.get('file_size')) + self.assertEqual(9199, message.audio.file_size) def testResendAudio(self): '''Test the telegram.Bot sendAudio method''' print 'Testing sendAudio - Resent' message = self._bot.sendAudio(audio=str('AwADAQADIQEAAvjAuQABSAXg_GhkhZcC'), chat_id=12173560) - self.assertEqual(u'AwADAQADIQEAAvjAuQABSAXg_GhkhZcC', message.audio.get('file_id')) + self.assertEqual(u'AwADAQADIQEAAvjAuQABSAXg_GhkhZcC', message.audio.file_id)