Exemplo n.º 1
0
def main():
    app = Sanic(__name__)

    app.blueprint(AUTH_BP)
    app.blueprint(BLOCKS_BP)
    app.blueprint(CHATBOT_BP)
    app.blueprint(ERRORS_BP)
    app.blueprint(PROPOSALS_BP)
    app.blueprint(ROLES_BP)
    app.blueprint(TASKS_BP)
    app.blueprint(USERS_BP)
    app.blueprint(APP_BP)

    @app.middleware("request")
    async def handle_options(request):  # pylint: disable=unused-variable
        if request.method == "OPTIONS":
            return text(
                "ok",
                headers={
                    "Access-Control-Allow-Origin": "*",
                    "Access-Control-Allow-Methods":
                    "GET, POST, PUT, PATCH, DELETE, OPTIONS",
                    "Access-Control-Allow-Headers":
                    "Content-Type, Authorization",
                },
            )

    @app.middleware("response")
    def allow_cors(request, response):  # pylint: disable=unused-variable
        response.headers["Access-Control-Allow-Origin"] = "*"
        response.headers[
            "Access-Control-Allow-Methods"] = "GET, POST, PUT, PATCH, DELETE, OPTIONS"
        response.headers[
            "Access-Control-Allow-Headers"] = "Content-Type, Authorization"

    load_config(app)

    zmq = ZMQEventLoop()
    asyncio.set_event_loop(zmq)
    server = app.create_server(host=app.config.HOST,
                               port=app.config.PORT,
                               debug=app.config.DEBUG)
    loop = asyncio.get_event_loop()
    asyncio.ensure_future(server)
    asyncio.ensure_future(open_connections(app))
    signal(SIGINT, lambda s, f: loop.close())
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        close_connections(app)
        loop.stop()
Exemplo n.º 2
0
def main():
    args = sys.argv[1:]
    if len(args) == 1:
        num_requests = int(args[0])
    elif len(args) == 0:
        num_requests = 10
    else:
        sys.exit(__doc__)
    try:
        loop = ZMQEventLoop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(run(loop, num_requests))
    except KeyboardInterrupt:
        print('\nFinished (interrupted)')
Exemplo n.º 3
0
def main():
    loop = ZMQEventLoop()
    asyncio.set_event_loop(loop)

    try:
        opts = parse_args(sys.argv[1:])

        init_console_logging(verbose_level=opts.verbose)

        validator_url = opts.connect
        if "tcp://" not in validator_url:
            validator_url = "tcp://" + validator_url

        database = Database(opts.db_host, opts.db_port, opts.db_name,
                            opts.db_user, opts.db_password, loop)

        messenger = Messenger(validator_url, database)

        try:
            host, port = opts.bind.split(":")
            port = int(port)
        except ValueError:
            print("Unable to parse binding {}: Must be in the format"
                  " host:port".format(opts.bind))
            sys.exit(1)

        dotenv_path = join(dirname(__file__), '.env')
        load_dotenv(dotenv_path)

        start_rest_api(host, port, messenger, database)
    except Exception as err:  # pylint: disable=broad-except
        LOGGER.exception(err)
        sys.exit(1)
    finally:
        database.disconnect()
        messenger.close_validator_connection()
Exemplo n.º 4
0
def main():
    #app.blueprint(ACCOUNTS_BP)
    #app.blueprint(ERRORS_BP)
    #app.blueprint(ASSETS_BP)
    load_config(app)
    app.blueprint(ACCOUNTS_BP)
    app.blueprint(ERRORS_BP)
    app.blueprint(ASSETS_BP)
    #app.blueprint(USER_ACCOUNTS_BP)
    for handler, (rule, router) in app.router.routes_names.items():
        print(rule)

    zmq = ZMQEventLoop()
    asyncio.set_event_loop(zmq)
    server = app.create_server(host=app.config.HOST,
                               port=app.config.PORT,
                               debug=app.config.DEBUG,
                               access_log=True)
    loop = asyncio.get_event_loop()

    ##not wait for the server to strat, this will return a future object
    asyncio.ensure_future(server)
    app.config.DB = loop.run_until_complete(open_connections(app))
    ##future.add_done_callback(functools.partial(db_callback, app))

    #task = asyncio.ensure_future(from_mnemonic(app.config.GOAPI_URL,
    #app.config.ADMIN_MNEMONIC))
    #task.add_done_callback(functools.partial(mstr_mnemic_chk_calbck, app))

    loop.run_until_complete(master_mnemonic(app))
    admin = loop.run_until_complete(
        find_on_key(
            app,
            "email",
            app.config.ADMIN_EMAIL,
        ))

    ##if ADMIN data is not present in the users_table then insert
    if not admin:
        admin = loop.run_until_complete(new_account(app, \
                        pancard=app.config.ADMIN_PANCARD,
                        phone_number=app.config.ADMIN_PHONE_NUMBER,
                        email=app.config.ADMIN_EMAIL, \
                        role="ADMIN",
                        gst_number=app.config.ADMIN_GST_NUMBER,
                        tan_number=app.config.ADMIN_TAN_NUMBER,
                        org_name=app.config.ADMIN_ORG_NAME))

        mnemonic, admin = loop.run_until_complete(
            set_password(app,
                         account=admin,
                         password=app.config.ADMIN_PASSWORD))

        ##since ADMIN not going to have a create_account transaction on
        ##blockchain, its fine to set its claimed to True
        admin.update({"claimed": True})
        admin.update({"parent_pub": None, "parent_idx": 0})
        logging.info(app.config)

        loop.run_until_complete(submit_admin_account(app, admin))

    else:
        logging.info("Admin found in the Database")
    signal(SIGINT, lambda s, f: loop.close())

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        close_connections(app)
        loop.stop()