def get_karp_subtypes(mode):
    """ Ask Karp about all available subtypes """
    logging.debug(' * Searching!')
    url = settings.karp + '/statlist?%s'
    size = settings.get('overflowsize', 1000)
    params = {
        'resource': settings.get('resource', mode),
        'mode': settings.get('mode', mode),
        'size': size,
        'buckets': 'subtype'
    }
    params['q'] = build_query('', '', False, settings.get('sourcelanguage'),
                              mode)
    data = urllib.parse.urlencode(params)
    logging.debug('data %s', params)
    full_url = url % data
    logging.debug(str(full_url))
    req = urllib.request.Request(full_url)
    add_credentials(req, mode)
    response = urllib.request.urlopen(req)
    data = json.loads(response.read().decode())
    res = set()
    for subtype in data['stat_table']:
        if subtype[0]:
            res.add(subtype[0])
    return res
def build_query(word, subtypes, contains, lang, mode):
    """ Construct the query string to Karp """
    wordfield = settings.get('baseform.search', mode)
    if lang != settings.get('sourcelanguage', mode):
        wordfield = settings.get('targetform.search', mode)

    if word and contains:
        word = word.lower()
        word_q = 'extended||and|{}|regexp|.*{}.*'.format(wordfield, word)
    elif word:
        word = word.lower()
        op = 'startswith'
        if contains:
            word = '.*{}.*'.format(word)
            op = 'regexp'
        word_q = 'extended||and|{}|{}|{}'.format(wordfield, op, word)
    else:
        word_q = 'extended||and|{}|regexp|.*'.format(wordfield)

    # TODO check status?  f'||and|termstatus.bucket|exists' #equals|{settings.ok_status}'
    if subtypes:
        subtype = '|'.join(subtypes)
        query = '{}||and|subtype.search|equals|{}'.format(word_q, subtype)
    else:
        query = word_q
    return query
def add_credentials(request, mode):
    """ Prepare a request by adding login credentials """
    credentials = (
        '%s:%s' %
        (settings.get('username', mode), settings.get('password', mode)))
    encoded_credentials = base64.b64encode(credentials.encode('ascii'))
    request.add_header('Authorization',
                       'Basic %s' % encoded_credentials.decode("ascii"))
Esempio n. 4
0
def main():
    server = Server()
    application = service.Application(settings.get('PROJECT_NAME'))
    logfile = DailyLogFile(settings.get('LOG_FILE'), settings.get('LOG_DIR'))
    application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
    server.setServiceParent(application)
    from twisted.internet import reactor
    reactor.suggestThreadPoolSize(10)
def limit_query(subtypes, lang, mode):
    url = settings.karp + '/query?%s'
    params = {
        'resource': settings.get('resource', mode),
        'mode': settings.get('mode', mode),
        'size': 0
    }
    params['q'] = build_query('', subtypes, False, lang, mode)
    data = make_call(url, params, mode)
    if int(data['hits']['total']) > settings.get('overflowsize'):
        return settings.get_first_letter(lang, mode)
    return ''
 def authenticate(self, mode):
     """ Authenticate to Karp. """
     try:
         auth_header = self.request.headers.get('Authorization')
         basic = auth_header[6:]
         url = settings.karp + '/checkuser'
         req = urllib.request.Request(url)
         req.add_header('Authorization', 'Basic %s' % basic)
         response = json.loads(
             urllib.request.urlopen(req).read().decode('utf8'))
         ok = response["authenticated"]
     except:
         ok = False
     if not ok:
         logging.debug('Bad username or password?')
         error = errors.AuthenticationError("Bad username or password?")
         self.return_error(error)
         raise error
     else:
         resources = response.get("permitted_resources",
                                  {}).get("lexica", {})
         lexok = settings.get('resource', mode) in resources
         if not lexok:
             logging.debug('Cannot edit resource %s', resources)
             error = errors.AuthenticationError(
                 "You are not allowed to edit the resource")
             self.return_error(error)
    async def test_get_presigned_tx_xdr_from_request_when_dont_have_payload(
            self, mock_get_transaction, mock_get_wallet):
        escrow_address = "GAH6333FKTNQGSFSDLCANJIE52N7IGMS7DUIWR6JIMQZE7XKWEQLJQAY"
        mock_get_transaction.return_value = {}
        host = settings.get('HOST', None)
        mock_get_wallet.return_value = {
            '@id':
            reverse('escrow-address', escrow_address=''),
            'asset': {
                'HOT': '10.0000000',
                'XLM': '9.9999200'
            },
            'generate-wallet':
            reverse(
                'escrow-generate-wallet',
                escrow_address=
                'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD'),
            'data': {
                'destination_address':
                'GABEAFZ7POCHDY4YCQMRAGVVXEEO4XWYKBY4LMHHJRHTC4MZQBWS6NL6',
                'cost_per_transaction': '5'
            }
        }

        resp = await self.client.request(
            "POST",
            reverse('generate-presigned-transactions',
                    escrow_address=escrow_address))
        assert resp.status == 400
