Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 def __init__(self, service):
     AuthResource.__init__(self, service)
     self.user_service = IUserService(service)
Ejemplo n.º 4
0
 def __init__(self, identity, service):
     AuthResource.__init__(self, service)
     self.user_service = IUserService(service)
     self.identity = identity