|  | @@ -1,7 +1,4 @@
 | 
	
		
			
			| 1 | 1 |  # coding: utf-8
 | 
	
		
			
			| 2 |  | -import json
 | 
	
		
			
			| 3 |  | -import yaml
 | 
	
		
			
			| 4 |  | -
 | 
	
		
			
			| 5 | 2 |  from aiohttp import web
 | 
	
		
			
			| 6 | 3 |  from hapic import async as hapic
 | 
	
		
			
			| 7 | 4 |  from hapic import async as HapicData
 | 
	
	
		
			
			|  | @@ -10,35 +7,28 @@ import marshmallow
 | 
	
		
			
			| 10 | 7 |  from hapic.ext.aiohttp.context import AiohttpContext
 | 
	
		
			
			| 11 | 8 |  
 | 
	
		
			
			| 12 | 9 |  
 | 
	
		
			
			| 13 |  | -class HandleInputPath(marshmallow.Schema):
 | 
	
		
			
			|  | 10 | +class DisplayNameInputPathSchema(marshmallow.Schema):
 | 
	
		
			
			| 14 | 11 |      name = marshmallow.fields.String(
 | 
	
		
			
			| 15 | 12 |          required=False,
 | 
	
		
			
			| 16 | 13 |          allow_none=True,
 | 
	
		
			
			| 17 | 14 |      )
 | 
	
		
			
			| 18 | 15 |  
 | 
	
		
			
			| 19 | 16 |  
 | 
	
		
			
			| 20 |  | -class HandleInputBody(marshmallow.Schema):
 | 
	
		
			
			|  | 17 | +class DisplayBodyInputBodySchema(marshmallow.Schema):
 | 
	
		
			
			| 21 | 18 |      foo = marshmallow.fields.String(
 | 
	
		
			
			| 22 | 19 |          required=True,
 | 
	
		
			
			| 23 | 20 |      )
 | 
	
		
			
			| 24 | 21 |  
 | 
	
		
			
			| 25 | 22 |  
 | 
	
		
			
			| 26 |  | -class Handle2OutputBody(marshmallow.Schema):
 | 
	
		
			
			|  | 23 | +class DisplayBodyOutputBodySchema(marshmallow.Schema):
 | 
	
		
			
			| 27 | 24 |      data = marshmallow.fields.Dict(
 | 
	
		
			
			| 28 | 25 |          required=True,
 | 
	
		
			
			| 29 | 26 |      )
 | 
	
		
			
			| 30 | 27 |  
 | 
	
		
			
			| 31 | 28 |  
 | 
	
		
			
			| 32 |  | -class HandleOutputBody(marshmallow.Schema):
 | 
	
		
			
			| 33 |  | -    sentence = marshmallow.fields.String(
 | 
	
		
			
			| 34 |  | -        required=True,
 | 
	
		
			
			| 35 |  | -    )
 | 
	
		
			
			| 36 |  | -
 | 
	
		
			
			| 37 |  | -
 | 
	
		
			
			| 38 | 29 |  @hapic.with_api_doc()
 | 
	
		
			
			| 39 |  | -@hapic.input_path(HandleInputPath())
 | 
	
		
			
			| 40 |  | -# @hapic.output_body(HandleOutputBody())
 | 
	
		
			
			| 41 |  | -async def handle(request, hapic_data):
 | 
	
		
			
			|  | 30 | +@hapic.input_path(DisplayNameInputPathSchema())
 | 
	
		
			
			|  | 31 | +async def display_name(request, hapic_data):
 | 
	
		
			
			| 42 | 32 |      name = request.match_info.get('name', "Anonymous")
 | 
	
		
			
			| 43 | 33 |      text = "Hello, " + name
 | 
	
		
			
			| 44 | 34 |      return web.json_response({
 | 
	
	
		
			
			|  | @@ -47,9 +37,9 @@ async def handle(request, hapic_data):
 | 
	
		
			
			| 47 | 37 |  
 | 
	
		
			
			| 48 | 38 |  
 | 
	
		
			
			| 49 | 39 |  @hapic.with_api_doc()
 | 
	
		
			
			| 50 |  | -@hapic.input_body(HandleInputBody())
 | 
	
		
			
			| 51 |  | -@hapic.output_body(Handle2OutputBody())
 | 
	
		
			
			| 52 |  | -async def handle2(request, hapic_data: HapicData):
 | 
	
		
			
			|  | 40 | +@hapic.input_body(DisplayBodyInputBodySchema())
 | 
	
		
			
			|  | 41 | +@hapic.output_body(DisplayBodyOutputBodySchema())
 | 
	
		
			
			|  | 42 | +async def display_body(request, hapic_data: HapicData):
 | 
	
		
			
			| 53 | 43 |      data = hapic_data.body
 | 
	
		
			
			| 54 | 44 |      return {
 | 
	
		
			
			| 55 | 45 |          'data': data,
 | 
	
	
		
			
			|  | @@ -67,16 +57,19 @@ async def do_login(request):
 | 
	
		
			
			| 67 | 57 |  
 | 
	
		
			
			| 68 | 58 |  app = web.Application(debug=True)
 | 
	
		
			
			| 69 | 59 |  app.add_routes([
 | 
	
		
			
			| 70 |  | -    web.get('/n/', handle),
 | 
	
		
			
			| 71 |  | -    web.get('/n/{name}', handle),
 | 
	
		
			
			| 72 |  | -    web.post('/n/{name}', handle),
 | 
	
		
			
			| 73 |  | -    web.post('/b/', handle2),
 | 
	
		
			
			|  | 60 | +    web.get('/n/', display_name),
 | 
	
		
			
			|  | 61 | +    web.get('/n/{name}', display_name),
 | 
	
		
			
			|  | 62 | +    web.post('/n/{name}', display_name),
 | 
	
		
			
			|  | 63 | +    web.post('/b/', display_body),
 | 
	
		
			
			| 74 | 64 |      web.post('/login', do_login),
 | 
	
		
			
			| 75 | 65 |  ])
 | 
	
		
			
			| 76 | 66 |  
 | 
	
		
			
			| 77 | 67 |  
 | 
	
		
			
			| 78 | 68 |  hapic.set_context(AiohttpContext(app))
 | 
	
		
			
			| 79 | 69 |  
 | 
	
		
			
			|  | 70 | +
 | 
	
		
			
			|  | 71 | +# import json
 | 
	
		
			
			|  | 72 | +# import yaml
 | 
	
		
			
			| 80 | 73 |  # print(yaml.dump(
 | 
	
		
			
			| 81 | 74 |  #     json.loads(json.dumps(hapic.generate_doc())),
 | 
	
		
			
			| 82 | 75 |  #     default_flow_style=False,
 |