コード例 #1
0
def app():
    guid = str(uuid4())
    app = Sanic(__name__ + guid)
    #app.test_client_class = TestClient
    realm = SanicPluginRealm(app)
    realm.register_plugin(restplus)
    yield app
コード例 #2
0
 def api(self, app):
     blueprint = Blueprint('api', __name__)
     realm = SanicPluginRealm(blueprint)
     plugin, reg = realm.register_plugin(restplus)
     api = Api(reg)
     app.register_blueprint(blueprint)
     yield api
コード例 #3
0
def test_spf_singleton_1(realm):
    """
    Registering the toolkit twice on the same app should return
    an indentical instance of the realm
    :return:
    """
    app1 = realm._app
    realm.register_plugin(instance)
    realm2 = SanicPluginRealm(app1)
    assert realm == realm2
コード例 #4
0
def test_spf_singleton_2(realm):
    """
    Registering the toolkit twice, but with different apps should return
    two different spfs
    :return:
    """
    app1 = realm._app
    app2 = Sanic('test_realm_singleton_2_1')
    realm.register_plugin(instance)
    realm2 = SanicPluginRealm(app2)
    assert realm != realm2
from sanic import Sanic
from sanic.response import text
from sanic_plugin_toolkit import SanicPluginRealm
from sanic_plugin_toolkit.plugins.contextualize import instance as contextualize
app = Sanic(__name__)
realm = SanicPluginRealm(app)


@contextualize.listener('after_server_start')
async def setup_db(app, loop, context):
    from sqlalchemy import create_engine
    shared_context = context.shared
    engine = create_engine('sqlite:///orm_in_detail.sqlite')
    shared_context['db'] = engine
    from sqlalchemy.orm import sessionmaker
    session = sessionmaker()
    session.configure(bind=engine)
    shared_context['dbsession'] = session


async def get_user_session(db_session):
    # Hypothetical get_user_session function
    return {"username": "******"}


@contextualize.middleware(priority=4)
async def db_request_middleware(request, context):
    shared_context = context.shared
    request_context = shared_context.request
    db_session = shared_context.dbsession
    user_session = await get_user_session(db_session)
コード例 #6
0
def realm_bp(request):
    a = app_with_name(request.node.name)
    b = Blueprint("TestBP", "blueprint")
    realm = SanicPluginRealm(b)
    manager = TestManager(a)
    return realm, a
コード例 #7
0
def realm(request):
    a = app_with_name(request.node.name)
    manager = TestManager(a)
    return SanicPluginRealm(a)
コード例 #8
0
from uuid import uuid4
from sanic import Sanic
from sanic.response import text
from sanic_plugin_toolkit import SanicPluginRealm
from sanic_session_sptk.plugin import session
from sanic_plugin_toolkit.plugins import contextualize

app = Sanic(__name__)
sptk = SanicPluginRealm(app)
session_reg = sptk.register_plugin(session, interface=None)
ctx = sptk.register_plugin(contextualize)

@ctx.route("/")
def index(request, context):
    session = context.shared.request[id(request)].session
    token = session.get("RememberMe", None)
    if token is None:
        session['RememberMe'] = token = str(uuid4())
    return text("{} {}".format(id(request), token))

if __name__ == "__main__":
    app.run(host="127.0.0.1", port="9997", debug=True, auto_reload=False)
コード例 #9
0
from sanic import Sanic
from sanic.response import text
from sanic_plugin_toolkit import SanicPluginRealm
from examples import my_plugin
from examples import my_blueprint

app = Sanic(__name__)
# mp = MyPlugin(app)  //Legacy registration example
realm = SanicPluginRealm(my_blueprint.api_v1)

realm.register_plugin(my_plugin)

app.blueprint(my_blueprint.api_v1)


@app.route('/')
def index(request):
    return text("hello world")


if __name__ == "__main__":
    app.run("127.0.0.1", port=8098, debug=True, auto_reload=False)
コード例 #10
0
ファイル: todo.py プロジェクト: ashleysommer/sanic-restplus
from sanic import Sanic

from sanic_restplus import Api, fields, Resource
from sanic_restplus.cors import crossdomain
from sanic_restplus.restplus import restplus
from sanic_plugin_toolkit import SanicPluginRealm
app = Sanic(__name__)
realm = SanicPluginRealm(app)
rest_assoc = realm.register_plugin(restplus)

api = Api(version='1.0', title='Todo API', description='A simple TODO API')

ns = api.namespace('todos', description='TODO operations')

TODOS = {
    'todo1': {
        'task': 'build an API'
    },
    'todo2': {
        'task': '?????'
    },
    'todo3': {
        'task': 'profit!'
    },
}

todo = api.model(
    'Todo',
    {'task': fields.String(required=True, description='The task details')})

