class UsersResource(AuthResource): implements(interface.IUsersResource) def __init__(self, service): AuthResource.__init__(self, service) self.user_service = IUserService(service) def getChild(self, path, request): return UserResource(path, self.service) def check_POST(self, authUser, request): return defer.succeed(authUser.login == "root") def auth_POST(self, authUser, request): def add_user(_): user = json.loads(request.content.read()) login = user["login"] secret = user["secret"] return self.user_service.add_user(login, secret) def complete(user): return defer.succeed({"id" : user.id, "login" : user.login}) d = defer.Deferred() d.addCallback(add_user) d.addCallback(complete) reactor.callLater(0, d.callback, None) return d def check_GET(self, authUser, request): return defer.succeed(True) def auth_GET(self, authUser, request): def get_users(_): lat1 = float(request.args["lat1"][0]) lat2 = float(request.args["lat2"][0]) lng1 = float(request.args["lng1"][0]) lng2 = float(request.args["lng2"][0]) return self.user_service.get_users(lat1, lng1, lat2, lng2) def complete(results): return defer.succeed(map(lambda u: {"id" : u.id, "login" : u.login}, results)) d = defer.Deferred() d.addCallback(get_users) d.addCallback(complete) reactor.callLater(0, d.callback, None) return d
class UserResourceBase(AuthResource): implements(interface.IUserResourceBase) def __init__(self, identity, service): AuthResource.__init__(self, service) self.user_service = IUserService(service) self.identity = identity def check(self, authUser, request): d = self.get_user(authUser, request) d.addCallback(lambda user: self.user_check(authUser, user, request)) return d def user_check(self, authUser, user, request): m_user_check = getattr(self, "user_check_" + request.method, None) if not m_user_check: return defer.succeed(True) return m_user_check(authUser, user, request) def auth(self, authUser, request): d = self.get_user(authUser, request) d.addCallback(lambda user: self.user_auth(authUser, user, request)) return d def user_auth(self, authUser, user, request): m_user_auth = getattr(self, "user_auth_" + request.method, None) if not m_user_auth: return defer.fail(Exception("Unsupported method")) return m_user_auth(authUser, user, request) def get_user(self, authUser, request): if self.identity is None: return defer.succeed(authUser) return self.user_service.get_user(self.identity)
def __init__(self, service): AuthResource.__init__(self, service) self.user_service = IUserService(service)
def __init__(self, identity, service): AuthResource.__init__(self, service) self.user_service = IUserService(service) self.identity = identity