コード例 #1
0
ファイル: test_app.py プロジェクト: txjzwzz/flagon
def test_blueprint_errorhandler():
    app = Flagon()

    bp = Blueprint('foo', url_prefix='/foo')

    @bp.route('/bar')
    def bar():
        abort(400)
        return 'bar'

    @bp.route('/bar2')
    def bar2():
        i = 1/0
        return 'bar'

    @bp.errorhandler(400)
    def bp_errorhandler400(exception):
        return 'bar'

    @bp.errorhandler(Exception)
    def bp_errorhandler(exception):
        return 'bar2'

    app.register_blueprint(bp)

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo/bar'
    assert app(env, start_response)[0]  == b'bar'

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo/bar2'
    assert app(env, start_response)[0]  == b'bar2'
コード例 #2
0
ファイル: test_app.py プロジェクト: txjzwzz/flagon
def test_blueprint():
    app = Flagon()

    bp = Blueprint('foo', url_prefix='/foo')

    @bp.route('/bar')
    def bar():
        return 'bar'

    @bp.route('/bar2')
    def bar2():
        return 'bar2'

    app.register_blueprint(bp)
    app.register_blueprint(bp, url_prefix='/foo2')

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo/bar'
    assert app(env, start_response)[0]  == b'bar'

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo/bar2'
    assert app(env, start_response)[0]  == b'bar2'

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo2/bar'
    assert app(env, start_response)[0]  == b'bar'

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo2/bar2'
    assert app(env, start_response)[0]  == b'bar2'
コード例 #3
0
ファイル: test_app.py プロジェクト: txjzwzz/flagon
def test_basic_blueprint():
    app = Flagon()
    bp = Blueprint('foo', url_prefix='/foo')

    @bp.before_request
    def bp_before_request():
        pass

    @bp.route('/bar')
    def bar():
        return 'bar'

    @bp.before_app_request
    def bp_app_before_request():
        pass

    @bp.after_request
    def bp_after_request(resp):
        pass

    @bp.after_app_request
    def bp_after_app_request(resp):
        pass

    @bp.teardown_request
    def bp_teardown_request(exc):
        pass

    @bp.teardown_app_request
    def bp_teardown_app_request(exc):
        pass

    @bp.errorhandler(Exception)
    def bp_errorhandler(exception):
        pass

    @bp.app_errorhandler(Exception)
    def bp_app_errorhandler(exception):
        pass

    @bp.endpoint('bbb')
    def bbb():
        return 'ok'

    app.register_blueprint(bp)

    assert app.view_functions['foo.bbb'] == bbb

    @bp.route('/bar2')
    def bar2():
        return 'bar2'
コード例 #4
0
ファイル: test_app.py プロジェクト: txjzwzz/flagon
def test_basic_app():
    app = Flagon(__name__)
    assert app.name == 'tests.test_app'

    app.add_url_rule('/hello', 'hello', lambda x: 'ok')

    with pytest.raises(AssertionError):
        app.add_url_rule('/hello', 'hello', lambda x: 'ok')

    @app.endpoint('foo')
    def foo():
        return 'foo'
    app.add_url_rule('/foo', 'foo')

    def error_handler(exception):
        return '500'

    app.register_error_handler(Exception, error_handler)
コード例 #5
0
ファイル: test_app.py プロジェクト: txjzwzz/flagon
def test_more_app():
    app = Flagon()
    assert 'Flagon' in repr(app)

    @app.before_request
    def before_request1():
        print('before_request')
        g.a = 1

    @app.before_request
    def before_request2():
        print('before_request2')
        g.b = 2

    @app.route('/hello')
    def hello():
        return 'ok'

    @app.after_request
    def after_request1(resp):
        return resp

    @app.after_request
    def after_request2(resp):
        return resp

    @app.errorhandler(404)
    def error_handler404(exception):
        return '404'

    @app.errorhandler(500)
    def error_handler500(exception):
        print(traceback.format_exc())
        return '500'

    @app.teardown_request
    def teardown_request(exc=None):
        pass

    assert app.before_request_funcs[None][0] == before_request1
    assert app.before_request_funcs[None][1] == before_request2
    assert app.after_request_funcs[None][0] == after_request2
    assert app.after_request_funcs[None][1] == after_request1

    bp = Blueprint('foo', url_prefix='/foo')
    @bp.before_request
    def bp_before_request():
        pass

    @bp.after_request
    def bp_after_request(resp):
        return resp

    @bp.teardown_request
    def bp_teardown_request(exc):
        pass

    @bp.route('/bar')
    def bar():
        return 'bar'

    @bp.before_app_request
    def bp_app_before_request():
        pass

    @bp.errorhandler(Exception)
    def bp_errorhandler(exception):
        pass

    app.register_blueprint(bp)
    assert app.before_request_funcs[None][2] == bp_app_before_request
    assert app.before_request_funcs['foo'][0] == bp_before_request

    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/hello'
    assert app(env, start_response)[0]  == b'ok'
    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo/bar'
    assert app(env, start_response)[0]  == b'bar'
    env = copy.deepcopy(env1)
    env['PATH_INFO'] = '/foo2'
    assert app(env, start_response)[0]  == b'404'
