Try to fetch the element as deleted if initial access failed
The reference to the object might be already deleted by when the request is failing. plus setting deleted=0 is rejected by the API. So try with deleted=1 if and only if the previous access failed.
This commit is contained in:
parent
dc0f33354e
commit
c9e07e536f
26
lib/obs.py
26
lib/obs.py
@ -148,12 +148,28 @@ class OBS:
|
|||||||
]
|
]
|
||||||
|
|
||||||
def _download(self, project, package, name, revision):
|
def _download(self, project, package, name, revision):
|
||||||
|
# the object might be deleted but we can only pass deleted=1
|
||||||
|
# if it is actually deleted
|
||||||
|
deleted = 0
|
||||||
|
while deleted < 2:
|
||||||
|
url = osc.core.makeurl(
|
||||||
|
self.url,
|
||||||
|
["source", project, package, urllib.parse.quote(name)],
|
||||||
|
{"rev": revision, "expand": 1, "deleted": deleted if deleted else ()},
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
osc.core.http_request("HEAD", url)
|
||||||
|
break
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
deleted += 1
|
||||||
|
|
||||||
url = osc.core.makeurl(
|
url = osc.core.makeurl(
|
||||||
self.url,
|
self.url,
|
||||||
["source", project, package, urllib.parse.quote(name)],
|
["source", project, package, urllib.parse.quote(name)],
|
||||||
{"rev": revision, "expand": 1},
|
{"rev": revision, "expand": 1, "deleted": 1 if deleted else ()},
|
||||||
)
|
)
|
||||||
return osc.core.http_GET(url)
|
return osc.core.http_request("GET", url)
|
||||||
|
|
||||||
def download(
|
def download(
|
||||||
self,
|
self,
|
||||||
|
Loading…
Reference in New Issue
Block a user