25 #ifndef ZOO_RESPONSE_PRINT_H
26 #define ZOO_RESPONSE_PRINT_H 1
33 #define DEFAULT_SERVICE_URL "http://www.zoo-project.org/"
45 #define _(String) dgettext ("zoo-kernel",String)
49 #define _ss(String) dgettext ("zoo-services",String)
54 #define ZOO_LOCK_CREATE_FAILED -4
58 #define ZOO_LOCK_ACQUIRE_FAILED -5
62 #define ZOO_LOCK_RELEASE_FAILED -6
65 #include <sys/types.h>
87 #include <openssl/sha.h>
88 #include <openssl/md5.h>
89 #include <openssl/hmac.h>
90 #include <openssl/evp.h>
91 #include <openssl/bio.h>
92 #include <openssl/buffer.h>
94 #include <libxml/parser.h>
95 #include <libxml/xpath.h>
104 #define ZOO_NS_MAX 10
108 #define ZOO_DOC_MAX 20
148 {
"1.0.0",
"http://www.opengis.net/ows/1.1",
"http://www.opengis.net/wps/1.0.0",
"http://schemas.opengis.net/wps/1.0.0",
"%s %s/wps%s_response.xsd",
"http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd",
"1.1.0"},
149 {
"2.0.0",
"http://www.opengis.net/ows/2.0",
"http://www.opengis.net/wps/2.0",
"http://schemas.opengis.net/wps/2.0",
"http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd",
"http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd",
"2.0.2",
"http://www.opengis.net/spec/wps/2.0/def/process-profile/"},
159 {
"GetCapabilities",
"DescribeProcess",
"Execute",NULL},
160 {
"GetCapabilities",
"DescribeProcess",
"Execute",
"GetStatus",
"GetResult",
"Dismiss",NULL},
174 {
"ProcessOfferings",
"ProcessDescriptions",
"ExecuteResponse",NULL},
175 {
"Contents",
"ProcessOfferings",
"Result",NULL}
184 "processVersion",
"1",
185 "storeSupported",
"true",
186 "statusSupported",
"true"
190 "processVersion",
"1.0.0",
191 "jobControlOptions",
"sync-execute async-execute dismiss",
192 "outputTransmission",
"value reference"
199 "500 Not Implemented",
200 "OperationNotSupported",
206 "MissingParameterValue"
207 "InvalidParameterValue",
208 "InvalidUpdateSequence",
209 "OptionNotSupported",
210 "VersionNegotiationFailed",
223 "500 Not Implemented",
234 int zooXmlAddNs(xmlNodePtr,
const char*,
const char*);
259 void addMetadata(
map*,xmlDocPtr,xmlNodePtr,xmlNsPtr,xmlNsPtr,
int);
#define ZOO_NS_MAX
Maximum number of XML namespaces.
Definition: response_print.h:104
xmlNodePtr printWPSHeader(xmlDocPtr, maps *, const char *, const char *, const char *, int)
Generate a WPS header.
Definition: response_print.c:343
void zooXmlCleanupDocs()
Free allocated memort to store XML documents.
Definition: response_print.c:292
static const char * schemas[2][8]
Definitions of schemas depending on the WPS version.
Definition: response_print.h:147
int zooXmlSearchForNs(const char *)
Search for an existing XML namespace in usedNS.
Definition: response_print.c:214
static xmlDocPtr iDocs[ZOO_DOC_MAX]
Array of xmlDocPtr storing XML docs.
Definition: response_print.h:130
void printIOType(xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, xmlNsPtr, elements *, maps *, const char *, int)
Generate XML nodes describing inputs or outputs metadata.
Definition: response_print.c:2262
map * parseBoundingBox(const char *)
Parse a BoundingBox string.
Definition: response_print.c:3134
void outputResponse(service *, maps *, maps *, map *, int, maps *, int)
Generate the output response (RawDataOutput or ResponseDocument)
Definition: response_print.c:2850
int errorException(maps *, const char *, const char *, const char *)
Print an OWS ExceptionReport.
Definition: response_print.c:2720
void printDescribeProcessForProcess(registry *, maps *, void *, void *, service *)
Generate a ProcessDescription node for a servie and add it to a given node.
Definition: response_print.c:1069
static int nbNs
Number of XML namespaces.
Definition: response_print.h:126
const char * produceStatusString(maps *, map *)
Produce the status string used in HTTP headers.
Definition: response_print.c:2542
static xmlNsPtr usedNs[ZOO_NS_MAX]
Array of xmlNsPtr storing all used XML namespace.
Definition: response_print.h:118
void zooXmlCleanupNs()
Free allocated memory to store used XML namespace.
Definition: response_print.c:258
static int nbSupportedRequests
Definitions of support requests (depending on the WPS version)
Definition: response_print.h:154
void printGetCapabilitiesForProcess(registry *, maps *, void *, void *, service *)
Generate a wps:Process node for a servie and add it to a given node.
Definition: response_print.c:706
void addLangAttr(xmlNodePtr, maps *)
Add a land attribute to a XML node.
Definition: response_print.c:170
static int nbDocs
Number of XML docs.
Definition: response_print.h:134
void addAdditionalParameters(map *, xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, int)
Add AdditionalParameters nodes to any existing node.
Definition: response_print.c:911
void printFullDescription(xmlDocPtr, int, elements *, const char *, xmlNsPtr, xmlNsPtr, xmlNodePtr, int, int, const map *)
Generate the required XML tree for the detailled metadata information of inputs or outputs...
Definition: response_print.c:1188
int checkForSoapEnvelope(xmlDocPtr)
int zooXmlAddNs(xmlNodePtr, const char *, const char *)
Add an XML namespace to the usedNS if it was not already used.
Definition: response_print.c:233
static const char * requests[2][7]
Definitions of requests depending on the WPS version.
Definition: response_print.h:158
void printBoundingBoxDocument(maps *, maps *, FILE *)
Print an ows:BoundingBox XML document.
Definition: response_print.c:3187
linked list of map pointer
Definition: main_conf_read.y:292
static const char * capabilities[2][7]
Name and corresponding attributes depending on the WPS version.
Definition: response_print.h:181
void printOutputDefinitions(xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, elements *, maps *, const char *)
Print a XML document.
Definition: response_print.c:2218
void printHeaders(maps *)
Print the HTTP headers based on a map.
Definition: response_print.c:89
void addMetadata(map *, xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, int)
Add a Metadata node to any existing node.
Definition: response_print.c:824
static int nbReqJob
Definitions requests requiring jobid (only for WPS version 2.0.0)
Definition: response_print.h:169
KVP linked list.
Definition: service.h:244
static char wpsStatus[3][11]
Definitions of acceptable final status.
Definition: response_print.h:139
void printBoundingBox(xmlNsPtr, xmlNodePtr, map *)
Create required XML nodes for boundingbox and update the current XML node.
Definition: response_print.c:3082
void printDescription(xmlNodePtr, xmlNsPtr, const char *, map *, int)
Create XML node with basic ows metadata information (Identifier,Title,Abstract)
Definition: response_print.c:2509
static char * SERVICE_URL
Global char* to store the serverAddress value of the [main] section.
Definition: response_print.h:113
char * produceFileUrl(service *, maps *, maps *, const char *, int)
Produce a copy file and the corresponding url in case it is required Please, free the returned ressou...
Definition: response_print.c:2746
Metadata information about a full Service.
Definition: main_conf_read.y:329
void printProcessResponse(maps *, map *, int, service *, const char *, int, maps *, maps *)
Generate a wps:Execute XML document.
Definition: response_print.c:1865
xmlNodePtr soapEnvelope(maps *, xmlNodePtr)
Generate a SOAP Envelope node when required (if the isSoap key of the [main] section is set to true)...
Definition: response_print.c:309
Profile registry.
Definition: main_conf_read.y:349
void printDocument(maps *, xmlDocPtr, int)
Print a XML document.
Definition: response_print.c:2183
#define ZOO_DOC_MAX
Maximum number of XML docs.
Definition: response_print.h:108
void printExceptionReportResponse(maps *, map *)
Print an OWS ExceptionReport or exception.yaml Document and HTTP headers (when required) depending on...
Definition: response_print.c:2622
void printSessionHeaders(maps *)
Print the Set-Cookie header if necessary (conf["lenv"]["cookie"]) and save the session file...
Definition: response_print.c:109
xmlNodePtr printGetCapabilitiesHeader(xmlDocPtr, maps *, const char *)
Generate a Capabilities header.
Definition: response_print.c:441
Metadata information about input or output.
Definition: main_conf_read.y:314
static const char *const aapccStatusCodes[][8]
Definition: response_print.h:197
xmlNodePtr createExceptionReportNode(maps *, map *, int)
Create an OWS ExceptionReport Node.
Definition: response_print.c:2641
static int nbReqIdentifier
Definitions requests requiring identifier (depending on the WPS version)
Definition: response_print.h:165
static char * nsName[ZOO_NS_MAX]
Array storing names of the used XML namespace.
Definition: response_print.h:122
void printStatusInfo(maps *, map *, char *)
Print a StatusInfo XML document.
Definition: response_print.c:3251
int zooXmlAddDoc(xmlNodePtr, const char *, const char *)
static const char * root_nodes[2][4]
Definitions of root node for response depending on the request and the WPS version.
Definition: response_print.h:173
void * printRawdataOutput(maps *, maps *)
Print one outputs as raw.
Definition: response_print.c:3025