# -*- coding: utf-8 -*- from __future__ import absolute_import import datetime import six import webob from pyramid.config import Configurator from pyramid.view import view_config @view_config(route_name='throw_400', renderer='json') def throw_error(request): request.response.status = webob.exc.HTTPBadRequest.code return dict(error=dict(details='Throwing error!')) @view_config(route_name='standard', renderer='json') def standard(request, path_arg): return { 'raw_response': 'foo', 'logging_info': {}, } @view_config(route_name='sample_nonstring', renderer='json') @view_config(route_name='get_with_non_string_query_args', renderer='json') @view_config(route_name='post_with_primitive_body', renderer='json') @view_config(route_name='sample_header', renderer='json') @view_config(route_name='sample_authentication', renderer='json') @view_config(route_name='sample_post', renderer='json') @view_config(route_name='post_with_form_params', renderer='json') @view_config(route_name='post_with_file_upload', renderer='json') def sample(request): if not request.registry.settings.get('skip_swagger_data_assert'): assert request.swagger_data return {} @view_config(route_name='echo_date_json_renderer', request_method='POST', renderer='json') @view_config(route_name='echo_date', request_method='POST', renderer='pyramid_swagger') def date_view(request): if '2.0' in request.registry.settings['pyramid_swagger.swagger_versions']: # Swagger 2.0 endpoint handling assert isinstance(request.swagger_data['body']['date'], datetime.date) else: assert isinstance(request.swagger_data['body']['date'], six.string_types) return request.swagger_data['body'] @view_config(route_name='post_endpoint_with_optional_body', request_method='POST', renderer='pyramid_swagger') @view_config(route_name='sample_no_response_schema', request_method='GET', renderer='pyramid_swagger') def post_endpoint_with_optional_body(request): return request.content_length @view_config(route_name='swagger_undefined', renderer='json') def swagger_undefined(request): return {} def main(global_config, **settings): """ Very basic pyramid app """ config = Configurator(settings=settings) config.include('pyramid_swagger') config.add_route( 'sample_nonstring', '/sample/nonstring/{int_arg}/{float_arg}/{boolean_arg}', ) config.add_route('standard', '/sample/{path_arg}/resource') config.add_route('get_with_non_string_query_args', '/get_with_non_string_query_args') config.add_route('post_with_primitive_body', '/post_with_primitive_body') config.add_route('post_with_form_params', '/post_with_form_params') config.add_route('post_with_file_upload', '/post_with_file_upload') config.add_route('sample_post', '/sample') config.include(include_samples, route_prefix='/sample') config.add_route('throw_400', '/throw_400') config.add_route('swagger_undefined', '/undefined/path') config.add_route('echo_date', '/echo_date') config.add_route('echo_date_json_renderer', '/echo_date_json_renderer') config.add_route('post_endpoint_with_optional_body', '/post_endpoint_with_optional_body') config.scan() return config.make_wsgi_app() def include_samples(config): config.add_route('sample_header', '/header') config.add_route('sample_authentication', '/authentication') config.add_route('sample_no_response_schema', '/no_response_schema')