Change parsing cookies mechanism. (like Django instade of http.cookies.SimpleCookie)
This commit is contained in:
parent
9bdf7a9980
commit
ba1dbacd35
|
@ -1,8 +1,9 @@
|
|||
import sys
|
||||
import json
|
||||
import socket
|
||||
from cgi import parse_header
|
||||
from collections import namedtuple
|
||||
from http.cookies import SimpleCookie
|
||||
from http import cookies
|
||||
from httptools import parse_url
|
||||
from urllib.parse import parse_qs, urlunparse
|
||||
|
||||
|
@ -157,13 +158,17 @@ class Request(dict):
|
|||
def cookies(self):
|
||||
if self._cookies is None:
|
||||
cookie = self.headers.get('Cookie')
|
||||
self._cookies = {}
|
||||
if cookie is not None:
|
||||
cookies = SimpleCookie()
|
||||
cookies.load(cookie)
|
||||
self._cookies = {name: cookie.value
|
||||
for name, cookie in cookies.items()}
|
||||
else:
|
||||
self._cookies = {}
|
||||
for chunk in cookie.split(';'):
|
||||
if '=' in chunk:
|
||||
key, val = chunk.split('=', 1)
|
||||
else:
|
||||
key, val = '', chunk
|
||||
key, val = key.strip(), val.strip()
|
||||
if key or val:
|
||||
self._cookies[key] = cookies._unquote(val)
|
||||
|
||||
return self._cookies
|
||||
|
||||
@property
|
||||
|
@ -181,13 +186,22 @@ class Request(dict):
|
|||
@property
|
||||
def socket(self):
|
||||
if not hasattr(self, '_socket'):
|
||||
self._get_socket()
|
||||
self._get_address()
|
||||
return self._socket
|
||||
|
||||
def _get_address(self):
|
||||
self._socket = (self.transport.get_extra_info('peername') or
|
||||
(None, None))
|
||||
self._ip, self._port = self._socket
|
||||
sock = self.transport.get_extra_info('socket')
|
||||
|
||||
if sock.family == socket.AF_INET:
|
||||
self._socket = (self.transport.get_extra_info('peername') or
|
||||
(None, None))
|
||||
self._ip, self._port = self._socket
|
||||
elif sock.family == socket.AF_INET6:
|
||||
self._socket = (self.transport.get_extra_info('peername') or
|
||||
(None, None, None, None))
|
||||
self._ip, self._port, *_ = self._socket
|
||||
else:
|
||||
self._ip, self._port = (None, None)
|
||||
|
||||
@property
|
||||
def remote_addr(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user