예제 #1
0
def setup_json_serializer(config):
    import requests
    import webob

    # Monkey patch to use ujson
    webob.request.json = utils.json
    requests.models.json = utils.json

    # Override json renderer using ujson
    renderer = JSONRenderer(serializer=utils.json_serializer)
    config.add_renderer("json", renderer)
예제 #2
0
def main(global_config, **settings):
    settings['package_root'] = os.path.abspath(os.path.dirname(__file__))
    settings['objects'] = {}

    settings['uncertain_models'] = {}
    try:
        os.mkdir('ipc_files')
    except OSError as e:
        # it is ok if the folder already exists.
        if e.errno != 17:
            raise

    reconcile_directory_settings(settings)
    load_cors_origins(settings, 'cors_policy.origins')
    start_session_cleaner(settings)

    config = Configurator(settings=settings)

    overload_redis_session_factory(settings, config)

    # we use ujson to load our JSON payloads
    config.add_request_method(get_json, 'json', reify=True)

    renderer = JSONRenderer(serializer=lambda v, **kw: ujson.dumps(v))
    config.add_renderer('json', renderer)

    config.add_tween('webgnome_api.tweens.PyGnomeSchemaTweenFactory')

    config.add_route('upload', '/upload')
    config.add_route('activate', '/activate')
    config.add_route('download', '/download')
    config.add_route('persist', '/persist')

    config.add_route('map_upload', '/map/upload')
    config.add_route('map_activate', '/map/activate')

    config.add_route('mover_upload', '/mover/upload')

    config.add_route('release_upload', '/release/upload')

    config.add_route('environment_upload', '/environment/upload')
    config.add_route('environment_activate', '/environment/activate')

    config.add_route('socket.io', '/socket.io/*remaining')
    config.add_route('logger', '/logger')

    config.scan('webgnome_api.views', ignore=[
        #'webgnome_api.views.socket',
        #'webgnome_api.views.socket_logger',
        #'webgnome_api.views.socket_step'
    ])

    wapi =  config.make_wsgi_app()
    return wapi
예제 #3
0
def setup_json_serializer(config):
    import requests
    import webob

    # Monkey patch to use rapidjson
    webob.request.json = utils.json
    requests.models.json = utils.json

    # Override json renderer using rapidjson
    renderer = JSONRenderer(serializer=utils.json_serializer)
    config.add_renderer("ultrajson", renderer)  # See `kinto.core.Service`
예제 #4
0
def main(global_config, **settings):

    load_cors_origins(settings, 'cors_policy.origins')

    config = Configurator(settings=settings)

    config.add_request_method(get_json, 'json', reify=True)
    renderer = JSONRenderer(serializer=lambda v, **kw: ujson.dumps(v))
    config.add_renderer('json', renderer)

    config.include("cornice")
    # config.include('pyramid_mako')
    config.scan("oil_library_api.views")
    return config.make_wsgi_app()
예제 #5
0
def main(_global_config, **settings):

    print("*****running main of API****")
    load_cors_origins(settings, 'cors_policy.origins')

    config = Configurator(settings=settings)

    attach_pymongo(config, settings)

    config.add_request_method(get_json, 'json', reify=True)
    renderer = JSONRenderer(serializer=lambda v, **_kw: json.dumps(
        v, default=json_datetime_part, sort_keys=True, indent=4))

    config.add_renderer('json', renderer)

    config.include("cornice")
    # config.scan("adios_db_api.views")

    # Attempt to set up the rest by hand -- scanning is not working when
    # bundled by py2app
    print("adding all the API rest services")
    from .views import oil
    config.add_cornice_service(oil.oil_api)

    from .views.label import label_api
    config.add_cornice_service(label_api)

    from .views.product_types import product_types_api
    config.add_cornice_service(product_types_api)

    from .views.capabilities import capabilities_api
    config.add_cornice_service(capabilities_api)

    # from .views.query import query_api
    # config.add_cornice_service(query_api)

    user_docs_dir = settings.get('user_docs_dir')

    config.add_static_view(name='/docs',
                           path=user_docs_dir,
                           cache_max_age=12 * 3600)

    # add static file serving if we are running the standalone
    client_path = settings.get('client_path')
    if client_path:
        print("adding client code to serve:\n", client_path)
        if not os.path.isdir(client_path):
            raise ValueError(f"client path: {client_path} does not exist")

        # this would be cleaner, but couldn't get it to work with Ember
        config.add_static_view(name='/', path=client_path)

        # mike's suggestion for how to serve up the index.html page
        print("about to set up home view")

        def home(request):
            """serving up index.html"""
            return FileResponse(client_path + "/index.html", request)

        # this way has not been tested.
        config.add_route("home", "/")
        config.add_view(home, route_name="home")

        # attempt to put the client files in a sub-dir
        #  to avoid clashes with the API
        # config.add_static_view(name='client',
        #                        path=client_path)

    else:
        # serve up the basic hello message at the root
        print("no client_path: not serving any static files")
        config.add_route('home', '/')
        config.add_view(about, route_name='home')

    # setup the about endpoint
    config.add_route('about', '/about')
    config.add_view(about, route_name='about')
    config.add_notfound_view(default_not_found_response, append_slash=True)

    return config.make_wsgi_app()
예제 #6
0
    settings['py_gnome_semaphore'] = BoundedSemaphore(value=1)
    settings['objects'] = {}

    settings['uncertain_models'] = {}
    try:
        os.mkdir('ipc_files')
    except OSError, e:
        # it is ok if the folder already exists.
        if e.errno != 17:
            raise

    reconcile_directory_settings(settings)
    load_cors_origins(settings, 'cors_policy.origins')

    config = Configurator(settings=settings)

    config.add_request_method(get_json, 'json', reify=True)
    renderer = JSONRenderer(serializer=lambda v, **kw: ujson.dumps(v))
    config.add_renderer('json', renderer)
    config.add_tween('webgnome_api.tweens.PyGnomeSchemaTweenFactory')
    config.add_route("upload", "/upload")
    config.add_route("download", "/download")
    config.add_route("map_upload", "/map/upload")
    config.add_route("mover_upload", "/mover/upload")
    config.add_route("environment_upload", "/environment/upload")
    config.add_route("socket.io", "/socket.io/*remaining")

    config.scan('webgnome_api.views')

    return config.make_wsgi_app()