diff options
author | Filipp Lepalaan <filipp@mac.com> | 2018-04-02 14:48:18 +0300 |
---|---|---|
committer | Filipp Lepalaan <filipp@mac.com> | 2018-04-02 14:48:18 +0300 |
commit | 001bdd8068d70504f08546e137d8200cbe276c08 (patch) | |
tree | 8d6678385a83d93b64303a84dd8cf514efee58f1 /gsxws/utils.py | |
parent | fd0eba9bacbe586004aeb131427178bc550cca06 (diff) | |
download | py-gsxws-001bdd8068d70504f08546e137d8200cbe276c08.tar.gz py-gsxws-001bdd8068d70504f08546e137d8200cbe276c08.tar.bz2 py-gsxws-001bdd8068d70504f08546e137d8200cbe276c08.zip |
Use fetch_url for image data
Diffstat (limited to 'gsxws/utils.py')
-rw-r--r-- | gsxws/utils.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gsxws/utils.py b/gsxws/utils.py new file mode 100644 index 0000000..9d71e83 --- /dev/null +++ b/gsxws/utils.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +import re +import tempfile +import requests + + +def fetch_url(url): + """Downloads acceptable URL to temporary file + """ + ext = None + ALLOWED = ['jpg', 'jpeg', 'png', 'pdf', 'gif',] + + try: + ext = re.search(r'\.([a-zA-Z]{3,})$', url).group(1) + except AttributeError: + raise ValueError('Cannot determine file extension of URL %s' % url) + + ext = ext.lower() + + if ext not in ALLOWED: + raise ValueError('File extension should be one of %s, not %s' % (', '.join(ALLOWED), ext)) + + try: + resp = requests.get(url) + except Exception as e: + raise Exception('Failed to fetch URL: %s' % e) + + with tempfile.NamedTemporaryFile(delete=False, suffix='.' + ext) as fp: + fp.write(resp.content) + return fp.name |