# # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import pecan from pecan import request from pecan import rest from wsme import types as wtypes from apigateway.api import expose class User(wtypes.Base): id = int user_id = wtypes.text name = wtypes.text email = wtypes.text class Users(wtypes.Base): users = [User] class UserController(rest.RestController): def __init__(self, user_id): self.user_id = int(user_id) @expose.expose(User) def get(self): user_info = { 'id': self.user_id, 'name': 'parser', } return User(**user_info) @expose.expose(User, body=User) def put(self, user): user_info = { 'id': self.user_id, 'name': user.name, } return User(**user_info) @expose.expose() def delete(self): print('Delete user_id: %s' % self.user_id) class UsersController(rest.RestController): @pecan.expose() def _lookup(self, user_id, *remainder): return UserController(user_id), remainder @expose.expose(Users) def get(self): db_conn = request.db_conn users = db_conn.list_users() users_list = [] for user in users: u = User() u.id = user.id u.user_id = user.user_id u.name = user.name u.email = user.email users_list.append(u) return Users(users=users_list) @expose.expose(None, body=User, status_code=201) def post(self, user): print(user)