04-ago: [bugfix] NAS Download Station error 105: _sid como query param en GET (DSM 7)
This commit is contained in:
@@ -73,11 +73,20 @@ def unrestrict_rd(uri):
|
||||
|
||||
|
||||
def _api(path, params, session=None):
|
||||
data = urllib.parse.urlencode(params).encode()
|
||||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||||
"""Llama a la API del NAS. DSM 7 exige GET con `_sid` en la query string.
|
||||
Si `session` viene como 'sid=<x>' se extrae y se anade a la query."""
|
||||
sid = None
|
||||
if session:
|
||||
headers["Cookie"] = session
|
||||
req = urllib.request.Request(f"{BASE_URL}{path}", data=data, headers=headers)
|
||||
if session.startswith("sid="):
|
||||
sid = session[4:]
|
||||
elif session.startswith("_sid="):
|
||||
sid = session[5:]
|
||||
if sid:
|
||||
params = dict(params)
|
||||
params["_sid"] = sid
|
||||
qs = urllib.parse.urlencode(params)
|
||||
req = urllib.request.Request(f"{BASE_URL}{path}?{qs}",
|
||||
headers={"Cookie": session or ""})
|
||||
with urllib.request.urlopen(req, timeout=20) as r:
|
||||
return json.loads(r.read().decode())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user