@@ -62,13 +62,15 @@ def __init__(self, processes: Sequence = [], cfgfiles=None, preprocessors: Optio
6262 if not LOGGER .handlers :
6363 LOGGER .addHandler (logging .NullHandler ())
6464
65- def get_status (self , wps_request , uuid ):
65+ def get_status (self , http_request ):
6666 try :
67- _ , mimetype = get_response_type (wps_request . http_request .accept_mimetypes ,
68- wps_request . default_mimetype )
67+ _ , mimetype = get_response_type (http_request .accept_mimetypes ,
68+ "text/xml" )
6969 except Exception :
7070 mimetype = get_default_response_mimetype ()
71- return StatusResponse (wps_request .version , wps_request .requested_status_uuid , mimetype )
71+ from urllib .parse import parse_qs
72+ request = parse_qs (http_request .environ ["QUERY_STRING" ])
73+ return StatusResponse (request .get ("version" , ["1.0.0" ])[0 ], request ["uuid" ][0 ], mimetype )
7274
7375 def get_capabilities (self , wps_request , uuid ):
7476 return CapabilitiesResponse (wps_request , uuid , version = wps_request .version , processes = self .processes )
@@ -168,39 +170,44 @@ def call(self, http_request):
168170 LOGGER .debug ('Setting PYWPS_CFG to {}' .format (environ_cfg ))
169171 os .environ ['PYWPS_CFG' ] = environ_cfg
170172
171- wps_request = WPSRequest (http_request , self .preprocessors )
172- LOGGER .info ('Request: {}' .format (wps_request .operation ))
173- if wps_request .operation in ['getcapabilities' ,
174- 'describeprocess' ,
175- 'execute' ,
176- 'status' ]:
177- log_request (request_uuid , wps_request )
173+ if http_request .environ ["PATH_INFO" ] == "/status" :
178174 try :
179- response = None
180- if wps_request .operation == 'getcapabilities' :
181- response = self .get_capabilities (wps_request , request_uuid )
182- response ._update_status (WPS_STATUS .SUCCEEDED , '' , 100 )
183-
184- elif wps_request .operation == 'describeprocess' :
185- response = self .describe (wps_request , request_uuid , wps_request .identifiers )
186- response ._update_status (WPS_STATUS .SUCCEEDED , '' , 100 )
187-
188- elif wps_request .operation == 'execute' :
189- response = self .execute (
190- wps_request .identifier ,
191- wps_request ,
192- request_uuid
193- )
194- elif wps_request .operation == 'status' :
195- response = self .get_status (wps_request , request_uuid )
196- return response
175+ return self .get_status (http_request )
197176 except Exception as e :
198- # This ensure that logged request get terminated in case of exception while the request is not
199- # accepted
200- store_status (request_uuid , WPS_STATUS .FAILED , 'Request rejected due to exception' , 100 )
177+ store_status (request_uuid , WPS_STATUS .FAILED ,
178+ 'Request rejected due to exception' , 100 )
201179 raise e
202180 else :
203- raise RuntimeError ("Unknown operation {}" .format (wps_request .operation ))
181+ wps_request = WPSRequest (http_request , self .preprocessors )
182+ LOGGER .info ('Request: {}' .format (wps_request .operation ))
183+ if wps_request .operation in ['getcapabilities' ,
184+ 'describeprocess' ,
185+ 'execute' ]:
186+ log_request (request_uuid , wps_request )
187+ try :
188+ response = None
189+ if wps_request .operation == 'getcapabilities' :
190+ response = self .get_capabilities (wps_request , request_uuid )
191+ response ._update_status (WPS_STATUS .SUCCEEDED , '' , 100 )
192+
193+ elif wps_request .operation == 'describeprocess' :
194+ response = self .describe (wps_request , request_uuid , wps_request .identifiers )
195+ response ._update_status (WPS_STATUS .SUCCEEDED , '' , 100 )
196+
197+ elif wps_request .operation == 'execute' :
198+ response = self .execute (
199+ wps_request .identifier ,
200+ wps_request ,
201+ request_uuid
202+ )
203+ return response
204+ except Exception as e :
205+ # This ensure that logged request get terminated in case of exception while the request is not
206+ # accepted
207+ store_status (request_uuid , WPS_STATUS .FAILED , 'Request rejected due to exception' , 100 )
208+ raise e
209+ else :
210+ raise RuntimeError ("Unknown operation {}" .format (wps_request .operation ))
204211
205212 except NoApplicableCode as e :
206213 return e
0 commit comments