コード例 #1
0
ファイル: route.py プロジェクト: zxy-zxy/hug
    def __call__(self, method_or_class=None, **kwargs):
        if not method_or_class and kwargs:
            return self.where(**kwargs)

        if isinstance(method_or_class, (MethodType, FunctionType)):
            routes = getattr(method_or_class, '_hug_http_routes', [])
            routes.append(self.route)
            method_or_class._hug_http_routes = routes
            return method_or_class

        instance = method_or_class
        if isinstance(method_or_class, type):
            instance = method_or_class()

        for argument in dir(instance):
            argument = getattr(instance, argument, None)

            http_routes = getattr(argument, '_hug_http_routes', ())
            for route in http_routes:
                http(**self.where(**route).route)(argument)

            cli_routes = getattr(argument, '_hug_cli_routes', ())
            for route in cli_routes:
                cli(**self.where(**route).route)(argument)

        return method_or_class
コード例 #2
0
ファイル: route.py プロジェクト: JavaScript-Resource/hug
        def decorator(class_definition):
            instance = class_definition
            if isinstance(class_definition, type):
                instance = class_definition()

            router = self.urls(urls if urls else "/{0}".format(instance.__class__.__name__.lower()), **route_data)
            for method in HTTP_METHODS:
                handler = getattr(instance, method.lower(), None)
                if handler:
                    routes = getattr(handler, '_hug_routes', None)
                    if routes:
                        for route in routes:
                            http(**router.accept(method).where(**route).route)(handler)
                    else:
                        http(**router.accept(method).route)(handler)
            return class_definition
コード例 #3
0
ファイル: route.py プロジェクト: JavaScript-Resource/hug
    def __call__(self, method_or_class):
        if isinstance(method_or_class, (MethodType, FunctionType)):
            routes = getattr(method_or_class, '_hug_routes', [])
            routes.append(self.route)
            method_or_class._hug_routes = routes
            return method_or_class

        instance = method_or_class
        if isinstance(method_or_class, type):
            instance = method_or_class()

        for argument in dir(instance):
            argument = getattr(instance, argument, None)
            routes = getattr(argument, '_hug_routes', None)
            if routes:
                for route in routes:
                    http(**self.where(**route).route)(argument)

        return method_or_class
コード例 #4
0
ファイル: route.py プロジェクト: wujm2007/hug
 def http(self, *args, **kwargs):
     """Starts the process of building a new HTTP route linked to this API instance"""
     kwargs['api'] = self.api
     return http(*args, **kwargs)
コード例 #5
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def trace(self, *args, **kwargs):
     """Builds a new TRACE HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("TRACE", )
     return http(*args, **kwargs)
コード例 #6
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def put_post(self, *args, **kwargs):
     """Builds a new PUT or POST HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("PUT", "POST")
     return http(*args, **kwargs)
コード例 #7
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def get(self, *args, **kwargs):
     """Builds a new GET HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('GET', )
     return http(*args, **kwargs)
コード例 #8
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def patch(self, *args, **kwargs):
     """Builds a new PATCH HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("PATCH", )
     return http(*args, **kwargs)
コード例 #9
0
ファイル: route.py プロジェクト: wujm2007/hug
 def get_post(self, *args, **kwargs):
     """Builds a new GET or POST HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('GET', 'POST')
     return http(*args, **kwargs)
コード例 #10
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def delete(self, *args, **kwargs):
     """Builds a new DELETE HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('DELETE', )
     return http(*args, **kwargs)
コード例 #11
0
ファイル: route.py プロジェクト: wujm2007/hug
 def head(self, *args, **kwargs):
     """Builds a new HEAD HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('HEAD', )
     return http(*args, **kwargs)
コード例 #12
0
ファイル: route.py プロジェクト: wujm2007/hug
 def patch(self, *args, **kwargs):
     """Builds a new PATCH HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('PATCH', )
     return http(*args, **kwargs)
コード例 #13
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def put_post(self, *args, **kwargs):
     """Builds a new PUT or POST HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('PUT', 'POST')
     return http(*args, **kwargs)
コード例 #14
0
ファイル: route.py プロジェクト: wujm2007/hug
 def delete(self, *args, **kwargs):
     """Builds a new DELETE HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('DELETE', )
     return http(*args, **kwargs)
コード例 #15
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def trace(self, *args, **kwargs):
     """Builds a new TRACE HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('TRACE', )
     return http(*args, **kwargs)
コード例 #16
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def patch(self, *args, **kwargs):
     """Builds a new PATCH HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('PATCH', )
     return http(*args, **kwargs)
コード例 #17
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def options(self, *args, **kwargs):
     """Builds a new OPTIONS HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('OPTIONS', )
     return http(*args, **kwargs)
コード例 #18
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def head(self, *args, **kwargs):
     """Builds a new HEAD HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('HEAD', )
     return http(*args, **kwargs)
コード例 #19
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def connect(self, *args, **kwargs):
     """Builds a new CONNECT HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('CONNECT', )
     return http(*args, **kwargs)
コード例 #20
0
ファイル: route.py プロジェクト: wujm2007/hug
 def connect(self, *args, **kwargs):
     """Builds a new CONNECT HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('CONNECT', )
     return http(*args, **kwargs)
コード例 #21
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def get(self, *args, **kwargs):
     """Builds a new GET HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("GET", )
     return http(*args, **kwargs)
コード例 #22
0
ファイル: route.py プロジェクト: wujm2007/hug
 def options(self, *args, **kwargs):
     """Builds a new OPTIONS HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('OPTIONS', )
     return http(*args, **kwargs)
コード例 #23
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def delete(self, *args, **kwargs):
     """Builds a new DELETE HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("DELETE", )
     return http(*args, **kwargs)
コード例 #24
0
ファイル: route.py プロジェクト: wujm2007/hug
 def trace(self, *args, **kwargs):
     """Builds a new TRACE HTTP route that is registered to this API"""
     kwargs['api'] = self.api
     kwargs['accept'] = ('TRACE', )
     return http(*args, **kwargs)
コード例 #25
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def connect(self, *args, **kwargs):
     """Builds a new CONNECT HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("CONNECT", )
     return http(*args, **kwargs)
コード例 #26
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def head(self, *args, **kwargs):
     """Builds a new HEAD HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("HEAD", )
     return http(*args, **kwargs)
コード例 #27
0
ファイル: route.py プロジェクト: Dantara/DMD_Assignment
 def options(self, *args, **kwargs):
     """Builds a new OPTIONS HTTP route that is registered to this API"""
     kwargs["api"] = self.api
     kwargs["accept"] = ("OPTIONS", )
     return http(*args, **kwargs)
コード例 #28
0
ファイル: route.py プロジェクト: JavaScript-Resource/hug
 def urls(self, *kargs, **kwargs):
     """Starts the process of building a new URL route linked to this API instance"""
     kwargs['api'] = self.api
     return http(*kargs, **kwargs)
コード例 #29
0
ファイル: route.py プロジェクト: zxy-zxy/hug
 def http(self, *args, **kwargs):
     """Starts the process of building a new HTTP route linked to this API instance"""
     kwargs['api'] = self.api
     return http(*args, **kwargs)