mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-05 10:58:07 +01:00
Add queries keyword argument to core.search
queries is a dict of optional http query parameters, which are passed to the makeurl call.
This commit is contained in:
parent
1524214060
commit
d401eb2c69
13
osc/core.py
13
osc/core.py
@ -6510,19 +6510,28 @@ def xpath_join(expr, new_expr, op='or', inner=False, nexpr_parentheses=False):
|
|||||||
new_expr = '(%s)' % new_expr
|
new_expr = '(%s)' % new_expr
|
||||||
return '%s %s %s' % (expr, op, new_expr)
|
return '%s %s %s' % (expr, op, new_expr)
|
||||||
|
|
||||||
def search(apiurl, **kwargs):
|
def search(apiurl, queries=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Perform a search request. The requests are constructed as follows:
|
Perform a search request. The requests are constructed as follows:
|
||||||
kwargs = {'kind1' => xpath1, 'kind2' => xpath2, ..., 'kindN' => xpathN}
|
kwargs = {'kind1' => xpath1, 'kind2' => xpath2, ..., 'kindN' => xpathN}
|
||||||
GET /search/kind1?match=xpath1
|
GET /search/kind1?match=xpath1
|
||||||
...
|
...
|
||||||
GET /search/kindN?match=xpathN
|
GET /search/kindN?match=xpathN
|
||||||
|
|
||||||
|
queries is a dict of optional http query parameters, which are passed
|
||||||
|
to the makeurl call, of the form
|
||||||
|
{kindI1: dict_or_list, ..., kindIL: dict_or_list},
|
||||||
|
where kind_i1 to kind_iL are keys of kwargs.
|
||||||
"""
|
"""
|
||||||
|
if queries is None:
|
||||||
|
queries = {}
|
||||||
res = {}
|
res = {}
|
||||||
for urlpath, xpath in kwargs.items():
|
for urlpath, xpath in kwargs.items():
|
||||||
path = [ 'search' ]
|
path = [ 'search' ]
|
||||||
path += urlpath.split('_') # FIXME: take underscores as path seperators. I see no other way atm to fix OBS api calls and not breaking osc api
|
path += urlpath.split('_') # FIXME: take underscores as path seperators. I see no other way atm to fix OBS api calls and not breaking osc api
|
||||||
u = makeurl(apiurl, path, ['match=%s' % quote_plus(xpath)])
|
query = queries.get(urlpath, {})
|
||||||
|
query['match'] = xpath
|
||||||
|
u = makeurl(apiurl, path, query)
|
||||||
f = http_GET(u)
|
f = http_GET(u)
|
||||||
res[urlpath] = ET.parse(f).getroot()
|
res[urlpath] = ET.parse(f).getroot()
|
||||||
return res
|
return res
|
||||||
|
Loading…
x
Reference in New Issue
Block a user