| 2967 | /************************************************************************/ |
| 2968 | |
| 2969 | int msWCSGetCapabilities20(mapObj *map, cgiRequestObj *req, |
| 2970 | wcs20ParamsObjPtr params, owsRequestObj *ows_request) |
| 2971 | { |
| 2972 | xmlDocPtr psDoc = NULL; /* document pointer */ |
| 2973 | xmlNodePtr psRootNode, |
| 2974 | psOperationsNode, |
| 2975 | psNode; |
| 2976 | const char *updatesequence = NULL; |
| 2977 | xmlNsPtr psOwsNs = NULL, |
| 2978 | psXLinkNs = NULL, |
| 2979 | psWcsNs = NULL, |
| 2980 | psGmlNs = NULL; |
| 2981 | char *script_url=NULL, *script_url_encoded=NULL; |
| 2982 | int i; |
| 2983 | |
| 2984 | /* -------------------------------------------------------------------- */ |
| 2985 | /* Create document. */ |
| 2986 | /* -------------------------------------------------------------------- */ |
| 2987 | psDoc = xmlNewDoc(BAD_CAST "1.0"); |
| 2988 | |
| 2989 | psRootNode = xmlNewNode(NULL, BAD_CAST "Capabilities"); |
| 2990 | |
| 2991 | xmlDocSetRootElement(psDoc, psRootNode); |
| 2992 | |
| 2993 | /* -------------------------------------------------------------------- */ |
| 2994 | /* Name spaces */ |
| 2995 | /* -------------------------------------------------------------------- */ |
| 2996 | |
| 2997 | msWCSPrepareNamespaces20(psDoc, psRootNode, map); |
| 2998 | |
| 2999 | /* lookup namespaces */ |
| 3000 | psOwsNs = xmlSearchNs( psDoc, psRootNode, BAD_CAST MS_OWSCOMMON_OWS_NAMESPACE_PREFIX ); |
| 3001 | psWcsNs = xmlSearchNs( psDoc, psRootNode, BAD_CAST MS_OWSCOMMON_WCS_NAMESPACE_PREFIX ); |
| 3002 | psGmlNs = xmlSearchNs( psDoc, psRootNode, BAD_CAST MS_OWSCOMMON_GML_NAMESPACE_PREFIX ); |
| 3003 | psXLinkNs = xmlSearchNs( psDoc, psRootNode, BAD_CAST "xlink" ); |
| 3004 | |
| 3005 | xmlSetNs(psRootNode, psWcsNs); |
| 3006 | |
| 3007 | xmlNewProp(psRootNode, BAD_CAST "version", BAD_CAST params->version ); |
| 3008 | |
| 3009 | updatesequence = msOWSLookupMetadata(&(map->web.metadata), "CO", "updatesequence"); |
| 3010 | if (params->updatesequence != NULL) |
| 3011 | { |
| 3012 | i = msOWSNegotiateUpdateSequence(params->updatesequence, updatesequence); |
| 3013 | if (i == 0) /* current */ |
| 3014 | { |
| 3015 | msSetError(MS_WCSERR, "UPDATESEQUENCE parameter (%s) is equal to server (%s)", |
| 3016 | "msWCSGetCapabilities20()", params->updatesequence, updatesequence); |
| 3017 | return msWCSException(map, "updatesequence", |
| 3018 | "CurrentUpdateSequence", params->version); |
| 3019 | } |
| 3020 | if (i > 0) /* invalid */ |
| 3021 | { |
| 3022 | msSetError(MS_WCSERR, "UPDATESEQUENCE parameter (%s) is higher than server (%s)", |
| 3023 | "msWCSGetCapabilities20()", params->updatesequence, updatesequence); |
| 3024 | return msWCSException(map, "updatesequence", |
| 3025 | "InvalidUpdateSequence", params->version); |
| 3026 | } |
no test coverage detected