diff --git a/pyoos/collectors/ioos/swe_sos.py b/pyoos/collectors/ioos/swe_sos.py index beda4fb..f1d1938 100644 --- a/pyoos/collectors/ioos/swe_sos.py +++ b/pyoos/collectors/ioos/swe_sos.py @@ -40,8 +40,9 @@ def metadata_plus_exceptions(self, output_format=None, feature_name_callback=Non """ Gets SensorML objects for all procedures in your filtered features. - Include any errors returned from SOS DescribeSensor request in a second return value - dictionary object + Return two dictionaries for service responses keyed by 'feature': + responses: values are SOS DescribeSensor response text + response_failures: values are exception text content furnished from ServiceException, ExceptionReport You should override the default output_format for servers that do not respond properly. @@ -50,7 +51,7 @@ def metadata_plus_exceptions(self, output_format=None, feature_name_callback=Non if output_format is None: output_format = 'text/xml; subtype="sensorML/1.0.1/profiles/ioos_sos/1.0"' - responses = [] + responses = {} response_failures = {} if self.features is not None: for feature in self.features: @@ -58,7 +59,7 @@ def metadata_plus_exceptions(self, output_format=None, feature_name_callback=Non ds_kwargs.update({'outputFormat': output_format, 'procedure' : callback(feature)}) try: - responses.append(SensorML(self.server.describe_sensor(**ds_kwargs))) + responses[feature] = (SensorML(self.server.describe_sensor(**ds_kwargs))) except (ServiceException, ExceptionReport) as e: response_failures[feature] = str(e)