Exemple #1
0
 def __init__(self,services=(),schema=None,filters=()):
     '''
     Constructor
     '''
     self.services = services
     self.__router = RequestRouter(self,schema,filters)
     Resource.__init__(self)
Exemple #2
0
 def __init__(self,services=(),schema=None,filters=()):
     '''
     Constructor
     '''
     self.services = services
     self.__router = RequestRouter(self,schema,filters)
     Resource.__init__(self)
 def __init__(self, restServiceContainer, schema=None, filters=()):
     RequestRouter.__init__(self, restServiceContainer, schema, filters)
     self._decoder = json.JSONDecoder(object_pairs_hook=decode_dict)
 def __init__(self, restServiceContainer, schema=None, filters=()):
     RequestRouter.__init__(self, restServiceContainer, schema, filters)
     self._decoder = json.JSONDecoder(object_pairs_hook=decode_dict)
Exemple #5
0
class RESTResource(Resource):
    '''
    Main resource responsible for routing REST requests to the implementing methods
    '''
    isLeaf = True
    implements(IRESTResource)
    
    def __init__(self,services=(),schema=None,filters=()):
        '''
        Constructor
        '''
        self.services = services
        self.__router = RequestRouter(self,schema,filters)
        Resource.__init__(self)

    def render_GET(self,request):
        """ Handles all GET requests """
        return self.__renderUrl(request)
    
    def render_POST(self,request):
        """ Handles all POST requests"""
        return self.__renderUrl(request)
    
    def render_PUT(self,request):
        """ Handles all PUT requests"""
        return self.__renderUrl(request)
    
    def render_DELETE(self,request):
        """ Handles all DELETE requests"""
        return self.__renderUrl(request)
    
    def __renderUrl(self,request):
        try:
            val = self.__router.getResponse(request)

            # return can be Deferred or Response
            if isinstance(val,Deferred):
                val.addCallback(self.__finishRequest,request)
                return NOT_DONE_YET
            elif isinstance(val,Response):
                self.__applyResponse(request, val.code, val.headers)
                return val.entity
            else:
                raise RuntimeError("Unexpected return type from request router %s" % val)
        except Exception as ex:
            self.__applyResponse(request, 500, None)
            return str(ex)
        
    def __finishRequest(self,response,request):
        if not request.finished:
            self.__applyResponse(request, response.code,response.headers)
            request.write(response.entity)
            request.finish()
        
    def __applyResponse(self,request,code,headers={"content-type":MediaType.TEXT_PLAIN}):
        request.setResponseCode(code)
        if headers != None:
            for header,value in headers.iteritems():
                request.setHeader(header, value)
                
    def run(self,port=8080):
        """Shortcut for running app within Twisted reactor"""
        factory = Site(self)
        reactor.listenTCP(port, factory)    #@UndefinedVariable
        reactor.run()                       #@UndefinedVariable
Exemple #6
0
class RESTResource(Resource):
    '''
    Main resource responsible for routing REST requests to the implementing methods
    '''
    isLeaf = True
    implements(IRESTResource)

    def __init__(self,services=(),schema=None,filters=()):
        '''
        Constructor
        '''
        self.services = services
        self.__router = RequestRouter(self,schema,filters)
        Resource.__init__(self)

    def render_GET(self,request):
        """ Handles all GET requests """
        return self.__renderUrl(request)

    def render_POST(self,request):
        """ Handles all POST requests"""
        return self.__renderUrl(request)

    def render_PUT(self,request):
        """ Handles all PUT requests"""
        return self.__renderUrl(request)

    def render_DELETE(self,request):
        """ Handles all DELETE requests"""
        return self.__renderUrl(request)

    def __renderUrl(self,request):
        try:
            val = self.__router.getResponse(request)

            # return can be Deferred or Response
            if isinstance(val,Deferred):
                val.addCallback(self.__finishRequest,request)
                return NOT_DONE_YET
            elif isinstance(val,Response):
                self.__applyResponse(request, val.code, val.headers)
                return val.entity
            else:
                raise RuntimeError("Unexpected return type from request router %s" % val)
        except Exception as ex:
            self.__applyResponse(request, 500, None)
            return str(ex)

    def __finishRequest(self,response,request):
        if not request.finished:
            self.__applyResponse(request, response.code,response.headers)
            request.write(bytes(response.entity))
            request.finish()

    def __applyResponse(self,request,code,headers={"content-type":MediaType.TEXT_PLAIN}):
        if code is not None:
            request.setResponseCode(code)
        if headers != None:
            for header,value in headers.iteritems():
                request.setHeader(header, value)

    def run(self,port=8080):
        """Shortcut for running app within Twisted reactor"""
        factory = Site(self)
        reactor.listenTCP(port, factory)    #@UndefinedVariable
        reactor.run()                       #@UndefinedVariable
Exemple #7
0
 def __init__(self,schema=None):
     '''
     Constructor
     '''
     self.__router = RequestRouter(self,schema)
     Resource.__init__(self)