04-ago: [bugfix] NAS Download Station error 105: _sid como query param en GET (DSM 7)

This commit is contained in:
juanjo
2026-08-04 00:19:12 +02:00
parent 6c87887c99
commit b2094ddb18

View File

@@ -73,11 +73,20 @@ def unrestrict_rd(uri):
def _api(path, params, session=None): def _api(path, params, session=None):
data = urllib.parse.urlencode(params).encode() """Llama a la API del NAS. DSM 7 exige GET con `_sid` en la query string.
headers = {"Content-Type": "application/x-www-form-urlencoded"} Si `session` viene como 'sid=<x>' se extrae y se anade a la query."""
sid = None
if session: if session:
headers["Cookie"] = session if session.startswith("sid="):
req = urllib.request.Request(f"{BASE_URL}{path}", data=data, headers=headers) 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: with urllib.request.urlopen(req, timeout=20) as r:
return json.loads(r.read().decode()) return json.loads(r.read().decode())