@@ -62,13 +62,15 @@ def __init__(self, processes: Sequence = [], cfgfiles=None, preprocessors: Optio
62
62
if not LOGGER .handlers :
63
63
LOGGER .addHandler (logging .NullHandler ())
64
64
65
- def get_status (self , wps_request , uuid ):
65
+ def get_status (self , http_request ):
66
66
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" )
69
69
except Exception :
70
70
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 )
72
74
73
75
def get_capabilities (self , wps_request , uuid ):
74
76
return CapabilitiesResponse (wps_request , uuid , version = wps_request .version , processes = self .processes )
@@ -168,39 +170,44 @@ def call(self, http_request):
168
170
LOGGER .debug ('Setting PYWPS_CFG to {}' .format (environ_cfg ))
169
171
os .environ ['PYWPS_CFG' ] = environ_cfg
170
172
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" :
178
174
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 )
197
176
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 )
201
179
raise e
202
180
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 ))
204
211
205
212
except NoApplicableCode as e :
206
213
return e
0 commit comments