Esempio n. 8
0
    def run(self, host=None, port=None, autoreload=None, debug=False):
        """Runs the application on a local development server.

        Args:
            host: the hostname to listen on. Defaults to ``'127.0.0.1'``.
            port: the port of the webserver. Defaults to ``5100`` or the
                  port defined in the ``SERVER_NAME`` config variable if
                  present.
        """
        from wsgiref.simple_server import make_server
        if debug: settings.DEBUG = True
        self.autoreload = autoreload
        if host is None:
            host = '127.0.0.1'
        if port is None:
            server_name = settings.get('SERVER_NAME')
            if server_name and ':' in server_name:
                port = int(server_name.rsplit(':', 1)[1])
            else:
                port = 5100
        logging.info('application (%s) will start at %s:%s' % (self.document_root, host, port))
        server = None
        def runner():
            server = make_server(host, port, self)
            server.serve_forever()
        def stopper():
            if server:
                server.shutdown()
                server.close()
        if autoreload:
            run_with_reloader(runner, stopper=stopper)
        else:
            runner()
Esempio n. 9
0
async def test_get_wallet_success_not_trust_hot(mock_address):

    balances = [{'balance': '9.9999200', 'asset_type': 'native'}]
    mock_address.return_value = StellarWallet(balances)

    result = await get_wallet_detail(
        'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')

    host = host = settings.get('HOST', None)
    url = reverse('wallet-address',
                  wallet_address=
                  'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')
    expect_data = {
        'wallet_address':
        'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD',
        '@id': f'{host}{url}',
        'trust':
        f"{settings['HOST']}{reverse('change-trust-add-token', wallet_address='GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')}",
        'asset': {
            'XLM': '9.9999200'
        },
        'sequence': '1',
        'data': {
            'age': '30',
            'name': 'UnitTest'
        },
    }
    assert result == expect_data
 def get(self, *args):
     mode = self.get_query_argument('mode', settings.get('mode'))
     self.authenticate(mode)
     subtype = args[0]
     existing = set(get_subtypes(mode))
     if subtype not in existing:
         existing.add(subtype)
         update_subtypes(existing, mode)
     subtypes = get_subtypes(mode)
     self.write({'subtype': subtype, 'publish': True, 'subtypes': subtypes})
Esempio n. 11
0
def make_application():
    ssetings = settings.get('SERVER')
    port = ssetings['port']

    seed_servie = MemoryBasedSeedsService()
    handler = SchedulerHandler(seed_servie)
    processor = Scheduler.Processor(handler)

    factory = TTwisted.ThriftServerFactory(processor,
        TBinaryProtocol.TBinaryProtocolFactory())
    tcp_service = internet.TCPServer(port, factory)

    application = service.Application(ssetings['name'])
    logfile = DailyLogFile(settings.get('LOG_FILE'), settings.get('LOG_DIR'))
    application.setComponent(ILogObserver, FileLogObserver(logfile).emit)

    multiService = service.MultiService()
    tcp_service.setServiceParent(multiService)
    multiService.setServiceParent(application)
    return application
 def get(self):
     unpublished = self.get_query_argument('unpublished', False)
     mode = self.get_query_argument('mode', settings.get('mode'))
     subtypes = get_subtypes(mode)
     logging.debug(' * Subtypes %s' % subtypes)
     if unpublished in [True, "true", "True"]:
         all_subtypes = get_karp_subtypes(mode)
         unpub_subtypes = list(all_subtypes.difference(subtypes))
         self.write({'published': subtypes, 'unpublished': unpub_subtypes})
     else:
         self.write({'subtypes': subtypes})
