Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wps getcapabilities offered operations urls #525

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions autotest/autotest_services/tests/wps/test_v10.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
XML_CONTENT_TYPE = "application/xml; charset=utf-8"

#===============================================================================
# WCS 1.0 GetCapabilities
# WPS 1.0 GetCapabilities
#===============================================================================

class WPS10GetCapabilitiesValidTestCase(ContentTypeCheckMixIn, WPS10CapabilitiesMixIn, testbase.XMLTestCase):
Expand All @@ -71,7 +71,7 @@ def getRequest(self):


#===============================================================================
# WCS 1.0 DescribeProcess
# WPS 1.0 DescribeProcess
#===============================================================================


Expand Down Expand Up @@ -130,7 +130,7 @@ def testValidate(self, XMLData=None):
#TODO: Error - invalid process identifier

#===============================================================================
# WCS 1.0 Execute - Minimal Process
# WPS 1.0 Execute - Minimal Process
#===============================================================================

class WPS10ExecuteTC06MinimalValidProcess(ContentTypeCheckMixIn, WPS10ExecuteMixIn, testbase.XMLTestCase):
Expand All @@ -152,7 +152,7 @@ def getRequest(self):
return (params, "kvp")

#===============================================================================
# WCS 1.0 Execute - Literal Data Tests
# WPS 1.0 Execute - Literal Data Tests
#===============================================================================

class WPS10ExecuteTestCase(ContentTypeCheckMixIn, WPS10ExecuteMixIn, testbase.XMLTestCase):
Expand Down Expand Up @@ -291,7 +291,7 @@ def getRequest(self):
#TODO: Error - invalid input (out of the allowed range)

#===============================================================================
# WCS 1.0 Execute - Bounding Box Data Tests
# WPS 1.0 Execute - Bounding Box Data Tests
#===============================================================================

class WPS10ExecuteBoundingBoxTestCase(ContentTypeCheckMixIn, WPS10ExecuteMixIn, testbase.XMLTestCase):
Expand Down Expand Up @@ -365,7 +365,7 @@ def getRequest(self):
#TODO: Error - invalid output CRS

#===============================================================================
# WCS 1.0 Execute - Complex Data Tests (text-based payload)
# WPS 1.0 Execute - Complex Data Tests (text-based payload)
#===============================================================================

class WPS10ExecuteComplexDataTextTestCase(ContentTypeCheckMixIn, WPS10ExecuteMixIn, testbase.XMLTestCase):
Expand Down Expand Up @@ -566,7 +566,7 @@ def getRequest(self):
return (params, "kvp")

#===============================================================================
# WCS 1.0 Execute - Complex Data Tests (binary payload)
# WPS 1.0 Execute - Complex Data Tests (binary payload)
#===============================================================================

class WPS10ExecuteComplexDataPNGBase64FileTestCase(ContentTypeCheckMixIn, WPS10ExecuteMixIn, testbase.XMLTestCase):
Expand Down
9 changes: 5 additions & 4 deletions eoxserver/services/ows/wps/v10/encoders/capabilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,15 @@
from eoxserver.services.ows.wps.v10.util import (
OWS, WPS, ns_xlink, ns_xml,
)
from eoxserver.services.urls import get_http_service_url
from .process_description import encode_process_brief
from .base import WPS10BaseXMLEncoder


class WPS10CapabilitiesXMLEncoder(WPS10BaseXMLEncoder):
""" WPS 1.0 Capabilities XML response encoder. """
@staticmethod
def encode_capabilities(processes):
def encode_capabilities(processes, request):
""" Encode Capabilities XML document. """
conf = CapabilitiesConfigReader(get_eoxserver_config())

Expand Down Expand Up @@ -92,7 +93,7 @@ def encode_capabilities(processes):
)
)
),
_encode_operations_metadata(conf),
_encode_operations_metadata(request),
WPS("ProcessOfferings", *process_offerings),
WPS("Languages",
WPS("Default",
Expand All @@ -112,7 +113,7 @@ def encode_capabilities(processes):
)


def _encode_operations_metadata(conf):
def _encode_operations_metadata(request):
""" Encode OperationsMetadata XML element. """
versions = ("1.0.0",)
get_handlers = filter_handlers(
Expand All @@ -124,7 +125,7 @@ def _encode_operations_metadata(conf):
all_handlers = sorted(
set(get_handlers + post_handlers), key=lambda h: h.request
)
url = conf.http_service_url
url = get_http_service_url(request)
return OWS("OperationsMetadata", *[
OWS("Operation",
OWS("DCP",
Expand Down
2 changes: 1 addition & 1 deletion eoxserver/services/ows/wps/v10/getcapabilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class WPS10GetCapabilitiesHandler(object):
def handle(self, request):
""" Handle HTTP request. """
encoder = WPS10CapabilitiesXMLEncoder()
return encoder.serialize(encoder.encode_capabilities(get_processes()))
return encoder.serialize(encoder.encode_capabilities(get_processes(), request))


class WPS10GetCapabilitiesKVPDecoder(kvp.Decoder):
Expand Down
8 changes: 5 additions & 3 deletions eoxserver/services/ows/wps/v20/getcapabilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@

from typing import List

from django.core.handlers.wsgi import WSGIRequest
from eoxserver.core.config import get_eoxserver_config
from eoxserver.services.ows.common.config import CapabilitiesConfigReader
from eoxserver.services.ows.dispatch import filter_handlers
from eoxserver.services.ows.wps.util import get_processes
from eoxserver.services.ows.wps.interfaces import ProcessInterface
from eoxserver.services.ows.wps.v20.common import encode_process_summary
from eoxserver.services.urls import get_http_service_url

from ows.wps.v20 import encoders
from ows.wps.types import ProcessSummary, ServiceCapabilities
Expand Down Expand Up @@ -81,7 +83,7 @@ def handle(self, request):
hours_of_service=conf.hours_of_service,
contact_instructions=conf.contact_instructions,
role=conf.role,
operations=self._encode_operations_metadata(conf),
operations=self._encode_operations_metadata(request),
process_summaries=encode_process_summaries(),
)

Expand All @@ -90,7 +92,7 @@ def handle(self, request):
return result.value, result.content_type

def _encode_operations_metadata(
self, conf: CapabilitiesConfigReader
self, request: WSGIRequest
) -> List[Operation]:
get_handlers = filter_handlers(
service="WPS", versions=self.versions, method="GET"
Expand All @@ -101,7 +103,7 @@ def _encode_operations_metadata(
all_handlers = sorted(
set(get_handlers + post_handlers), key=lambda h: h.request
)
url = conf.http_service_url
url = get_http_service_url(request)
return [
Operation(
name=handler.request,
Expand Down