# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4


import json
from urllib.parse import urlencode

from ox.cache import read_url

import settings

import logging
logger = logging.getLogger(__name__)

def request(action, data):
        data = urlencode({
            'action': action,
            'data': json.dumps(data)
        })
        url = 'http://meta.openmedialibrary.com/api/'
        try:
            return json.loads(read_url(url, data, timeout=60).decode('utf-8'))['data']
        except:
            logger.debug('metadata request failed', exc_info=True)
            return {}

def find(query):
    logger.debug('find %s', query)
    return request('findMetadata', {'query': query}).get('items', [])

def lookup(key, value):
    logger.debug('lookup %s %s', key, value)
    data = request('getMetadata', {key: value})
    for key in [k['id'] for k in settings.config['itemKeys'] if isinstance(k['type'], list)]:
        if key in data and not isinstance(data[key], list):
            data[key] = [data[key]]
    return data