123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- # -*- coding: utf-8 -*-
- import json
- from http import HTTPStatus
-
- from pyramid.view import view_config
- from pyramid.config import Configurator
- from wsgiref.simple_server import make_server
- import time
- import yaml
- from beaker.middleware import SessionMiddleware
-
- import hapic
- from example import HelloResponseSchema, HelloPathSchema, HelloJsonSchema, \
- ErrorResponseSchema, HelloQuerySchema
- from hapic.data import HapicData
-
- # hapic.global_exception_handler(UnAuthExc, StandardErrorSchema)
- # hapic.global_exception_handler(UnAuthExc2, StandardErrorSchema)
- # hapic.global_exception_handler(UnAuthExc3, StandardErrorSchema)
- # bottle.default_app.push(app)
-
- # session_opts = {
- # 'session.type': 'file',
- # 'session.data_dir': '/tmp',
- # 'session.cookie_expires': 3600,
- # 'session.auto': True
- # }
- # session_middleware = SessionMiddleware(
- # app,
- # session_opts,
- # environ_key='beaker.session',
- # key='beaker.session.id',
- # )
- # app = session_middleware.wrap_app
-
-
- def bob(f):
- def boby(*args, **kwargs):
- return f(*args, **kwargs)
- return boby
-
- class Controllers(object):
-
- @hapic.with_api_doc()
- # @hapic.ext.bottle.bottle_context()
- @hapic.handle_exception(ZeroDivisionError, http_code=HTTPStatus.BAD_REQUEST)
- @hapic.input_path(HelloPathSchema())
- @hapic.input_query(HelloQuerySchema())
- @hapic.output_body(HelloResponseSchema())
- def hello(self,context,request,hapic_data: HapicData):
- """
- my endpoint hello
- ---
- get:
- description: my description
- parameters:
- - in: "path"
- description: "hello"
- name: "name"
- type: "string"
- responses:
- 200:
- description: A pet to be returned
- schema: HelloResponseSchema
- """
- name = request.matchdict.get('name', None)
- if name == 'zero':
- raise ZeroDivisionError('Don\'t call him zero !')
-
- return {
- 'sentence': 'Hello !',
- 'name': name,
- }
-
-
- # @hapic.with_api_doc()
- # # @hapic.ext.bottle.bottle_context()
- # # @hapic.error_schema(ErrorResponseSchema())
- # #@hapic.input_path(HelloPathSchema())
- # #@hapic.input_body(HelloJsonSchema())
- # #@hapic.output_body(HelloResponseSchema())
- # @bob
- # def hello2(self, name: str, hapic_data: HapicData):
- # return {
- # 'sentence': 'Hello !',
- # 'name': name,
- # 'color': hapic_data.body.get('color'),
- # }
-
- # kwargs = {'validated_data': {'name': 'bob'}, 'name': 'bob'}
-
-
- # @view_config(renderer='json')
- # @hapic.with_api_doc()
- # # @hapic.ext.bottle.bottle_context()
- # # @hapic.error_schema(ErrorResponseSchema())
- # @hapic.input_path(HelloPathSchema())
- # @hapic.output_body(HelloResponseSchema())
- # def hello3(self, name: str):
- # return {
- # 'sentence': 'Hello !',
- # 'name': name,
- # }
-
- def bind(self, config):
- config.add_route('hello', '/hello/{name}', request_method='GET')
- #config.add_route('hello2', '/hello/{name}', request_method='POST')
- #config.add_route('hello3', '/hello/{name}', request_method='GET')
- config.add_view(self.hello, route_name='hello', renderer='json')
- #config.add_view(self.hello2, route_name='hello2')
- #config.add_view(self.hello3, route_name='hello3')
-
-
- with Configurator() as config:
- controllers = Controllers()
- controllers.bind(config)
- config.include('pyramid_debugtoolbar')
- app = config
-
-
-
-
- # time.sleep(1)
- # s = hapic.generate_doc(app)
- # ss = json.loads(json.dumps(s))
- # for path in ss['paths']:
- # for method in ss['paths'][path]:
- # for response_code in ss['paths'][path][method]['responses']:
- # ss['paths'][path][method]['responses'][int(response_code)] = ss['paths'][path][method]['responses'][response_code]
- # del ss['paths'][path][method]['responses'][int(response_code)]
- # print(yaml.dump(ss, default_flow_style=False))
- # time.sleep(1)
-
- hapic.set_context(hapic.ext.pyramid.PyramidContext())
- import pdb; pdb.set_trace()
- #print(json.dumps(hapic.generate_doc(app)))
- # app.run(host='localhost', port=8080, debug=True)
- server = make_server('0.0.0.0', 6543, app.make_wsgi_app())
- server.serve_forever()
|