X Tutup
Skip to content

Commit d10b657

Browse files
committed
enable sending by URL for all sendX methods
1 parent 6dab706 commit d10b657

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

telegram/inputfile.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
except ImportError:
2828
from mimetools import choose_boundary
2929
from urllib2 import urlopen
30+
3031
import mimetypes
3132
import os
3233
import sys
@@ -69,19 +70,29 @@ def __init__(self,
6970
self.input_name = 'certificate'
7071
self.input_file = data.pop('certificate')
7172

72-
if isinstance(self.input_file, file):
73+
if str(self.input_file).startswith('http'):
74+
from_url = True
75+
self.input_file = urlopen(self.input_file)
76+
else:
77+
from_url = False
78+
79+
if isinstance(self.input_file, file) or from_url:
7380
self.input_file_content = self.input_file.read()
7481
if 'filename' in data:
7582
self.filename = self.data.pop('filename')
76-
else:
83+
elif isinstance(self.input_file, file):
7784
self.filename = os.path.basename(self.input_file.name)
78-
self.mimetype = mimetypes.guess_type(self.filename)[0] or \
79-
DEFAULT_MIME_TYPE
85+
elif from_url:
86+
self.filename = self.input_file.url.split('/')[-1].split('?')[0].split('&')[0]
87+
88+
try:
89+
self.mimetype = InputFile.is_image(self.input_file_content)
90+
if 'filename' not in dir(self):
91+
self.filename = self.mimetype.replace('/', '.')
92+
except TelegramError:
93+
self.mimetype = mimetypes.guess_type(self.filename)[0] or \
94+
DEFAULT_MIME_TYPE
8095

81-
if 'http' in self.input_file:
82-
self.input_file_content = urlopen(self.input_file).read()
83-
self.mimetype = InputFile.is_image(self.input_file_content)
84-
self.filename = self.mimetype.replace('/', '.')
8596

8697
@property
8798
def headers(self):
@@ -185,10 +196,7 @@ def is_inputfile(data):
185196
if file_type:
186197
file_content = data[file_type[0]]
187198

188-
if file_type[0] == 'photo' or file_type[0] == 'document':
189-
return isinstance(file_content, file) or \
190-
str(file_content).startswith('http')
191-
192-
return isinstance(file_content, file)
199+
return isinstance(file_content, file) or \
200+
str(file_content).startswith('http')
193201

194202
return False

tests/test_document.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def test_send_document_url_gif_file(self):
9696
self.assertTrue(isinstance(document.file_id, str))
9797
self.assertNotEqual(document.file_id, '')
9898
self.assertTrue(isinstance(document.thumb, telegram.PhotoSize))
99-
self.assertEqual(document.file_name, 'image.gif')
99+
self.assertEqual(document.file_name, 'fff.gif')
100100
self.assertEqual(document.mime_type, 'image/gif')
101101
self.assertEqual(document.file_size, 3878)
102102

0 commit comments

Comments
 (0)
X Tutup