HTTPMethod enum (#2165)

* Add HTTP enum constants

* Tests

* Add some more string compat
This commit is contained in:
Adam Hopkins
2021-06-16 15:13:55 +03:00
committed by GitHub
parent 48f8b37b74
commit d964b552af
3 changed files with 56 additions and 2 deletions

View File

@@ -1,2 +1,28 @@
HTTP_METHODS = ("GET", "POST", "PUT", "HEAD", "OPTIONS", "PATCH", "DELETE")
from enum import Enum, auto
class HTTPMethod(str, Enum):
def _generate_next_value_(name, start, count, last_values):
return name.upper()
def __eq__(self, value: object) -> bool:
value = str(value).upper()
return super().__eq__(value)
def __hash__(self) -> int:
return hash(self.value)
def __str__(self) -> str:
return self.value
GET = auto()
POST = auto()
PUT = auto()
HEAD = auto()
OPTIONS = auto()
PATCH = auto()
DELETE = auto()
HTTP_METHODS = tuple(HTTPMethod.__members__.values())
DEFAULT_HTTP_CONTENT_TYPE = "application/octet-stream"

View File

@@ -109,7 +109,7 @@ class Router(BaseRouter):
params = dict(
path=uri,
handler=handler,
methods=methods,
methods=frozenset(map(str, methods)) if methods else None,
name=name,
strict=strict_slashes,
unquote=unquote,