mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
index query limit: ensure 'limit' is correctly applied to XmlQueryIndexSource, fixes ukwa/ukwa-pywb#49 (#523)
This commit is contained in:
parent
30680803e8
commit
0be84520ed
@ -243,6 +243,10 @@ class XmlQueryIndexSource(BaseIndexSource):
|
||||
raise BadRequestException('matchType={0} is not supported'.format(matchType=matchType))
|
||||
|
||||
try:
|
||||
limit = params.get('limit')
|
||||
if limit:
|
||||
query = 'limit: {0} '.format(limit) + query
|
||||
|
||||
# OpenSearch API requires double-escaping
|
||||
# TODO: add option to not double escape if needed
|
||||
query_url = self.query_api_url + '?q=' + quote_plus(query + quote_plus(url))
|
||||
|
@ -9,9 +9,14 @@ from mock import patch
|
||||
import pytest
|
||||
|
||||
|
||||
query_url = None
|
||||
|
||||
|
||||
# ============================================================================
|
||||
def mock_get(self, url):
|
||||
string = ''
|
||||
global query_url
|
||||
query_url = url
|
||||
if quote_plus(XmlQueryIndexSource.EXACT_QUERY) in url:
|
||||
if quote_plus(quote_plus('http://example.com/some/path')) in url:
|
||||
string = URL_RESPONSE_2
|
||||
@ -65,12 +70,14 @@ class TestXmlQueryIndexSource(BaseTestClass):
|
||||
|
||||
@patch('pywb.warcserver.index.indexsource.requests.sessions.Session.get', mock_get)
|
||||
def test_exact_query(self):
|
||||
res, errs = self.do_query({'url': 'http://example.com/'})
|
||||
res, errs = self.do_query({'url': 'http://example.com/', 'limit': 100})
|
||||
|
||||
expected = """\
|
||||
com,example)/ 20180112200243 example.warc.gz
|
||||
com,example)/ 20180216200300 example.warc.gz"""
|
||||
assert(key_ts_res(res) == expected)
|
||||
assert(errs == {})
|
||||
assert query_url == 'http://localhost:8080/path?q=limit%3A+100+type%3Aurlquery+url%3Ahttp%253A%252F%252Fexample.com%252F'
|
||||
|
||||
|
||||
@patch('pywb.warcserver.index.indexsource.requests.sessions.Session.get', mock_get)
|
||||
@ -82,6 +89,8 @@ com,example)/some/path 20180216200300 example.warc.gz"""
|
||||
assert(key_ts_res(res) == expected)
|
||||
assert(errs == {})
|
||||
|
||||
assert query_url == 'http://localhost:8080/path?q=type%3Aurlquery+url%3Ahttp%253A%252F%252Fexample.com%252Fsome%252Fpath'
|
||||
|
||||
|
||||
@patch('pywb.warcserver.index.indexsource.requests.sessions.Session.get', mock_get)
|
||||
def test_prefix_query(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user