Compare commits
1 Commits
bare-cooki
...
remove-get
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b692309c91 |
@@ -73,16 +73,12 @@ def parse_cookie(raw: str) -> Dict[str, List[str]]:
|
||||
cookies: Dict[str, List[str]] = {}
|
||||
|
||||
for token in raw.split(";"):
|
||||
name, sep, value = token.partition("=")
|
||||
name, __, value = token.partition("=")
|
||||
name = name.strip()
|
||||
value = value.strip()
|
||||
|
||||
# Support cookies =value or plain value with no name
|
||||
# https://github.com/httpwg/http-extensions/issues/159
|
||||
if not sep:
|
||||
if not name:
|
||||
continue # Empty value like ;; or a cookie header with no value
|
||||
name, value = "", name
|
||||
if not name:
|
||||
continue
|
||||
|
||||
if COOKIE_NAME_RESERVED_CHARS.search(name): # no cov
|
||||
continue
|
||||
@@ -153,13 +149,11 @@ class CookieRequestParameters(RequestParameters):
|
||||
except KeyError:
|
||||
return super().get(name, default)
|
||||
|
||||
def getlist(
|
||||
self, name: str, default: Optional[Any] = None
|
||||
) -> Optional[Any]:
|
||||
def getlist(self, name: str) -> list[Any]:
|
||||
try:
|
||||
return self._get_prefixed_cookie(name)
|
||||
except KeyError:
|
||||
return super().getlist(name, default)
|
||||
return super().getlist(name)
|
||||
|
||||
def _get_prefixed_cookie(self, name: str) -> Any:
|
||||
getitem = super().__getitem__
|
||||
|
||||
@@ -19,15 +19,14 @@ class RequestParameters(dict):
|
||||
return super().get(name, [default])[0]
|
||||
|
||||
def getlist(
|
||||
self, name: str, default: Optional[Any] = None
|
||||
) -> Optional[Any]:
|
||||
self, name: str
|
||||
) -> list[Any]:
|
||||
"""Return the entire list
|
||||
|
||||
Args:
|
||||
name (str): The name of the parameter
|
||||
default (Optional[Any], optional): The default value. Defaults to None.
|
||||
|
||||
Returns:
|
||||
Optional[Any]: The entire list
|
||||
list[Any]: The entire list of values or [] if not found
|
||||
""" # noqa: E501
|
||||
return super().get(name, default)
|
||||
return super().get(name) or []
|
||||
|
||||
@@ -11,20 +11,6 @@ from sanic.cookies.request import CookieRequestParameters
|
||||
from sanic.exceptions import ServerError
|
||||
from sanic.response import text
|
||||
from sanic.response.convenience import json
|
||||
from sanic.cookies.request import parse_cookie
|
||||
|
||||
def test_request_cookies():
|
||||
cdict = parse_cookie("foo=one; foo=two; abc = xyz;;bare;=bare2")
|
||||
assert cdict == {
|
||||
"foo": ["one", "two"],
|
||||
"abc": ["xyz"],
|
||||
"": ["bare", "bare2"],
|
||||
}
|
||||
c = CookieRequestParameters(cdict)
|
||||
assert c.getlist("foo") == ["one", "two"]
|
||||
assert c.getlist("abc") == ["xyz"]
|
||||
assert c.getlist("") == ["bare", "bare2"]
|
||||
assert c.getlist("bare") == None # [] might be sensible but we got None for now
|
||||
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
@@ -459,10 +445,10 @@ def test_cookie_accessors(app: Sanic):
|
||||
"four": request.cookies.get("four", "fallback"),
|
||||
},
|
||||
"getlist": {
|
||||
"one": request.cookies.getlist("one", ["fallback"]),
|
||||
"two": request.cookies.getlist("two", ["fallback"]),
|
||||
"three": request.cookies.getlist("three", ["fallback"]),
|
||||
"four": request.cookies.getlist("four", ["fallback"]),
|
||||
"one": request.cookies.getlist("one"),
|
||||
"two": request.cookies.getlist("two"),
|
||||
"three": request.cookies.getlist("three"),
|
||||
"four": request.cookies.getlist("four"),
|
||||
},
|
||||
"getattr": {
|
||||
"one": request.cookies.one,
|
||||
@@ -498,7 +484,7 @@ def test_cookie_accessors(app: Sanic):
|
||||
"one": ["1"],
|
||||
"two": ["2"],
|
||||
"three": ["3"],
|
||||
"four": ["fallback"],
|
||||
"four": [],
|
||||
},
|
||||
"getattr": {
|
||||
"one": "1",
|
||||
|
||||
Reference in New Issue
Block a user