コード例 #6
0
def create_app() -> Flagon:
    app = Flagon(__name__)

    app.config['SECRET_KEY'] = 'notsosecret'

    app.cors = CORS(app)

    app.db = create_database(
        dbname=os.environ["DB_NAME"],
        host=os.environ["DB_HOST"],
        password=os.environ["DB_PASSWORD"],
        port=os.environ["DB_PORT"],
        user=os.environ["DB_USER"],
    )

    app.device_location_tag_store = DeviceLocationTagStore(db=app.db)
    app.device_type_metric_store = DeviceTypeMetricStore(db=app.db)
    app.location_tag_store = LocationTagStore(db=app.db)
    app.metric_store = MetricStore(db=app.db)
    app.device_type_store = DeviceTypeStore(
        db=app.db,
        device_type_metric_store=app.device_type_metric_store,
        metric_store=app.metric_store)
    app.device_store = DeviceStore(
        db=app.db,
        device_location_tag_store=app.device_location_tag_store,
        location_tag_store=app.location_tag_store,
        device_type_store=app.device_type_store,
    )
    app.report_store = ReportStore(
        db=app.db,
        device_store=app.device_store,
        device_type_metric_store=app.device_type_metric_store,
        metric_store=app.metric_store,
    )

    app.register_blueprint(DEVICE_LOCATION_TAGS_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(DEVICE_TYPE_METRICS_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(DEVICE_TYPES_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(DEVICES_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(LOCATION_TAGS_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(METRICS_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(REPORTS_V0_BLUEPRINT, url_prefix="/v0")

    return app
コード例 #7
0
from flagon import Flagon, render_template, url_parse, redirect
from db import get_session, user_exists, verified_user
from db import get_posts, get_users, add_user, check_user, add_post, get_post

from bs4 import BeautifulSoup
import requests
from functools import wraps

app = Flagon(__name__)
session = get_session()


def get_post_preview(url):
    scheme, netloc, path, query, fragment = url_parse(url)

    # No oranges allowed
    if scheme != 'http' and scheme != 'https':
        return None

    if '..' in path:
        return None

    if path.startswith('/flaginfo'):
        return None

    try:
        r = requests.get(url, allow_redirects=False)
    except Exception:
        return None

    soup = BeautifulSoup(r.text, 'html.parser')
コード例 #8
0
ファイル: main.py プロジェクト: hugoleodev/flagon
from flagon import Flagon

app = Flagon()


@app.route("/")
def home(request, response):
    response.text = "Minha Home"

    return response


@app.route("/users")
class UsersResource:
    def get(self, request, response):
        response.text = "GET Users"

    def post(self, request, response):
        response.text = "POST Users"
コード例 #9
0
ファイル: servertest.py プロジェクト: txjzwzz/flagon
    raise ImportError('This is not a module, but a script.')

import sys, os, socket

test_root = os.path.dirname(os.path.abspath(__file__))
os.chdir(test_root)
sys.path.insert(0, os.path.dirname(test_root))
sys.path.insert(0, test_root)

try:
    server = sys.argv[1]
    port   = int(sys.argv[2])

    if server == 'gevent':
        from gevent import monkey
        monkey.patch_all()

    from flagon import Flagon

    app = Flagon()
    @app.route('/test')
    def test():
        return 'ok'
    app.run(host=server, port=port)
except socket.error:
    sys.exit(3)
except ImportError:
    sys.exit(128)
except KeyboardInterrupt:
    pass
コード例 #10
0
ファイル: app.py プロジェクト: samakj/han
def create_app() -> Flagon:
    app = Flagon(__name__)

    app.cors = CORS(app)

    app.db = create_database(
        dbname=os.environ["DB_NAME"],
        host=os.environ["DB_HOST"],
        password=os.environ["DB_PASSWORD"],
        port=os.environ["DB_PORT"],
        user=os.environ["DB_USER"],
    )

    app.user_store = UserStore(db=app.db)
    app.superuser_store = SuperuserStore(db=app.db)
    app.access_control_store = AccessControlStore(db=app.db)

    app.register_blueprint(USERS_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(SUPERUSERS_V0_BLUEPRINT, url_prefix="/v0")
    app.register_blueprint(ACCESS_CONTROLS_V0_BLUEPRINT, url_prefix="/v0")

    return app
コード例 #11
0
ファイル: example1.py プロジェクト: txjzwzz/flagon
from flagon import Flagon, request
app = Flagon('example1')

@app.before_request
def before_request():
    if request.endpoint == 'hello_world':
        if 'foo' not in request.view_args:
            request.view_args.update(foo='123')
    if request.endpoint == 'hello_world2':
        if 'foo2' in request.view_args:
            request.view_args.pop('foo2')

@app.route('/')
@app.route('/<foo>/bar')
def hello_world(foo):
    print 'hello', foo
    return 'Hello World!'

@app.route('/<foo2>/noarg')
def hello_world2():
    return 'Hello World!'

@app.route('/<int:number>/num')
def hello_world3(number):
    return 'Hello World! %s'%(number)


if __name__ == '__main__':
    app.run()