listed_todo = api.model(
コード例 #11
0
ファイル: example.py プロジェクト: ashleysommer/sanic-metrics
from sanic import Sanic
from sanic.response import text
from sanic_plugin_toolkit import SanicPluginRealm
from sanic_plugin_toolkit.plugins import contextualize
from sanic_metrics import sanic_metrics

app = Sanic(__name__)
realm = SanicPluginRealm(app)
ctx = realm.register_plugin(contextualize)
metrics = realm.register_plugin(sanic_metrics,
                                opt={'type': 'out'},
                                log={'format': 'vcombined'})


@app.route("/")
def index(request):
    return text("hello world")


@ctx.route("/override")
async def orr(request, context):
    rctx = context.for_request(request)
    shared_ctx = context.shared
    shared_rctx = shared_ctx.for_request(request)
    override_metrics = {'status': "999"}
    shared_rctx['override_metrics'] = override_metrics
    return text("hello world")


if __name__ == "__main__":
    app.run("127.0.0.1", 8083, debug=True, auto_reload=False, access_log=False)
コード例 #12
0
class MyPlugin(SanicPlugin):
    def __init__(self, *args, **kwargs):
        super(MyPlugin, self).__init__(*args, **kwargs)


instance = MyPlugin()


@instance.middleware(priority=6, with_context=True, attach_to="cleanup")
def mw1(request, context):
    context['test1'] = "test"
    print("Doing Cleanup!")


app = Sanic(__name__)
realm = SanicPluginRealm(app)
assoc_reg = realm.register_plugin(instance)


@app.route('/')
def index(request):
    return text("hello world")


@app.websocket('/test1')
async def we_test(request, ws):
    print("hi")
    return


if __name__ == "__main__":
コード例 #13
0
from sanic.response import text
from sanic_testing import TestManager

from sanic_plugin_toolkit import SanicPlugin, SanicPluginRealm


class TestPlugin(SanicPlugin):
    pass


# The following tests are taken directly from Sanic source @ v0.6.0
# and modified to test the SanicPlugin, rather than Sanic

exception_handler_app = Sanic('test_exception_handler')
test_manager = TestManager(exception_handler_app)
realm = SanicPluginRealm(exception_handler_app)
test_plugin = TestPlugin()


@test_plugin.route('/1')
def handler_1(request):
    raise InvalidUsage("OK")


@test_plugin.route('/2')
def handler_2(request):
    raise ServerError("OK")


@test_plugin.route('/3')
def handler_3(request):
コード例 #14
0
from sanic import Sanic
from sanic.response import text
from sanic_plugin_toolkit import SanicPluginRealm
from sanic_plugin_toolkit.plugins.contextualize import instance as contextualize

app = Sanic(__name__)
app.config['STK_LOAD_INI'] = True
app.config['STK_INI_FILE'] = 'example_stk.ini'
realm = SanicPluginRealm(app)

# We can get the assoc object from SPF, it is already registered
contextualize = realm.get_plugin_assoc('Contextualize')


@contextualize.middleware
def middle3(request, context):
    shared = context.shared
    r = shared.request
    r.test = "true"


@contextualize.middleware(priority=7)
def middle4(request, context):
    shared = context.shared
    r = shared.request
    _ = r.test


@contextualize.route('/1/<args>')
def index2(request, args, context):
    shared = context.shared
コード例 #15
0
from sanic import Sanic
from sanic.response import text
from sanic_plugin_toolkit import SanicPluginRealm
#from examples.my_plugin import my_plugin
from examples import my_plugin
from examples.my_plugin import MyPlugin
from logging import DEBUG

app = Sanic(__name__)
# mp = MyPlugin(app)  //Legacy registration example
realm = SanicPluginRealm(app)
my_plugin = realm.register_plugin(my_plugin)


@app.route('/')
def index(request):
    return text("hello world")


if __name__ == "__main__":
    app.run("127.0.0.1", port=8098, debug=True, auto_reload=False)
コード例 #16
0
@instance.middleware(priority=2, with_context=True)
def mw4(request, context):
    log = context.log
    print(context)
    log(DEBUG, "Hello Middleware")


@instance.route('/test_plugin', with_context=False)
def t1(request):
    return text('from plugin!')


app = Sanic(__name__)
mp = MyPlugin(app)
realm = SanicPluginRealm(app)
try:
    assoc_reg = realm.register_plugin(
        MyPlugin)  # already registered! (line 57)
except ValueError as ve:
    assoc_reg = ve.args[1]


@app.route('/')
def index(request):
    return text("hello world")


if __name__ == "__main__":
    app.run("127.0.0.1", port=8098, debug=True, workers=2, auto_reload=False)