Source code for microraiden.examples.ticker_proxy
import logging
import click
import os
from microraiden.click_helpers import main, pass_app
from microraiden.proxy import PaywalledProxy
from microraiden.make_helpers import make_paywalled_proxy
from microraiden.proxy.resources import PaywalledProxyUrl
[docs]def start_proxy(receiver_privkey: str) -> PaywalledProxy:
state_file_name = 'ticker_proxy.db'
app_dir = click.get_app_dir('microraiden')
if not os.path.exists(app_dir):
os.makedirs(app_dir)
app = make_paywalled_proxy(receiver_privkey, os.path.join(app_dir, state_file_name))
app.run()
return app
[docs]class ETHTickerProxy:
def __init__(self, privkey: str = None, proxy: PaywalledProxy = None) -> None:
assert privkey or proxy
if proxy:
self.app = proxy
else:
self.app = start_proxy(privkey)
cfg = {'resource_class_kwargs': {
'domain': 'http://api.bitfinex.com/v1/pubticker/'}
}
self.app.add_paywalled_resource(
PaywalledProxyUrl,
'/<string:ticker>',
100,
**cfg
)
[docs] def stop(self):
self.app.stop()
@main.command()
@click.option(
'--host',
default='localhost',
help='Address of the proxy'
)
@click.option(
'--port',
default=5000,
help='Port of the proxy'
)
@pass_app
def start(app, host, port):
app.run(host=host, port=port, debug=True) # nosec
proxy = ETHTickerProxy(proxy=app)
proxy.app.join()
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)
main()