Skip to content

Commit c9fc7f8

Browse files
Merge pull request #4 from ConvertAPI/feature/format_detection
Use format from upload result
2 parents 50bdf5c + 48c90e0 commit c9fc7f8

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

convertapi/format_detector.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
from io import FileIO
33
from requests import utils
44
from .result import Result
5+
from .upload_io import UploadIO
56

67
def detect(resource):
7-
if 'filename' in dir(resource):
8+
if isinstance(resource, UploadIO):
9+
return resource.file_ext
10+
elif 'filename' in dir(resource):
811
path = resource.filename
912
elif isinstance(resource, FileIO):
1013
path = resource.name

convertapi/upload_io.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,28 @@ class UploadIO:
55
def __init__(self, io, filename = None):
66
self.io = io
77
self._filename = filename
8-
self._file_id = None
8+
self._result = None
99

1010
@property
1111
def file_id(self):
12-
if self._file_id is None:
13-
self._file_id = self.__upload()
12+
return self.__result['FileId']
1413

15-
return self._file_id
14+
@property
15+
def file_ext(self):
16+
return self.__result['FileExt']
1617

1718
@property
18-
def filename(self):
19+
def __result(self):
20+
if self._result is None:
21+
self._result = convertapi.client.upload(self.io, self.__build_filename())
22+
23+
return self._result
24+
25+
def __build_filename(self):
1926
if self._filename:
2027
return self._filename
2128

2229
if 'name' in dir(self.io):
2330
return os.path.basename(self.io.name)
2431

2532
raise 'Filename must be provided for non File resources'
26-
27-
def __upload(self):
28-
result = convertapi.client.upload(self.io, self.filename)
29-
return result['FileId']

tests/test_convertapi.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ def test_convert_file(self):
2323
assert result.save_files(tempfile.gettempdir())
2424
assert result.conversion_cost > 0
2525

26+
def test_convert_file_url(self):
27+
result = convertapi.convert('pdf', { 'File': 'https://cdn.convertapi.com/cara/testfiles/document.docx?test=1' })
28+
assert result.conversion_cost > 0
29+
2630
def test_convert_url(self):
2731
result = convertapi.convert('pdf', { 'Url': 'http://convertapi.com' })
2832
assert result.conversion_cost > 0

0 commit comments

Comments
 (0)