Source code for pyHTTPRequestRouter.Attributes

# EMACS settings: -*-  tab-width: 2; indent-tabs-mode: t -*-
# vim: tabstop=2:shiftwidth=2:noexpandtab
# kate: tab-width 2; replace-tabs off; indent-width 2;
# =============================================================================
#               _   _ _____ _____ ____  ____                            _   ____             _
#   _ __  _   _| | | |_   _|_   _|  _ \|  _ \ ___  __ _ _   _  ___  ___| |_|  _ \ ___  _   _| |_ ___ _ __
#  | '_ \| | | | |_| | | |   | | | |_) | |_) / _ \/ _` | | | |/ _ \/ __| __| |_) / _ \| | | | __/ _ \ '__|
#  | |_) | |_| |  _  | | |   | | |  __/|  _ <  __/ (_| | |_| |  __/\__ \ |_|  _ < (_) | |_| | ||  __/ |
#  | .__/ \__, |_| |_| |_|   |_| |_|   |_| \_\___|\__, |\__,_|\___||___/\__|_| \_\___/ \__,_|\__\___|_|
#  |_|    |___/                                      |_|
# =============================================================================
# Authors:						Patrick Lehmann
#
# Python module:	    pyAttributes for ReST APIs
#
# Description:
# ------------------------------------
#		TODO
#
# License:
# ============================================================================
# Copyright 2017-2019 Patrick Lehmann - Bötzingen, Germany
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#		http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
#
from pyAttributes     import Attribute, AttributeHelperMixin
from pyHTTPInterface  import HTTPMethods


__api__ = [
	'RoutingAttribute',
	'GETRoute',
	'POSTRoute',
	'PUTRoute',
	'DELETERoute'
]
__all__ = __api__


[docs]class RoutingAttribute(Attribute): _route = None def __init__(self, path, httpMethods : HTTPMethods): super().__init__() from . import Route self._route = Route(path, httpMethods, None) @property def Route(self): return self._route @property def Path(self): return self._route._path @property def HTTPMethods(self): return self._route._httpMethods
[docs]class GETRoute(RoutingAttribute): def __init__(self, path): super().__init__(path, HTTPMethods.GET)
[docs]class POSTRoute(RoutingAttribute): def __init__(self, path): super().__init__(path, HTTPMethods.POST)
[docs]class PUTRoute(RoutingAttribute): def __init__(self, path): super().__init__(path, HTTPMethods.PUT)
[docs]class DELETERoute(RoutingAttribute): def __init__(self, path): super().__init__(path, HTTPMethods.DELETE)
[docs]class ReSTAPIMixin(AttributeHelperMixin): __routes = None def __init__(self, **kwargs): super().__init__() self.__routes = [] for _, func in RoutingAttribute.GetMethods(self): for routeAttribute in RoutingAttribute.GetAttributes(func): self.__routes.append(routeAttribute.Route) @property def Routes(self): return self.__routes