forked from blopker/Color-Switch
/
__init__.py
43 lines (34 loc) · 944 Bytes
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'''
Public API for the HTTP layer.
By @blopker
'''
from .cache import cache
from . import downloaders
from .. import logger
log = logger.get(__name__)
import sys
import traceback
downloader = downloaders.get()
@cache
def get(url):
return _run_downloader(downloader.get, url)
@cache
def get_json(url):
return _run_downloader(downloader.get_json, url)
@cache
def get_file(url):
return _run_downloader(downloader.get_file, url)
def _run_downloader(fn, url):
try:
log.debug('HTTP url %s with function %s', url, fn.__name__)
return fn(url)
except NotImplementedError:
log.error('Function %s not implemented in downloader %s.',
fn.__name__, downloader.__class__.__name__)
except AttributeError as e:
log.error(e)
traceback.print_exc()
except:
log.error('Unexpected exception: %s', sys.exc_info()[0])
traceback.print_exc()
return False