|
ZOO-Project
|
Go to the source code of this file.
Data Structures | |
| struct | cwlPart |
| Structure representing a single part of a multipart request. More... | |
Macros | |
| #define | CWL_MAX_PARTS 64 |
| #define | CWL_MAX_BODY_SIZE (16UL * 1024UL * 1024UL) |
| #define | CWL_MAX_HEADER_BLOCK 16384 |
| #define | CWL_MAX_BOUNDARY_LEN 70 /* RFC 2046 */ |
| #define | O_NOFOLLOW 0 |
Enumerations | |
| enum | cwlStatus { CWL_OK = 0, CWL_ERR_INVALID = 1, CWL_ERR_NOMEM = 2 } |
| Result of the parsing helpers. More... | |
Functions | |
| xmlXPathObjectPtr | extractFromDoc (xmlDocPtr, const char *) |
| Apply XPath Expression on XML document. More... | |
| int | appendMapsToMaps (maps **, maps *, maps *, elements *) |
| Create (or append to) an array valued maps value = "["",""]". More... | |
| void | ensureDecodedBase64 (maps **) |
| Make sure that each value encoded in base64 in a maps is decoded. More... | |
| int | kvpParseInputs (maps **, service *, map *, maps **, HINTERNET *) |
| Parse inputs provided as KVP and store them in a maps. More... | |
| int | xmlParseBoundingBox (maps **, map **, xmlDocPtr) |
| Parse a BoundingBoxData node. More... | |
| int | kvpParseOutputs (maps **, map *, maps **) |
| Parse outputs provided as KVP and store them in a maps. More... | |
| int | xmlParseInputs (maps **, service *, maps **, xmlDocPtr, xmlNodeSet *, HINTERNET *) |
| Parse inputs from XML nodes and store them in a maps. More... | |
| int | xmlParseOutputs (maps **, map **, maps **, xmlDocPtr, xmlNodePtr, bool) |
| Parse outputs from XML nodes and store them in a maps. More... | |
| int | xmlParseRequest (maps **, const char *, map **, service *, maps **, maps **, HINTERNET *) |
| Parse XML request and store information in maps. More... | |
| int | parseRequest (maps **, map **, service *, maps **, maps **, HINTERNET *) |
| Parse request and store information in maps. More... | |
| void | checkValidValue (map *, map **, const char *, const char **, int) |
| Verify if a parameter value is valid. More... | |
| int | validateRequest (maps **, service *, map *, maps **, maps **, HINTERNET *) |
| Ensure that each requested arguments are present in the request DataInputs and ResponseDocument / RawDataOutput. More... | |
| void | parseCookie (maps **, const char *) |
| Parse cookie contained in request headers. More... | |
| int | parseInputHttpRequests (maps *, maps *, HINTERNET *) |
| Parse all the http requests possibily attached to inputs and, add them to the request queue. More... | |
| char * | extractMimeParam (const char *contentType, const char *paramName) |
| Extract the value of a parameter from a header such as 'multipart/related; boundary="a;b"; start="<main@cwl>"'. More... | |
| int | handleCwlMultipartDeploy (maps *, const char *, size_t, const char *, const char *) |
| Handle the deployment of a CWL multipart request. More... | |
| struct cwlPart |
Structure representing a single part of a multipart request.
This structure holds metadata and content for each part of a multipart request. It is used when handling multipart requests, such as CWL multipart deploys. Each part contains its Content-ID, proposed relative path, MIME type, and the actual data. The data pointer points into the original body buffer and should not be freed separately. The length field indicates the size of the data buffer.
| Data Fields | ||
|---|---|---|
| char * | contentId | |
| char * | contentLocation | |
| char * | contentType | |
| const char * | data | |
| size_t | len | |
| #define CWL_MAX_BODY_SIZE (16UL * 1024UL * 1024UL) |
| #define CWL_MAX_BOUNDARY_LEN 70 /* RFC 2046 */ |
| #define CWL_MAX_HEADER_BLOCK 16384 |
| #define CWL_MAX_PARTS 64 |
| #define O_NOFOLLOW 0 |
| enum cwlStatus |
Create (or append to) an array valued maps value = "["",""]".
| ppmsConf | the conf maps containing the main.cfg settings |
| pmsOutput | the map to update |
| pmsInput | the map to append |
| peElem | the elements containing default definitions |
| void checkValidValue | ( | map * | request, |
| map ** | res, | ||
| const char * | toCheck, | ||
| const char ** | avalues, | ||
| int | mandatory | ||
| ) |
Verify if a parameter value is valid.
| request | the request map |
| res | the error map potentially generated |
| toCheck | the parameter to use |
| avalues | the acceptable values (or null if testing only for presence) |
| mandatory | verify the presence of the parameter if mandatory > 0 |
| void ensureDecodedBase64 | ( | maps ** | ppmsInput | ) |
Make sure that each value encoded in base64 in a maps is decoded.
| ppmsInput | the maps containing the values |
| xmlXPathObjectPtr extractFromDoc | ( | xmlDocPtr | doc, |
| const char * | pccSearch | ||
| ) |
Apply XPath Expression on XML document.
| doc | the XML Document |
| pccSearch | the XPath expression |
| char* extractMimeParam | ( | const char * | pccContentType, |
| const char * | pccParamName | ||
| ) |
Extract the value of a parameter from a header such as 'multipart/related; boundary="a;b"; start="<main@cwl>"'.
Handles unquoted values, quoted values containing ';' and backslash-escaped characters inside quoted values. The parameter name is matched exactly (case-insensitively). Angle brackets are NOT removed here.
| pccContentType | The content type header string. |
| pccParamName | The name of the parameter to extract. |
| int handleCwlMultipartDeploy | ( | maps * | pmsConf, |
| const char * | pccBody, | ||
| size_t | stBodyLen, | ||
| const char * | pccBoundary, | ||
| const char * | pccStartId | ||
| ) |
Handle the deployment of a CWL multipart request.
Writes every part under an exclusively created work directory and publishes the "cwl-parts" map and "main"/"workDir" in the configuration only once everything has been written successfully. Every error path goes through a single cleanup block.
Root document contract (RFC 2387):
Published in "cwl-parts": name (raw start value, "" if absent), path[i] and file[i] for each part, main (relative name of the root) and mainPath (absolute path of the root). Two parts resolving to the same path, or sharing the same Content-ID, are rejected.
| pmsConf | The configuration maps. |
| pccBody | The body of the multipart request. |
| stBodyLen | The length of the body. |
| pccBoundary | The boundary string for the multipart request. |
| pccStartId | The start parameter value (may be NULL). |
| int kvpParseInputs | ( | maps ** | pmsConf, |
| service * | s, | ||
| map * | request_inputs, | ||
| maps ** | request_output, | ||
| HINTERNET * | hInternet | ||
| ) |
Parse inputs provided as KVP and store them in a maps.
| pmsConf | the conf maps containing the main.cfg settings |
| s | the service |
| request_inputs | the map storing KVP raw value |
| request_output | the maps to store the KVP pairs |
| hInternet | the HINTERNET queue to add potential requests |
Parse outputs provided as KVP and store them in a maps.
| pmsConf | the conf maps containing the main.cfg settings |
| request_inputs | the map storing KVP raw value |
| request_output | the maps to store the KVP pairs |
Parsing outputs provided as KVP
Put each Output into the outputs_as_text array
| void parseCookie | ( | maps ** | conf, |
| const char * | cookie | ||
| ) |
Parse cookie contained in request headers.
| conf | the conf maps containinfg the main.cfg |
| cookie | the |
Parse all the http requests possibily attached to inputs and, add them to the request queue.
Add Reference and Order fields to the input's metadata map.
| conf | maps containing the main configuration file |
| inputs | maps containing all the inputs |
| hInternet | an HTINTERNET connection |
| int parseRequest | ( | maps ** | pmsConf, |
| map ** | request_inputs, | ||
| service * | s, | ||
| maps ** | inputs, | ||
| maps ** | outputs, | ||
| HINTERNET * | hInternet | ||
| ) |
Parse request and store information in maps.
| pmsConf | the conf maps containing the main.cfg settings |
| post | the string containing the XML request |
| request_inputs | the map storing KVP raw value |
| s | the service |
| inputs | the maps to store the KVP pairs |
| outputs | the maps to store the KVP pairs |
| hInternet | the HINTERNET queue to add potential requests |
| int validateRequest | ( | maps ** | pmsConf, |
| service * | s, | ||
| map * | original_request, | ||
| maps ** | request_inputs, | ||
| maps ** | request_outputs, | ||
| HINTERNET * | hInternet | ||
| ) |
Ensure that each requested arguments are present in the request DataInputs and ResponseDocument / RawDataOutput.
Potentially run http requests from the queue in parallel. For optional inputs add default values defined in the ZCFG file.
| pmsConf | |
| s | |
| original_request | |
| request_inputs | |
| request_outputs | |
| hInternet |
Parse a BoundingBoxData node.
http://schemas.opengis.net/ows/1.1.0/owsCommon.xsd: BoundingBoxType
A map to store boundingbox information will contain:
| pmsConf | the conf maps containing the main.cfg settings |
| request_inputs | the map storing KVP raw value |
| doc | the xmlDocPtr containing the BoudingoxData node |
| int xmlParseInputs | ( | maps ** | pmsConf, |
| service * | s, | ||
| maps ** | request_output, | ||
| xmlDocPtr | doc, | ||
| xmlNodeSet * | nodes, | ||
| HINTERNET * | hInternet | ||
| ) |
Parse inputs from XML nodes and store them in a maps.
| pmsConf | the conf maps containing the main.cfg settings |
| s | the service |
| request_output | the maps to store the KVP pairs |
| doc | the xmlDocPtr containing the original request |
| nodes | the input nodes array |
| hInternet | the HINTERNET queue to add potential requests |
| int xmlParseOutputs | ( | maps ** | pmsConf, |
| map ** | request_inputs, | ||
| maps ** | request_output, | ||
| xmlDocPtr | doc, | ||
| xmlNodePtr | cur, | ||
| bool | raw | ||
| ) |
Parse outputs from XML nodes and store them in a maps.
| pmsConf | the conf maps containing the main.cfg settings |
| request_inputs | the map storing KVP raw value |
| request_output | the maps to store the KVP pairs |
| doc | the xmlDocPtr containing the original request |
| cur | the xmlNodePtr corresponding to the ResponseDocument or RawDataOutput XML node |
| raw | true if the node is RawDataOutput, false in case of ResponseDocument |
| int xmlParseRequest | ( | maps ** | pmsConf, |
| const char * | post, | ||
| map ** | request_inputs, | ||
| service * | s, | ||
| maps ** | inputs, | ||
| maps ** | outputs, | ||
| HINTERNET * | hInternet | ||
| ) |
Parse XML request and store information in maps.
| pmsConf | the conf maps containing the main.cfg settings |
| post | the string containing the XML request |
| request_inputs | the map storing KVP raw value |
| s | the service |
| inputs | the maps to store the KVP pairs |
| outputs | the maps to store the KVP pairs |
| hInternet | the HINTERNET queue to add potential requests |
Extract Input nodes from the XML Request.
1.8.17