def test_app_create_modular_apps(): jsonrpc_api_1 = JSONRPCBlueprint('jsonrpc_api_1', __name__) # pylint: disable=W0612 @jsonrpc_api_1.method('blue1.fn2') def fn1_b1(s: str) -> str: return 'b1: Foo {0}'.format(s) jsonrpc_api_2 = JSONRPCBlueprint('jsonrpc_api_2', __name__) # pylint: disable=W0612 @jsonrpc_api_2.method('blue2.fn2') def fn1_b2(s: str) -> str: return 'b2: Foo {0}'.format(s) # pylint: disable=W0612 @jsonrpc_api_2.method('blue2.fn1') def fn2_b2(s: str) -> str: return 'b2: Bar {0}'.format(s) jsonrpc_api_3 = JSONRPCBlueprint('jsonrpc_api_3', __name__) # pylint: disable=W0612 @jsonrpc_api_3.method('blue3.fn2') def fn1_b3(s: str) -> str: return 'b3: Foo {0}'.format(s) app = Flask(__name__, instance_relative_config=True) jsonrpc = JSONRPC(app, '/api', enable_web_browsable_api=True) jsonrpc.register_blueprint(app, jsonrpc_api_1, url_prefix='/b1') jsonrpc.register_blueprint(app, jsonrpc_api_2, url_prefix='/b2') jsonrpc.register_blueprint(app, jsonrpc_api_3, url_prefix='/b3') with app.test_client() as client: rv = client.post('/api/b1', json={ 'id': 1, 'jsonrpc': '2.0', 'method': 'blue1.fn2', 'params': [':)'] }) assert rv.json == {'id': 1, 'jsonrpc': '2.0', 'result': 'b1: Foo :)'} assert rv.status_code == 200 rv = client.post('/api/b2', json={ 'id': 1, 'jsonrpc': '2.0', 'method': 'blue2.fn2', 'params': [':)'] }) assert rv.json == {'id': 1, 'jsonrpc': '2.0', 'result': 'b2: Foo :)'} assert rv.status_code == 200 rv = client.post('/api/b2', json={ 'id': 1, 'jsonrpc': '2.0', 'method': 'blue2.fn1', 'params': [':)'] }) assert rv.json == {'id': 1, 'jsonrpc': '2.0', 'result': 'b2: Bar :)'} assert rv.status_code == 200 rv = client.post('/api/b3', json={ 'id': 1, 'jsonrpc': '2.0', 'method': 'blue3.fn2', 'params': [':)'] }) assert rv.json == {'id': 1, 'jsonrpc': '2.0', 'result': 'b3: Foo :)'} assert rv.status_code == 200
app.redis = config.get('REDIS_URL') app.config['SESSION_TYPE'] = 'redis' app.config['SESSION_REDIS'] = app.redis app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024 app.config['UPLOAD_EXTENSIONS'] = ['.jpg', '.png', '.gif'] app.config['UPLOAD_FOLDER'] = 'uploads' app.db_session = scoped_session(SessionLocal, scopefunc=_app_ctx_stack.__ident_func__) jsonrpc = JSONRPC(app, '/api', enable_web_browsable_api=True, jsonrpc_site_api=AuthorizationView) jsonrpc.register_blueprint(app, modules, url_prefix='/index', enable_web_browsable_api=True) jsonrpc.register_blueprint(app, auth, url_prefix='/auth', enable_web_browsable_api=True) @app.before_request def before_request(): if 'identifier' not in session: session['identifier'] = str(uuid.uuid4()) @app.teardown_appcontext def remove_session(*args, **kwargs):
# isort:skip_file import os import sys from flask import Flask PROJECT_DIR, PROJECT_MODULE_NAME = os.path.split(os.path.dirname(os.path.realpath(__file__))) FLASK_JSONRPC_PROJECT_DIR = os.path.join(PROJECT_DIR, os.pardir) if os.path.exists(FLASK_JSONRPC_PROJECT_DIR) and FLASK_JSONRPC_PROJECT_DIR not in sys.path: sys.path.append(FLASK_JSONRPC_PROJECT_DIR) from flask_jsonrpc import JSONRPC # noqa: E402 pylint: disable=C0413 from api.user import user # noqa: E402 pylint: disable=C0413,E0611 from api.article import article # noqa: E402 pylint: disable=C0413,E0611 app = Flask(__name__) jsonrpc = JSONRPC(app, '/api', enable_web_browsable_api=True) jsonrpc.register_blueprint(app, user, url_prefix='/user', enable_web_browsable_api=True) jsonrpc.register_blueprint(app, article, url_prefix='/article', enable_web_browsable_api=True) @jsonrpc.method('App.index') def index() -> str: return 'Welcome to Flask JSON-RPC' if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
# isort:skip_file import os import sys from flask import Flask, render_template PROJECT_DIR, PROJECT_MODULE_NAME = os.path.split( os.path.dirname(os.path.realpath(__file__))) FLASK_JSONRPC_PROJECT_DIR = os.path.join(PROJECT_DIR, os.pardir) if os.path.exists(FLASK_JSONRPC_PROJECT_DIR ) and FLASK_JSONRPC_PROJECT_DIR not in sys.path: sys.path.append(FLASK_JSONRPC_PROJECT_DIR) from api.hello import hello # noqa: E402 pylint: disable=C0413 from flask_jsonrpc import JSONRPC # noqa: E402 pylint: disable=C0413 app = Flask(__name__) app.config.from_object(__name__) jsonrpc = JSONRPC(app, '/api') jsonrpc.register_blueprint(app, hello, url_prefix='/hello') @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)