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):
|
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())
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user