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

Function msWCSGetCapabilities20

mapwcs20.c:2969–3149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2967/************************************************************************/
2968
2969int 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 }

Callers 1

msWCSDispatch20Function · 0.85

Calls 15

msWCSPrepareNamespaces20Function · 0.85
msOWSLookupMetadataFunction · 0.85
msSetErrorFunction · 0.85
msWCSExceptionFunction · 0.85
msOWSGetOnlineResourceFunction · 0.85
msEncodeHTMLEntitiesFunction · 0.85

Tested by

no test coverage detected