MCPcopy Index your code
hub / github.com/MapServer/MapServer / msSOSDispatch

Function msSOSDispatch

mapogcsos.c:2851–2936  ·  view source on GitHub ↗

** msSOSDispatch() is the entry point for SOS requests. ** - If this is a valid request then it is processed and MS_SUCCESS is returned ** on success, or MS_FAILURE on failure. */

Source from the content-addressed store, hash-verified

2849** on success, or MS_FAILURE on failure.
2850*/
2851int msSOSDispatch(mapObj *map, cgiRequestObj *req, owsRequestObj *ows_request) {
2852#if defined(USE_SOS_SVR) && defined(USE_LIBXML2)
2853 int returnvalue = MS_DONE;
2854 sosParamsObj *paramsObj = (sosParamsObj *)calloc(1, sizeof(sosParamsObj));
2855
2856 if (msSOSParseRequest(map, req, paramsObj) == MS_FAILURE)
2857 return MS_FAILURE;
2858
2859 /* SERVICE must be specified and be SOS */
2860 if (paramsObj->pszService && strcasecmp(paramsObj->pszService, "SOS") == 0) { /* this is an SOS request */
2861 if (!paramsObj->pszRequest) {
2862 msSetError(MS_SOSERR, "Missing REQUEST Parameter", "msSOSDispatch()");
2863 msSOSFreeParamsObj(paramsObj);
2864 free(paramsObj);
2865 paramsObj = NULL;
2866 return msSOSException(map, "request", "MissingParameterValue");
2867 }
2868
2869 msOWSRequestLayersEnabled(map, "S", paramsObj->pszRequest, ows_request);
2870 if (ows_request->numlayers == 0)
2871 {
2872 msSetError(MS_SOSERR, "SOS request not enabled. Check sos/ows_enable_request settings.", "msSOSDispatch()");
2873 msSOSFreeParamsObj(paramsObj);
2874 free(paramsObj);
2875 paramsObj = NULL;
2876 return msSOSException(map, "request", "InvalidParameterValue");
2877 }
2878
2879 if (strcasecmp(paramsObj->pszRequest, "GetCapabilities") == 0) {
2880 returnvalue = msSOSGetCapabilities(map, paramsObj, req, ows_request);
2881 msSOSFreeParamsObj(paramsObj);
2882 free(paramsObj);
2883 paramsObj = NULL;
2884 return returnvalue;
2885 }
2886
2887 else if (strcasecmp(paramsObj->pszRequest, "DescribeSensor") == 0 ||
2888 strcasecmp(paramsObj->pszRequest, "GetObservation") == 0 ||
2889 strcasecmp(paramsObj->pszRequest, "DescribeObservationType") == 0
2890 ) {
2891 /* check version */
2892 if (!paramsObj->pszVersion) {
2893 msSetError(MS_SOSERR, "Missing VERSION parameter", "msSOSDispatch()");
2894 msSOSFreeParamsObj(paramsObj);
2895 free(paramsObj);
2896 paramsObj = NULL;
2897 return msSOSException(map, "version", "MissingParameterValue");
2898 }
2899
2900 if (msOWSParseVersionString(paramsObj->pszVersion) != OWS_1_0_0) {
2901 msSetError(MS_SOSERR, "VERSION %s not supported. Supported versions are: %s.", "msSOSDispatch()", paramsObj->pszVersion, pszSOSVersion);
2902 msSOSFreeParamsObj(paramsObj);
2903 free(paramsObj);
2904 paramsObj = NULL;
2905 return msSOSException(map, "version", "InvalidParameterValue");
2906 }
2907
2908 if (strcasecmp(paramsObj->pszRequest, "DescribeSensor") == 0)

Callers 1

msOWSDispatchFunction · 0.85

Calls 11

msSOSParseRequestFunction · 0.85
strcasecmpFunction · 0.85
msSetErrorFunction · 0.85
msSOSFreeParamsObjFunction · 0.85
msSOSExceptionFunction · 0.85
msSOSGetCapabilitiesFunction · 0.85
msOWSParseVersionStringFunction · 0.85
msSOSDescribeSensorFunction · 0.85
msSOSGetObservationFunction · 0.85

Tested by

no test coverage detected