Esempio n. 13
0
def make_application():
    ssetings = settings.get('SERVER')
    port = ssetings['port']

    pkg_size = settings.getint("SEED_PKG_SIZE")
    seed_servie = MemoryBasedSeedsService(pkg_size)
    handler = RequestHandler(seed_servie)
    processor = Scheduler.Processor(handler)

    factory = TTwisted.ThriftServerFactory(processor,
        TBinaryProtocol.TBinaryProtocolFactory())
    tcp_service = internet.TCPServer(port, factory)

    application = service.Application(ssetings['name'])
    logfile = DailyLogFile(settings.get('LOG_FILE'), settings.get('LOG_DIR'))
    application.setComponent(ILogObserver, FileLogObserver(logfile).emit)

    multiService = service.MultiService()
    tcp_service.setServiceParent(multiService)
    multiService.setServiceParent(application)
    return application
Esempio n. 14
0
	def loadallmodules(self):

		enabled_modules = settings.get('modules') or []

		for module in enabled_modules:

			try:
				mod = importlib.import_module(defaults.MODULES_NAME + module + defaults._SETTINGS)
				uri = getattr(mod, 'uri', '')
				operations = getattr(mod, 'operations', [])				
				self.adduri(uri, operations)
			except ImportError:
				raise
 def prepare(self):
     """ Set up file system """
     try:
         for mode in settings.get_modes():
             if mode == 'default':
                 continue
             typefile = settings.get('subtypes', mode)
             directory = os.path.dirname(typefile)
             # TODO this only works for paths like a/b.txt, not b.txt och a/b/c.txt
             if not os.path.isdir(directory):
                 os.mkdir(directory)
             if not os.path.isfile(typefile):
                 open(typefile, 'w').write('')
     except errors.ConfigurationError as error:
         self.return_error(error)
Esempio n. 16
0
async def test_get_wallet_success_trusted_hot(mock_address):

    balances = [
        {
            'balance': '7.0000000',
            'limit': '922337203685.4775807',
            'asset_type': 'credit_alphanum4',
            'asset_code': settings['ASSET_CODE'],
            'asset_issuer': settings['ISSUER'],
        },
        {
            'balance': '10.0000000',
            'limit': '1000',
            'asset_type': 'credit_alphanum4',
            'asset_code': 'HTKN',
            'asset_issuer': settings['ISSUER'],
        },
        {
            'balance': '9.9999200',
            'asset_type': 'native'
        },
    ]
    mock_address.return_value = StellarWallet(balances)

    result = await get_wallet_detail(
        'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')

    host = settings.get('HOST', None)
    url = reverse('wallet-address',
                  wallet_address=
                  'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')
    expect_data = {
        'wallet_address':
        'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD',
        '@id': f'{host}{url}',
        'asset': {
            settings['ASSET_CODE']: '7.0000000',
            'XLM': '9.9999200'
        },
        'sequence': '1',
        'data': {
            'age': '30',
            'name': 'UnitTest'
        },
    }

    assert result == expect_data
    async def test_get_presigned_tx_xdr_from_request(self,
                                                     mock_get_transaction,
                                                     mock_get_wallet):
        escrow_address = "GAH6333FKTNQGSFSDLCANJIE52N7IGMS7DUIWR6JIMQZE7XKWEQLJQAY"
        transaction_source_address = "GDSB3JZDYKLYKWZ6NXDPPGPCYJ32ISMTZ2LVF5PYQGY4B4FGNIU2M5BJ"
        mock_get_transaction.return_value = {}
        host = settings.get('HOST', None)
        mock_get_wallet.return_value = {
            '@id':
            reverse('escrow-address', escrow_address=''),
            'asset': {
                'HOT': '10.0000000',
                'XLM': '9.9999200'
            },
            'generate-wallet':
            reverse(
                'escrow-generate-wallet',
                escrow_address=
                'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD'),
            'data': {
                'destination_address':
                'GABEAFZ7POCHDY4YCQMRAGVVXEEO4XWYKBY4LMHHJRHTC4MZQBWS6NL6',
                'cost_per_transaction': '5'
            }
        }

        resp = await self.client.request(
            "POST",
            reverse('generate-presigned-transactions',
                    escrow_address=escrow_address),
            json={'transaction_source_address': transaction_source_address})
        assert resp.status == 200

        mock_get_wallet.assert_called_once_with(escrow_address)

        destination_address = "GABEAFZ7POCHDY4YCQMRAGVVXEEO4XWYKBY4LMHHJRHTC4MZQBWS6NL6"
        balance = Decimal("10.0000000")
        cost_per_tx = Decimal("5")

        mock_get_transaction.assert_called_once_with(
            escrow_address, transaction_source_address, destination_address,
            balance, cost_per_tx)
    async def test_get_presigned_tx_xdr_cannot_get_value_in_data(
            self, mock_get_transaction, mock_get_wallet):
        host = settings.get('HOST', None)
        escrow_address = "GAH6333FKTNQGSFSDLCANJIE52N7IGMS7DUIWR6JIMQZE7XKWEQLJQAY"
        transaction_source_address = "GDSB3JZDYKLYKWZ6NXDPPGPCYJ32ISMTZ2LVF5PYQGY4B4FGNIU2M5BJ"
        mock_get_transaction.return_value = {}

        mock_get_wallet.return_value = {
            '@id':
            reverse(
                'escrow-address',
                escrow_address=
                'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD'),
            'asset': {
                'HOT': '10.0000000',
                'XLM': '9.9999200'
            },
            'generate-wallet':
            reverse(
                'escrow-generate-wallet',
                escrow_address=
                'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD'),
            'data': {
                'source':
                'GABEAFZ7POCHDY4YCQMRAGVVXEEO4XWYKBY4LMHHJRHTC4MZQBWS6NL6'
            }
        }

        resp = await self.client.request(
            "POST",
            reverse('generate-presigned-transactions',
                    escrow_address=escrow_address),
            json={'transaction_source_address': transaction_source_address})

        error_message = await resp.json()
        error_message = error_message['message']
        assert error_message == "Parameter 'destination_address' not found. Please ensure parameters is valid."
