diff --git a/pycsw/server.py b/pycsw/server.py index 917525240..00bc49782 100644 --- a/pycsw/server.py +++ b/pycsw/server.py @@ -34,7 +34,7 @@ import logging import os -from urllib.parse import parse_qsl, splitquery, urlparse +from urllib.parse import parse_qsl, urlparse from io import StringIO import sys from time import time @@ -239,7 +239,7 @@ def dispatch_wsgi(self): LOGGER.debug('Looks like an OpenSearch URL template') query_part = self.request.split('?', 1)[-1] else: - query_part = splitquery(self.request)[-1] + query_part = urlparse(self.request).query self.kvp = dict(parse_qsl(query_part, keep_blank_values=True)) except AttributeError as err: LOGGER.exception('Could not parse query string') diff --git a/tests/functionaltests/suites/csw30/get/requests.txt b/tests/functionaltests/suites/csw30/get/requests.txt index f4f21c1f8..332c44510 100644 --- a/tests/functionaltests/suites/csw30/get/requests.txt +++ b/tests/functionaltests/suites/csw30/get/requests.txt @@ -1,4 +1,4 @@ -GetCapabilities-base-url,PYCSW_SERVER?config=tests/suites/csw30/default.yml +GetCapabilities-base-url,config=tests/suites/csw30/default.yml GetCapabilities-no-version,service=CSW&request=GetCapabilities GetCapabilities,service=CSW&version=3.0.0&request=GetCapabilities Exception-invalid-request,service=CSW&version=3.0.0&request=GetCapabilities-foo @@ -14,23 +14,23 @@ Exception-GetRepositoryItem-notfound,service=CSW&version=3.0.0&request=GetReposi 002258f0-627f-457f-b2ad-025777c77ac8,mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities 045c600d-973d-41eb-9f60-eba1b717b720,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= 0bbcf862-5211-4351-9988-63f8bec49c98,elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -0bdf8457-971e-4ed1-be4a-5feca4dcd8fa,PYCSW_SERVER?config=tests/suites/csw30/default.yml +0bdf8457-971e-4ed1-be4a-5feca4dcd8fa,config=tests/suites/csw30/default.yml 0d8bbdec-0846-42ca-8dc8-b7f4cba41d67,elementName=tns:title&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(tns%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 0e1dca37-477a-4060-99fe-7799b52d656c,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= 13c87956-51a4-4780-a8e9-6e0b5c0bb473,elementSetName=full&maxRecords=20&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 151d982f-ebd3-4cb2-b507-a667713a1e92,acceptFormats=model/x3d%2Bxml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW 1869e495-1a61-4713-8285-76d1336ee1a6,acceptVersions=3.0.0&request=GetCapabilities 1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6,request=GetRecordById&service=CSW&version=3.0.0 -22f44168-2ccf-4801-ad96-204212566d56,PYCSW_SERVER?config=tests/suites/csw30/default.yml +22f44168-2ccf-4801-ad96-204212566d56,config=tests/suites/csw30/default.yml 2499a9c9-8d33-449c-bc92-d494adfcc84d,acceptVersions=3.0.0§ions=All&request=GetCapabilities&service=CSW 27f4f39c-d92a-4e3c-b961-c6aa8c24e513,acceptFormats=application/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW 28e569df-8596-4128-8d9a-29ad03138915,id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2&request=GetRecordById&service=CSW&version=3.0.0 -2b06a5c8-0df2-4af1-8d2e-a425de11c845,PYCSW_SERVER?config=tests/suites/csw30/default.yml +2b06a5c8-0df2-4af1-8d2e-a425de11c845,config=tests/suites/csw30/default.yml 2ba1418a-444d-4cce-9cfe-4c94efcf8b55,maxRecords=2&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= 3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4,elementSetName=brief&request=GetRecords&service=CSW&typeNames=tns:Record&namespace=xmlns(tns%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 405e1ff1-5c75-4846-a28b-cfaff2a6921a,elementSetName=summary&recordIds=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -43cd6471-6ac7-45bd-8ff9-148cb2de9a52,PYCSW_SERVER?config=tests/suites/csw30/default.yml +43cd6471-6ac7-45bd-8ff9-148cb2de9a52,config=tests/suites/csw30/default.yml 4566d2ec-1283-4a02-baed-a74fc5b47e37,acceptVersions=3.0.0§ions=ServiceIdentification&request=GetCapabilities&service=CSW 461bd4c5-6623-490d-9036-d91a2201e87b,acceptVersions=3.0.0§ions=Filter_Capabilities&request=GetCapabilities&service=CSW 5496894a-3877-4f62-a20b-5d7126f94925,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= @@ -41,12 +41,12 @@ Exception-GetRepositoryItem-notfound,service=CSW&version=3.0.0&request=GetReposi 60e6af95-d5fc-465a-82e2-fd2e6d85e4af,request=GetRecords&service=CSW&typeNames=UnknownType&version=3.0.0 62ad94c2-b558-4265-a427-23d6677975d6,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a 6a5e247b-0961-4b8a-a0d6-35a491d9cfe7,elementSetName=undefined-view&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -6a9d0558-9d87-495b-b999-b49a3ef1cf99,PYCSW_SERVER?config=tests/suites/csw30/default.yml +6a9d0558-9d87-495b-b999-b49a3ef1cf99,config=tests/suites/csw30/default.yml 6bd790c9-6019-4652-9c91-330a894d6700,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= 6e9cba43-5e27-415d-adbd-a92851c2c173,acceptVersions=3.0.0&request=GetCapabilities&service=CSW 7630d230-e142-4a09-accf-f091000b90cd,id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493&request=GetRecordById&service=CSW&version=3.0.0 7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf,acceptFormats=text/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW -8025978e-1a35-4d70-80c2-e8329e0c7864,PYCSW_SERVER?config=tests/suites/csw30/default.yml +8025978e-1a35-4d70-80c2-e8329e0c7864,config=tests/suites/csw30/default.yml 8184ae4f-536d-4978-8b28-ad703be96967,elementSetName=brief&bbox=44.79,-6.17,68.41,17.92,urn:ogc:def:crs:EPSG::4326&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 88f63a89-664f-4315-b4f8-04a0b33803a7,maxRecords=15&elementSetName=summary&q=Mauris&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 8987f8f0-4d93-4481-968c-a2ccbd6b8be2,id=urn:example:1461546298217&request=GetRecordById&service=CSW&version=3.0.0 @@ -76,7 +76,7 @@ dc246fb8-5af5-4fda-82bb-c18b3ecd439c,mode=opensearch&service=CSW&version=3.0.0&r de016645-6d5c-4855-943c-2db07ae9f49a,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=urn%3Auuid%3A94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 dff3ec6b-bb2d-4887-bd17-8fcf15def042,elementSetName=summary&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b,id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&elementSetName=brief&request=GetRecordById&service=CSW&version=3.0.0 -e67ca935-d65d-4d8c-8302-1405333dded0,PYCSW_SERVER?config=tests/suites/csw30/default.yml +e67ca935-d65d-4d8c-8302-1405333dded0,config=tests/suites/csw30/default.yml e7704509-3441-458f-8ef0-e333c6b6043f,elementName=ns1:subject&elementSetName=brief&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(ns1%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 f1223a49-6d08-44ff-97fe-4c32cbbfad82,elementSetName=summary&maxRecords=0&q=titles&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18,elementSetName=full&outputFormat=text/example&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 diff --git a/tests/functionaltests/suites/harvesting/get/requests.txt b/tests/functionaltests/suites/harvesting/get/requests.txt index 837bdb467..adf76f17f 100644 --- a/tests/functionaltests/suites/harvesting/get/requests.txt +++ b/tests/functionaltests/suites/harvesting/get/requests.txt @@ -1,5 +1,5 @@ -Exception-Harvest-missing-resourcetype,PYCSW_SERVER?config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest -Exception-Harvest-missing-source,PYCSW_SERVER?config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms -Exception-Harvest-invalid-resourcetype,PYCSW_SERVER?config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw -Exception-Harvest-waf-no-records-found,PYCSW_SERVER?config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org -Exception-Harvest-waf-bad-value,PYCSW_SERVER?config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue +Exception-Harvest-missing-resourcetype,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest +Exception-Harvest-missing-source,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms +Exception-Harvest-invalid-resourcetype,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw +Exception-Harvest-waf-no-records-found,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org +Exception-Harvest-waf-bad-value,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue