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)
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
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`
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()
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()
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()