Exemplo n.º 1
0
import os
import sys
import time

import xbmc
import xbmcvfs
import xbmcaddon
import xbmcgui
import xbmcplugin
from addon import HANDLE, addict, utils
from addon.utils import _enc
from mapper import Mapper

MPR = Mapper.get()
ADDON = xbmcaddon.Addon()

ADDON_DIR = xbmcvfs.translatePath(ADDON.getAddonInfo('path'))
PROFILE_DIR = xbmcvfs.translatePath(os.path.join(
    ADDON.getAddonInfo('profile')))

TEST_LOGIN_NETWORK = 'difm'


@MPR.s_url('/')
@MPR.s_url('/networks/')
def list_networks():
    items = []

    for key, data in addict.NETWORKS.items():
        item = xbmcgui.ListItem(data['name'])
        item.setArt({
Exemplo n.º 2
0
class ElasticInput(Input):
    __slots__ = []
    subtypes = ('elasticsearch', 'elastic')

    def __init__(self, name, **kwargs):
        super().__init__(name=name, **kwargs)
        if type(self.data) is dict:
            self.data = Mapper(self.data)
        if type(self.location) is not str:
            self.location = Mapper(self.location)(kwargs)
        try:
            es = Elasticsearch(
                **self.location,
                request_timeout=0.2,
                retries=False,
                ignore=404)  # TODO url=self.location, ssl_context, http_auth
            es.info()
            self.location = es
        except ImproperlyConfigured as e:
            raise NotFound("ElasticSearch rejected {}\n-----\n\t{}".format(
                pformat(self.location), e))
        except TransportError as e:
            raise NotFound(
                "Failed to reach ElasticSearch at {}\n-----\n\t{}".format(
                    pformat(self.location), e.error))
        except:
            raise NotFound(
                "Unable to connect to ElasticSearch at host:{}".format(
                    self.location.get('host')))

    def query(self, dic):
        assert (type(dic) is dict)
        # TODO this isn't a real elasticsearch query, it could be: returning the first(best) or only(non-ambiguous) result.
        try:
            rv = self.location.get(
                index=self.name,
                doc_type=self.name,
                id=dic.get(self.name),
                request_timeout=Config.get("ELASTIC_TIMEOUT", 1.0),
                ignore=404,
            )
        except ConnectionTimeout:
            logger.warning('Connection timeout querying: {} for {}'.format(
                self.name, dic))
            return default
        return rv.get('_source') or default

    def get(self, index, default={}):
        try:
            rv = self.location.get(index=self.name,
                                   doc_type=self.name,
                                   id=index,
                                   request_timeout=Config.get(
                                       "ELASTIC_TIMEOUT", 1.0),
                                   ignore=404)
        except ConnectionTimeout:
            logger.error('Connection timeout querying: {} [{}]'.format(
                self.name, index))
            return default
        else:
            logger.info(pformat(rv))
        return rv.get('_source') or default

    def __getitem__(self, key):
        return self.get(key)