diff options
Diffstat (limited to 'check/app/server')
| -rw-r--r-- | check/app/server/api.py | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/check/app/server/api.py b/check/app/server/api.py index 324a63a..184e28d 100644 --- a/check/app/server/api.py +++ b/check/app/server/api.py @@ -30,6 +30,20 @@ def index(): """ return jsonify({ 'status': 'ok' }) +def fetch_url(url): + if not url: + return None, 'no_image' + basename, ext = os.path.splitext(url) + if ext.lower() not in valid_exts: + return None, 'not_an_image' + ext = ext[1:].lower() + + remote_request = urllib.request.Request(url) + remote_response = urllib.request.urlopen(remote_request) + raw = remote_response.read() + im = Image.open(io.BytesIO(raw)).convert('RGB') + return raw, im + def get_params(default_threshold=MATCH_THRESHOLD, default_limit=MATCH_LIMIT): try: threshold = int(request.form.get('threshold') or default_threshold) @@ -58,17 +72,9 @@ def get_params(default_threshold=MATCH_THRESHOLD, default_limit=MATCH_LIMIT): # Fetch remote URL else: url = request.form.get('url') - if not url: - return None, 'no_image' - basename, ext = os.path.splitext(url) - if ext.lower() not in valid_exts: - return None, 'not_an_image' - ext = ext[1:].lower() - - remote_request = urllib.request.Request(url) - remote_response = urllib.request.urlopen(remote_request) - raw = remote_response.read() - im = Image.open(io.BytesIO(raw)).convert('RGB') + raw, im = fetch_url(url) + if raw is None: + return raw, im # error return (threshold, limit, url, ext, raw, im,), None @api.route('/v1/match', methods=['POST']) |