Esempio n. 19
0
def createengine():
	dbconf = settings.get('database')

	if dbconf is None:
		print 'Database information not found, using in-memory database.'

		return create_engine('sqlite:///:memory:')

	else:
		encoding = dbconf['encoding'] if 'encoding' in dbconf else defaults.DB_ENCODING
		enginetype = dbconf['enginetype']
		destination = dbconf['destination']

		if enginetype == 'sqlite':
			dbstring = '%s:///%s' % (enginetype, destination)
		else:
			username = dbconf['username']
			password = dbconf['password']
			db = dbconf['db']
			port = dbconf['port']

			dbstring = '%s://%s:%s@%s:%s/%s' % (enginetype, username, password, destination, port, db)

		return create_engine(dbstring, encoding=encoding)
    def get(self):
        answer = []
        logging.debug(' * Searching!')
        mode = self.get_query_argument('mode', settings.get('mode'))
        if not mode in settings.get_modes():
            message = "Unknown mode: {}. Available: {}".format(
                mode, ', '.join(settings.get_modes()))
            error = errors.ConfigurationError(message, code=400)
            self.return_error(error)
            return

        toformat = self.get_query_argument('format', False)
        inp_subtypes = self.get_query_argument('subtypes', [])
        if inp_subtypes:
            inp_subtypes = inp_subtypes.split(',')
        logging.debug('inp_subtypes %s', inp_subtypes)
        word = self.get_query_argument('q', '')
        contains = self.get_query_argument('contains',
                                           '') in [True, 'true', 'True']
        logging.debug('word %s', word)
        lang = self.get_query_argument('lang', 'sv')
        if lang not in settings.get('languages', mode):
            message = "Unknown language: {}. Available: {}".format(
                lang, ', '.join(settings.get('languages', mode)))
            error = errors.QueryError(message)
            self.return_error(error)
            return

        if toformat in ['html', 'pdf']:
            size = int(settings.get('maxsize_export', mode))
        else:
            size = int(
                self.get_query_argument('size', settings.get('maxsize', mode)))

        subtypes = filter_public_subtypes(inp_subtypes, mode)
        logging.debug(' * Subtypes %s', subtypes)
        if not subtypes:
            logging.warning(' * No public subtypes!')
            message = "Subtype(s) {} not public".format(
                ', '.join(inp_subtypes))
            error = errors.QueryError(message)
            self.return_error(error)
            return

        url = settings.karp + '/query?%s'

        params = {
            'resource': settings.get('resource', mode),
            'mode': settings.get('mode', mode),
            'size': size
        }

        overflow = False
        if not word and toformat not in ['html', 'pdf']:
            word = limit_query(subtypes, lang, mode)
            if word:
                overflow = True

        params['q'] = build_query(word, subtypes, contains, lang, mode)
        if lang != settings.get('sourcelanguage', mode):
            params['sort'] = settings.get('targetsort', mode)

        data = make_call(url, params, mode)
        if toformat == 'html':
            if settings.get('myurl', mode):
                cssurl = settings.get('myurl', mode)
            else:
                cssurl = "{}://{}".format(self.request.protocol,
                                          self.request.host)
            cssurl += "/css?mode=" + mode
            html = convert.format_posts(data,
                                        settings.get('mode', mode),
                                        toformat='html',
                                        css=cssurl)
            self.write(html)
            return

        total = data.get('hits', {}).get('total', 0)
        hits = data.get('hits', {}).get('hits', [])
        for ans in hits:
            source = ans.get('_source', {})
            answer.append(source)

        logging.debug('overflow? %s > %s', total, size)
        self.write({'result': answer, 'overflow': overflow or total > size})
