PlexKodiConnect/resources/lib/websocket/_cookiejar.py

70 lines
2.3 KiB
Python
Raw Permalink Normal View History

2021-03-15 02:30:52 +11:00
"""
"""
"""
websocket - WebSocket client library for Python
Copyright (C) 2010 Hiroki Ohtani(liris)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
"""
2021-05-24 21:02:57 +10:00
import http.cookies
2021-03-15 02:30:52 +11:00
class SimpleCookieJar(object):
def __init__(self):
self.jar = dict()
def add(self, set_cookie):
if set_cookie:
2021-05-24 21:02:57 +10:00
simpleCookie = http.cookies.SimpleCookie(set_cookie)
2021-03-15 02:30:52 +11:00
for k, v in simpleCookie.items():
domain = v.get("domain")
if domain:
if not domain.startswith("."):
domain = "." + domain
2021-05-24 21:02:57 +10:00
cookie = self.jar.get(domain) if self.jar.get(domain) else http.cookies.SimpleCookie()
2021-03-15 02:30:52 +11:00
cookie.update(simpleCookie)
self.jar[domain.lower()] = cookie
def set(self, set_cookie):
if set_cookie:
2021-05-24 21:02:57 +10:00
simpleCookie = http.cookies.SimpleCookie(set_cookie)
2021-03-15 02:30:52 +11:00
for k, v in simpleCookie.items():
domain = v.get("domain")
if domain:
if not domain.startswith("."):
domain = "." + domain
self.jar[domain.lower()] = simpleCookie
def get(self, host):
if not host:
return ""
cookies = []
for domain, simpleCookie in self.jar.items():
host = host.lower()
if host.endswith(domain) or host == domain[1:]:
cookies.append(self.jar.get(domain))
2021-05-24 21:02:57 +10:00
return "; ".join(filter(
None, sorted(
["%s=%s" % (k, v.value) for cookie in filter(None, cookies) for k, v in cookie.items()]
)))