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
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
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)