Esempio n. 21
0
    "EXAMPLE": True,
    "MYSQL_HOST": "localhost",
    "NAME": "BRUNO",
    "PORT": 8001,
    "PRESIDENT": "Lula",
    "PROJECT": "hello_world",
    "SALARY": 2000,
    "VERSION": 1,
    "WORKS": "validator",
    "MYSQL_PASSWD": "SuperSecret",
    "FOOBAR": "EMPTY",
}


for key, value in assertions.items():
    found = settings.get(key)
    assert found == getattr(settings, key)
    assert found == value, f"expected: {key}: [{value}] found: [{found}]"


assertions = {
    "AGE": 15,
    "A_DICT": {"NESTED_1": {"NESTED_2": {"NESTED_3": {"NESTED_4": 1}}}},
    "BASE_IMAGE": "bla",
    "DEV_SERVERS": ["127.0.0.1", "localhost", "development.com"],
    "EXAMPLE": True,
    "MYSQL_HOST": "development.com",
    "NAME": "MIKE",
    "PORT": 8001,
    "PRESIDENT": "Lula",
    "PROJECT": "hello_world",
Esempio n. 22
0
                "4c239561b64f2353819452073f2ec7f62a5ad66f533868f89f7af862584cdee9",
                "asset_type": "credit_alphanum4",
                "asset_code": "HOT",
                "asset_issuer":
                "GDSB3JZDYKLYKWZ6NXDPPGPCYJ32ISMTZ2LVF5PYQGY4B4FGNIU2M5BJ",
                "from":
                "GDHH7XOUKIWA2NTMGBRD3P245P7SV2DAANU2RIONBAH6DGDLR5WISZZI",
                "to":
                "GAULEK4CU7IYZTFVKA4EG3RQLKB7LCSYX2WI46C2KXLDUJGQTSH2JWTD",
                "amount": "20.0000000",
            },
        ]

        result = await get_transaction(
            "4c239561b64f2353819452073f2ec7f62a5ad66f533868f89f7af862584cdee9")
        host = settings.get('HOST', None)
        expect_data = {
            'transaction_id':
            '4c239561b64f2353819452073f2ec7f62a5ad66f533868f89f7af862584cdee9',
            '@id':
            f"{host}{reverse('transaction', transaction_hash='4c239561b64f2353819452073f2ec7f62a5ad66f533868f89f7af862584cdee9')}",
            'paging_token':
            '34980756279271424',
            'ledger':
            8_144_592,
            'created_at':
            '2018-03-28T08:34:22Z',
            'source_account':
            'GDBNKZDZMEKXOH3HLWLKFMM7ARN2XVPHWZ7DWBBEV3UXTIGXBTRGJLHF',
            'source_account_sequence':
            '33497802856202246',
async def test_get_escrow_wallet_success_trusted_hot(mock_address):

    balances = [
        {
            'balance': '7.0000000',
            'limit': '922337203685.4775807',
            'asset_type': 'credit_alphanum4',
            'asset_code': settings['ASSET_CODE'],
            'asset_issuer': settings['ISSUER'],
        },
        {
            'balance': '10.0000000',
            'limit': '1000',
            'asset_type': 'credit_alphanum4',
            'asset_code': 'PTKN',
            'asset_issuer': settings['ISSUER'],
        },
        {
            'balance': '9.9999200',
            'asset_type': 'native'
        },
    ]
    mock_address.return_value = StellarWallet(balances)
    instance = mock_address.return_value
    instance.signers = [
        {
            'public_key': 'provider_address',
            'weight': 1
        },
        {
            'public_key': 'creator_address',
            'weight': 1
        },
        {
            'public_key': 'destination_address',
            'weight': 0
        },
    ]

    actual_data = await get_escrow_wallet_detail(
        'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')
    host = settings.get('HOST', None)
    expect_data = {
        '@id':
        reverse('escrow-address',
                escrow_address=
                'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD'),
        'escrow_address':
        'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD',
        'asset': {
            settings['ASSET_CODE']: '7.0000000',
            'XLM': '9.9999200'
        },
        'sequence':
        '1',
        'generate-wallet':
        f"{host}{reverse('escrow-generate-wallet', escrow_address='GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD')}",
        'data': {
            'name': 'UnitTest',
            'age': '30'
        },
        'signers': [{
            'public_key': 'provider_address',
            'weight': 1
        }, {
            'public_key': 'creator_address',
            'weight': 1
        }],
    }
    assert actual_data == expect_data
Esempio n. 24
0
            dataline = [float(data[0])/100 for data in item['data']]

            self.write(
                json(
                    {
                     'status' : 200, 
                     'timeline' : timeline, 
                     'series' :
                        [{'name': item['domain'], 'data': dataline}] 
                    }
                  )
                )
        except BaseException, err:
            print err
            traceback.print_exc()
            self.write(json({'status' : 400}))

app = tornado.web.Application([
    (r"/smartbuyer/price", PriceTrendHandler),
    (r"/", MainHandler),
    ])
dbclient = MongoClient.from_settings(settings.get('MONGODB'))
dbclient.open()
domain_table_mapping = settings.get('DOMAIN_TABLE_MAPPING')

if __name__ == "__main__":
    app.listen(10001)
    loop = tornado.ioloop.IOLoop.instance()
    tornado.autoreload.start(loop)
    loop.start()
 def get(self, *args):
     mode = self.get_query_argument('mode', settings.get('mode'))
     full_url = settings.get('css', mode)
     req = urllib.request.Request(full_url)
     self.set_header('Content-Type', 'text/css')
     self.write(urllib.request.urlopen(req).read())
Esempio n. 26
0
            dataline = [float(data[0]) / 100 for data in item['data']]

            self.write(
                json({
                    'status': 200,
                    'timeline': timeline,
                    'series': [{
                        'name': item['domain'],
                        'data': dataline
                    }]
                }))
        except BaseException, err:
            print err
            traceback.print_exc()
            self.write(json({'status': 400}))


app = tornado.web.Application([
    (r"/smartbuyer/price", PriceTrendHandler),
    (r"/", MainHandler),
])
dbclient = MongoClient.from_settings(settings.get('MONGODB'))
dbclient.open()
domain_table_mapping = settings.get('DOMAIN_TABLE_MAPPING')

if __name__ == "__main__":
    app.listen(10001)
    loop = tornado.ioloop.IOLoop.instance()
    tornado.autoreload.start(loop)
    loop.start()
def update_subtypes(subtypes, mode):
    """ Update the subtypes file """
    open(settings.get('subtypes', mode), encoding='utf-8',
         mode='w').write('\n'.join(subtypes))
def get_subtypes(mode):
    """ Read all subtypes for this mode from file """
    return [
        s.strip() for s in open(settings.get('subtypes', mode),
                                encoding='utf-8').readlines() if s
    ]