44"""A library that provides a Python interface to the Telegram Bot API"""
55
66import json
7- import requests
7+ import urllib
8+ import urllib2
89
910from telegram import (User , Message , Update , UserProfilePhotos , TelegramError ,
10- ReplyMarkup )
11+ ReplyMarkup , InputFile )
1112
1213
1314class Bot (object ):
@@ -66,7 +67,7 @@ def getMe(self):
6667 url = '%s/getMe' % (self .base_url )
6768
6869 json_data = self ._requestUrl (url , 'GET' )
69- data = self ._parseAndCheckTelegram (json_data . content )
70+ data = self ._parseAndCheckTelegram (json_data )
7071
7172 return User .de_json (data )
7273
@@ -115,7 +116,7 @@ def sendMessage(self,
115116 data ['reply_markup' ] = reply_markup
116117
117118 json_data = self ._requestUrl (url , 'POST' , data = data )
118- data = self ._parseAndCheckTelegram (json_data . content )
119+ data = self ._parseAndCheckTelegram (json_data )
119120
120121 return Message .de_json (data )
121122
@@ -152,7 +153,7 @@ def forwardMessage(self,
152153 data ['message_id' ] = message_id
153154
154155 json_data = self ._requestUrl (url , 'POST' , data = data )
155- data = self ._parseAndCheckTelegram (json_data . content )
156+ data = self ._parseAndCheckTelegram (json_data )
156157
157158 return Message .de_json (data )
158159
@@ -204,7 +205,7 @@ def sendPhoto(self,
204205 data ['reply_markup' ] = reply_markup
205206
206207 json_data = self ._requestUrl (url , 'POST' , data = data )
207- data = self ._parseAndCheckTelegram (json_data . content )
208+ data = self ._parseAndCheckTelegram (json_data )
208209
209210 return Message .de_json (data )
210211
@@ -253,7 +254,7 @@ def sendAudio(self,
253254 data ['reply_markup' ] = reply_markup
254255
255256 json_data = self ._requestUrl (url , 'POST' , data = data )
256- data = self ._parseAndCheckTelegram (json_data . content )
257+ data = self ._parseAndCheckTelegram (json_data )
257258
258259 return Message .de_json (data )
259260
@@ -299,7 +300,7 @@ def sendDocument(self,
299300 data ['reply_markup' ] = reply_markup
300301
301302 json_data = self ._requestUrl (url , 'POST' , data = data )
302- data = self ._parseAndCheckTelegram (json_data . content )
303+ data = self ._parseAndCheckTelegram (json_data )
303304
304305 return Message .de_json (data )
305306
@@ -345,7 +346,7 @@ def sendSticker(self,
345346 data ['reply_markup' ] = reply_markup
346347
347348 json_data = self ._requestUrl (url , 'POST' , data = data )
348- data = self ._parseAndCheckTelegram (json_data . content )
349+ data = self ._parseAndCheckTelegram (json_data )
349350
350351 return Message .de_json (data )
351352
@@ -392,7 +393,7 @@ def sendVideo(self,
392393 data ['reply_markup' ] = reply_markup
393394
394395 json_data = self ._requestUrl (url , 'POST' , data = data )
395- data = self ._parseAndCheckTelegram (json_data . content )
396+ data = self ._parseAndCheckTelegram (json_data )
396397
397398 return Message .de_json (data )
398399
@@ -440,7 +441,7 @@ def sendLocation(self,
440441 data ['reply_markup' ] = reply_markup
441442
442443 json_data = self ._requestUrl (url , 'POST' , data = data )
443- data = self ._parseAndCheckTelegram (json_data . content )
444+ data = self ._parseAndCheckTelegram (json_data )
444445
445446 return Message .de_json (data )
446447
@@ -509,7 +510,7 @@ def getUserProfilePhotos(self,
509510 data ['limit' ] = limit
510511
511512 json_data = self ._requestUrl (url , 'POST' , data = data )
512- data = self ._parseAndCheckTelegram (json_data . content )
513+ data = self ._parseAndCheckTelegram (json_data )
513514
514515 return UserProfilePhotos .de_json (data )
515516
@@ -551,9 +552,9 @@ def getUpdates(self,
551552 data ['timeout' ] = timeout
552553
553554 json_data = self ._requestUrl (url , 'POST' , data = data )
554- data = self ._parseAndCheckTelegram (json_data . content )
555+ data = self ._parseAndCheckTelegram (json_data )
555556
556- return [Update .de_json (x ) for x in data ]
557+ return [Update .de_json (x ) for x in data ] # TODO: error handling
557558
558559 def setWebhook (self , webhook_url = "" ):
559560 """Use this method to specify a url and receive incoming updates via an
@@ -578,7 +579,7 @@ def setWebhook(self, webhook_url=""):
578579 data = {'url' : webhook_url }
579580
580581 json_data = self ._requestUrl (url , 'POST' , data = data )
581- data = self ._parseAndCheckTelegram (json_data . content )
582+ data = self ._parseAndCheckTelegram (json_data )
582583
583584 return True
584585
@@ -601,51 +602,35 @@ def _requestUrl(self,
601602 """
602603
603604 if method == 'POST' :
604- if 'photo' in data and isinstance (data ['photo' ], file ):
605+ if 'audio' in data and isinstance (data ['audio' ], file ) or \
606+ 'document' in data and isinstance (data ['document' ], file ) or \
607+ 'photo' in data and isinstance (data ['photo' ], file ) or \
608+ 'video' in data and isinstance (data ['video' ], file ):
605609 try :
606- photo = data .pop ('photo' )
607-
608- return requests .post (
609- url ,
610- data = data ,
611- files = {'photo' : photo }
612- )
613- except requests .RequestException as e :
614- raise TelegramError (str (e ))
615- if 'audio' in data and isinstance (data ['audio' ], file ):
616- try :
617- audio = data .pop ('audio' )
618-
619- return requests .post (
620- url ,
621- data = data ,
622- files = {'audio' : audio }
623- )
624- except requests .RequestException as e :
625- raise TelegramError (str (e ))
626- if 'document' in data and isinstance (data ['document' ], file ):
627- try :
628- document = data .pop ('document' )
629-
630- return requests .post (
610+ data = InputFile (data )
611+ request = urllib2 .Request (
631612 url ,
632- data = data ,
633- files = { 'document' : document }
613+ data = data . to_form () ,
614+ headers = data . headers
634615 )
635- except requests .RequestException as e :
616+ return urllib2 .urlopen (request ).read ()
617+ except urllib2 .URLError as e :
636618 raise TelegramError (str (e ))
637619 else :
638620 try :
639- return requests . post (
621+ return urllib2 . urlopen (
640622 url ,
641- data = data
642- )
643- except requests .RequestException as e :
623+ urllib .urlencode (data )
624+ ).read ()
625+ except urllib .IOError as e :
626+ raise TelegramError (str (e ))
627+ except urllib2 .URLError as e :
644628 raise TelegramError (str (e ))
629+
645630 if method == 'GET' :
646631 try :
647- return requests . get (url )
648- except requests . RequestException as e :
632+ return urllib2 . urlopen (url ). read ( )
633+ except urllib2 . URLError as e :
649634 raise TelegramError (str (e ))
650635 return 0
651636
0 commit comments