Documentation |
Documentation -> Tutorials -> Presence -> Presence Server -> Xcap_client moduleTable of Content (hide) 1. Exported Parameters
2. Developer's GuideThis module represents an XCAP client interface for OpenSIPS with retrieving capabilities only. It is meant to be used by other OpenSIPS modules that use XCAP storage. Now this module is used by presence_xml and rls modules. Presence_xml and xcap_client interaction(when integrated_xcap_client parameter is not set) The API contains the following functions:
typedef char* (*xcap_get_elem_t)(xcap_get_req_t req, char** etag);
This function retrieves an element from the excap server( either a hole document or a node from the document.
typedef char* (*xcapGetNewDoc_t)(xcap_get_req_t req, str user, str domain);
This function is a request to fetch the document indicated in the request strucuture and handle its update. Calling this function will ensures that in the database table will always be the updated version of the document.
The argument of the two functions is a structure containing the request. It has the following fields:
The xcap_doc_sel_t has the following structure:
Example: For selecting a presence authorization rules document the strucuture is filed like this: xcap_doc_sel_t doc_sel; doc_sel.auid.s= "presence-rules"; doc_sel.auid.len= strlen("presence-rules"); doc_sel.doc_type= PRES_RULES; doc_sel.type= USERS_TYPE; doc_sel.xid= uri; doc_sel.filename.s= "index"; doc_sel.filename.len= 5; The xcap_node_sel_t structure that identifies a node from a document can be constructed using functions from the API:
typedef xcap_node_sel_t* (*xcap_nodeSel_init_t )(void);
typedef xcap_node_sel_t* (*xcap_nodeSel_add_step_t)(xcap_node_sel_t* curr_sel, str* name, str* namespace, int pos, attr_test_t* attr_test, str* extra_sel);
The attr_test in the parameters list is to be used in case an attribute test should be made to select the node. The definition of the structure is:
typedef struct att_test
{
str name;
str value;
}attr_test_t;
typedef xcap_node_sel_t* (*xcap_nodeSel_add_terminal_t)(xcap_node_sel_t* curr_sel, char* attr_sel, char* namespace_sel, char* extra_sel );
typedef void (*xcap_nodeSel_free_t)(xcap_node_sel_t* node);
There is also one function which allows registering a callback to be called by the module when a change occurs in a document:
3. Module ReadmeYou can read the modules's readme here . |