diff --git a/trunk/tinyXCAP/src/txc.c b/trunk/tinyXCAP/src/txc.c index 8d830a8d..dc97e63b 100644 --- a/trunk/tinyXCAP/src/txc.c +++ b/trunk/tinyXCAP/src/txc.c @@ -49,18 +49,32 @@ * - @ref txc_xcap_caps_page * - @ref txc_rlist_page * - @ref txc_rls_page +* - @ref txc_ietf_pres_rules_page +* - @ref txc_oma_pres_rules_page +* - @ref txc_ietf_directory_page +* - @ref txc_oma_directory_page +* - @ref txc_gsma_rcs_page +* - @ref txc_oma_prescont_page * * @par Compliance * -* - RFC 4825 - The Extensible Markup Language (XML) Configuration Access Protocol (XCAP) +*==== IETF ==== +* +* - RFC 4745 - Common Policy: A Document Format for Expressing Privacy Preferences +* - RFC 4825 - The Extensible Markup Language (XML) Configuration Access Protocol (XCAP) * - RFC 4826 - Extensible Markup Language (XML) Formats for Representing Resource Lists * - RFC 4827 - An Extensible Markup Language (XML) Configuration Access Protocol (XCAP) Usage for Manipulating Presence Document Contents * - RFC 5025 - Presence Authorization Rules -* - +* +*==== OMA ==== +* * - OMA-TS-XDM_Core-V1_1-20080627-A -* - OMA-WP-XDM_1_1_Implementation_Guidelines-20080627-C -* - OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C -* - +* - OMA-WP-XDM_1_1_Implementation_Guidelines-20080627-C +* - OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C +* - OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A +* +*==== GSMA RCS ==== +* * - RCS Release 2 (Jun ‘09) - Technical Realisation v1.0 * - RCS Release 1 Updates (Jun ‘09) - Technical Realisation v1.1 * - RCS Release 1 (Dec 08) - Technical Realisation v1.0 @@ -120,6 +134,9 @@ * - 4. How to create/deserialize an xcap-caps document received from the XDMS? * - 5. How to create/deserialize a resource-lists document received from the XDMS? * - 6. How to create/deserialize a rls-services document received from the XDMS? +* - 7. How to create/deserialize an OMA XCAP directory document received from the XDMS? +* - 20. How to create and serialize GSMA RCS documents? +* - 21. How to parse an OMA pres-content (avatar) document received from the XDMS? * * @anchor faq1 * @par 1. How to change default document name? @@ -145,6 +162,18 @@ * @anchor faq6 * @par 6. How to create/deserialize a rls-services document received from the XDMS? * For more information about how to handle rls-services documents please refer to @ref txc_rls_page. +* +* @anchor faq7 +* @par 7. How to create/deserialize an OMA XCAP directory document received from the XDMS? +* For more information about how to handle OMA XCAP directory documents please refer to @ref txc_oma_directory_page. +* +* @anchor faq20 +* @par 20. How to create and serialize GSMA RCS documents? +* For more information about how to handle GSAM RCS documents please refer to @ref txc_gsma_rcs_page. +`* +* @anchor faq21 +* @par 21. How to parse an OMA pres-content (avatar) document received from the XDMS? +* For more information about how to handle OMA Presence Content documents (Avatars) please refer to @ref txc_oma_prescont_page. */ #define PANIC_AND_JUMP(code, request)\ diff --git a/trunk/tinyXCAP/src/txc.h b/trunk/tinyXCAP/src/txc.h index b6cc26b2..0c50594d 100644 --- a/trunk/tinyXCAP/src/txc.h +++ b/trunk/tinyXCAP/src/txc.h @@ -39,25 +39,46 @@ #define TXC_DOCUMENT_GLOBAL(auid_type) (auid_type == ietf_xcap_caps) -#define TXC_MIME_TYPE_ELEMENT "application/xcap-el+xml" /**< as per rfc 4825 subclause 15.2.1 */ -#define TXC_MIME_TYPE_ATTRIBUTE "application/xcap-att+xml" /**< as per rfc 4825 subclause 15.2.2 */ -#define TXC_MIME_TYPE_NS "application/xcap-ns+xml" /**< as per rfc 4825 subclause 15.2.3 */ -#define TXC_MIME_TYPE_ERROR "application/xcap-error+xml" /**< as per rfc 4825 subclause 15.2.4 */ -#define TXC_MIME_TYPE_CAPS "application/xcap-caps+xml" /**< as per rfc 4825 subclause 12.4 */ -#define TXC_MIME_TYPE_RLIST "application/resource-lists+xml" /**< as per rfc 4826 subclause 3.4.2 */ -#define TXC_MIME_TYPE_RLS "application/rls-services+xml" /**< as per rfc 4826 subclause 4.4.2 */ +#define TXC_MIME_TYPE_ELEMENT "application/xcap-el+xml" /**< as per rfc 4825 subclause 15.2.1 */ +#define TXC_MIME_TYPE_ATTRIBUTE "application/xcap-att+xml" /**< as per rfc 4825 subclause 15.2.2 */ +#define TXC_MIME_TYPE_NS "application/xcap-ns+xml" /**< as per rfc 4825 subclause 15.2.3 */ +#define TXC_MIME_TYPE_ERROR "application/xcap-error+xml" /**< as per rfc 4825 subclause 15.2.4 */ +#define TXC_MIME_TYPE_CAPS "application/xcap-caps+xml" /**< as per rfc 4825 subclause 12.4 */ +#define TXC_MIME_TYPE_RLIST "application/resource-lists+xml" /**< as per rfc 4826 subclause 3.4.2 */ +#define TXC_MIME_TYPE_RLS "application/rls-services+xml" /**< as per rfc 4826 subclause 4.4.2 */ +#define TXC_MIME_TYPE_IETF_PRESRULES "application/auth-policy+xml" /**< as per rfc 5025 subclause 9.4 */ +#define TXC_MIME_TYPE_OMA_PRESRULES "application/auth-policy+xml" /**< as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.5 */ +#define TXC_MIME_TYPE_IETF_DIRECTORY "application/directory+xml" /**< as per draft-garcia-simple-xcap-directory-00 subclause 9.2 */ +#define TXC_MIME_TYPE_OMA_DIRECTORY "application/vnd.oma.xcap-directory+xml" /**< as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.2 */ +#define TXC_MIME_TYPE_OMA_PRESCONT "application/vnd.oma.pres-content+xml" /**< as per [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] subclause 5.1.5 */ #define TXC_AUID_CAPS "xcap-caps" /**< as per rfc 4825 subclause 12.1 */ #define TXC_AUID_RLIST "resource-lists" /**< as per rfc 4826 subclause 3.4.1 */ #define TXC_AUID_RLS "rls-services" /**< as per rfc 4826 subclause 4.4.1 */ +#define TXC_AUID_IETF_PRESRULES "pres-rules" /**< as per rfc 5025 subclause 9.1 */ +#define TXC_AUID_OMA_PRESRULES "org.openmobilealliance.pres-rules" /**< as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.2 */ +#define TXC_AUID_IETF_DIRECTORY "directory" /**< as per draft-garcia-simple-xcap-directory-00 subclause 9.1 */ +#define TXC_AUID_OMA_DIRECTORY "org.openmobilealliance.xcap-directory" /**< as per [OMA-TS-XDM_Core-V1_1-20080627-A subclause 6.7.2.1 */ +#define TXC_AUID_OMA_PRESCONT "org.openmobilealliance.pres-content" /**< as per [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] subclause 5.1.2 */ -#define TXC_DOCUMENT_CAPS "index" /**< as per rfc 4825 subclause 5.5 */ -#define TXC_DOCUMENT_RLIST "index" /**< as per rfc 4826 subclause 3.4.7* */ -#define TXC_DOCUMENT_RLS "index" /**< as per rfc 4826 subclause 4.4.7 */ +#define TXC_DOCUMENT_CAPS "index" /**< as per rfc 4825 subclause 5.5 */ +#define TXC_DOCUMENT_RLIST "index" /**< as per rfc 4826 subclause 3.4.7* */ +#define TXC_DOCUMENT_RLS "index" /**< as per rfc 4826 subclause 4.4.7 */ +#define TXC_DOCUMENT_IETF_PRESRULES "index" /**< as per rfc 5025 subclause 9.7 */ +#define TXC_DOCUMENT_OMA_PRESRULES "pres-rules" /**< as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.8 */ +#define TXC_DOCUMENT_IETF_DIRECTORY "directory.xml" /**< as per draft-garcia-simple-xcap-directory-00 subclause 9.6 */ +#define TXC_DOCUMENT_OMA_DIRECTORY "directory.xml" /**< as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.7 */ +#define TXC_DOCUMENT_OMA_PRESCONT "oma_status-icon/rcs_status_icon" /**< as per [R1_090831_RCS_Release_1_Technical_Realisation_v1_1] subclause 4.8.1 */ #define TXC_NS_CAPS "urn:ietf:params:xml:ns:xcap-caps" /**< as per rfc 4825 subclause 12.3*/ #define TXC_NS_RLIST "urn:ietf:params:xml:ns:resource-lists" /**< as per rfc 4826 subclause 3.4.4 */ #define TXC_NS_RLS "urn:ietf:params:xml:ns:rls-services" /**< as per rfc 4826 subclause 4.4.4 */ +#define TXC_NS_IETF_PRESRULES "urn:ietf:params:xml:ns:pres-rules" /**< as per rfc 5025 subclause 9.3 */ +#define TXC_NS_OMA_PRESRULES "urn:ietf:params:xml:ns:common-policy" /**< as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.3 */ +#define TXC_NS_IETF_DIRECTORY "urn:ietf:params:xml:ns:xcap-directory" /**< as per draft-garcia-simple-xcap-directory-00 subclause 6 */ +#define TXC_NS_OMA_DIRECTORY "urn:oma:xml:xdm:xcap-directory" /**< as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.3 */ +#define TXC_NS_OMA_PRESCONT "urn:oma:xml:prs:pres-content" /**< as per [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] subclause 5.1.4 */ + /* check context validity */ #define TXC_CONTEXT_CHECK(context, panic) \ @@ -205,16 +226,16 @@ typedef txc_auid_t AUIDS_T[TXC_AUIDS_COUNT]; static const AUIDS_T txc_auids = { {ietf_xcap_caps, TXC_AUID_CAPS, "IETF server capabilities", TXC_MIME_TYPE_CAPS, TXC_DOCUMENT_CAPS, 1}, - {ietf_resource_lists, TXC_AUID_RLIST, "IETF resource-list", TXC_MIME_TYPE_RLIST, TXC_DOCUMENT_RLIST, 0}, - {ietf_rls_services, TXC_AUID_RLS, "IETF RLS service", TXC_MIME_TYPE_RLS, TXC_DOCUMENT_RLS, 0}, - {ietf_pres_rules, "pres-rules", "IETF pres-rules", "application/auth-policy+xml", "pres-rules", 0}, - {ietf_directory, "directory", "IETF xdm directory", "application/directory+xml", "directory.xml", 0}, + {ietf_resource_lists, TXC_AUID_RLIST, "IETF resource-list", TXC_MIME_TYPE_RLIST, TXC_DOCUMENT_RLIST, 0}, + {ietf_rls_services, TXC_AUID_RLS, "IETF RLS service", TXC_MIME_TYPE_RLS, TXC_DOCUMENT_RLS, 0}, + {ietf_pres_rules, TXC_AUID_IETF_PRESRULES, "IETF pres-rules", TXC_MIME_TYPE_IETF_PRESRULES, TXC_DOCUMENT_IETF_PRESRULES, 0}, + {ietf_directory, TXC_AUID_IETF_DIRECTORY, "IETF xdm directory", TXC_MIME_TYPE_IETF_DIRECTORY, TXC_DOCUMENT_IETF_DIRECTORY, 0}, {oma_conv_history, "org.openmobilealliance.conv-history", "OMA conversation history", "application/vnd.oma.im.history-list+xml", "conv-history", 0}, - {oma_pres_rules, "org.openmobilealliance.pres-rules", "OMA presence rules", "application/auth-policy+xml", "pres-rules", 0}, - {oma_directory, "org.openmobilealliance.xdm-directory", "OMA xdm directory", "application/vnd.oma.xdm-directory+xml", "directory.xml", 0}, + {oma_pres_rules, TXC_AUID_OMA_PRESRULES, "OMA presence rules", TXC_MIME_TYPE_OMA_PRESRULES, TXC_DOCUMENT_OMA_PRESRULES, 0}, + {oma_directory, TXC_AUID_OMA_DIRECTORY, "OMA xdm directory", TXC_MIME_TYPE_OMA_DIRECTORY, TXC_DOCUMENT_OMA_DIRECTORY, 0}, {oma_deferred_list, "org.openmobilealliance.deferred-list", "OMA deferred list", "application/vnd.oma.im.deferred-list+xml", "deferred-list", 0}, - {oma_pres_content, "org.openmobilealliance.pres-content", "OMA presence content", "application/vnd.oma.pres-content+xml", "oma_status-icon", 0}, + {oma_pres_content, TXC_AUID_OMA_PRESCONT, "OMA presence content", TXC_MIME_TYPE_OMA_PRESCONT, TXC_DOCUMENT_OMA_PRESCONT, 0}, {oma_shared_groups, "org.openmobilealliance.groups", "OMA shared groups", "application/vnd.oma.poc.groups+xml", "index"} }; diff --git a/trunk/tinyXCAP/src/txc_api.h b/trunk/tinyXCAP/src/txc_api.h index a0bdf8af..e4930b1a 100644 --- a/trunk/tinyXCAP/src/txc_api.h +++ b/trunk/tinyXCAP/src/txc_api.h @@ -36,6 +36,7 @@ #include "txc_oma-prescont.h" /* urn:oma:xml:prs:pres-content */ #include "txc_gsma_rcs.h" /* both gsma rcs phase 1 and 2 */ #include "txc_oma.h" /* OMA functionalities */ -#include "txc_oma-presrules.h" /* urn:ietf:params:xml:ns:pres-rules + urn:ietf:params:xml:ns:pres-rules*/ +#include "txc_oma-presrules.h" /* urn:ietf:params:xml:ns:pres-rules + urn:ietf:params:xml:ns:pres-rules*/ +#include "txc_ietf-pres-rules.h"/* urn:ietf:params:xml:ns:pres-rules */ #endif /* _TINYXCAP_TXC_API_H_ */ \ No newline at end of file diff --git a/trunk/tinyXCAP/src/txc_gsma_rcs.c b/trunk/tinyXCAP/src/txc_gsma_rcs.c index 190006b4..41c1fe08 100644 --- a/trunk/tinyXCAP/src/txc_gsma_rcs.c +++ b/trunk/tinyXCAP/src/txc_gsma_rcs.c @@ -20,6 +20,14 @@ * */ +/**@file txc_gsma_rcs.c + * @brief GSMA RCS 1 and RCS 2 documents + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + /* both gsma rcs1 and rcs2 */ /* GSMA RCS2: http://www.gsmworld.com/documents/rcs/rcs2_june09/R2_090831_RCS_Release_2_Technical_Realisation_v1_0.pdf */ /* GSMA RCS1: http://www.gsmworld.com/documents/rcs/rcs1_updates/R1_090831_RCS_Release_1_Technical_Realisation_v1_1.pdf */ @@ -32,6 +40,53 @@ #include "tsk_memory.h" #include "tsk_macros.h" +/**@defgroup txc_gsma_rcs_group GSMA RCS phase 1 & 2 +*/ + +/**@page txc_gsma_rcs_page GSMA RCS phase 1 & 2 Tutorial +* +*

=== Create and serialize a GSMA RCS resource-lists, rls-services and pres-rules document ===

+* +* @code +#include "txc_api.h" + +txc_context_t* context = 0; +txc_rlist_list2_L_t *rlist2 = 0, *services; +char *rlist2_str = 0, *rls_str = 0, *oma_presrules_str = 0; + +// create our xdm context +TXC_CONTEXT_CREATE(context); + +// Initialize the context +context->user_agent = tsk_strdup2("XDM-client/OMA1.1"); +context->xdm_root = tsk_strdup2("http://xcap.example.com/services"); +context->password = tsk_strdup2("mysecret"); +context->xui = tsk_strdup2("sip:doubango@example.com"); + +// Create an GSMA RCS2 resource-lists document object and serialize the document for test +rlist2 = txc_gsmarcs_create_rlist2(context); +rlist2_str = txc_rlist_list22_serialize(rlist2); +printf("rcs resource-lists: %s\n", rlist2_str); +TSK_SAFE_FREE2(rlist2_str); +TSK_LIST_SAFE_FREE(rlist2); + +// Create an GSMA RCS2 rls-services document object and serialize the document for test +services = txc_gsmarcs_create_rls(context); +rls_str = txc_rls_services_serialize(services); +printf("rcs rls-services: %s\n", rls_str); +TSK_SAFE_FREE2(rls_str); +TSK_LIST_SAFE_FREE(services); + +// Create an GSMA RCS2 pres-rules document as XML string +oma_presrules_str = txc_gsmarcs_create_oma_presrules(context); +printf("rcs oma pres-rules: %s\n", oma_presrules_str); +TSK_SAFE_FREE2(oma_presrules_str); + +// free context +TXC_CONTEXT_SAFE_FREE(context); +* @endcode +*/ + #define GSME_RCS_RLIST_ADD_ANCHOR(lname)\ tsk_sprintf(0, &anchor, \ "%s/~~/resource-lists/list%%5B@name=%%22%s%%22%%5D", \ @@ -51,8 +106,14 @@ TSK_SAFE_FREE2(resource_list); \ TSK_SAFE_FREE2(uri); -/* create default list2 with all mandatory list as per GSMA RCS2. this include oma lists */ -/* ATTENTION: use 'TSK_LIST_SAFE_FREE' function to free the returned object */ + +/**@ingroup txc_gsma_rcs_group +* Create a GSMA RCS2 resource-lists document. +* @param context The XCAP context from which to create the document. +* @retval The resource-list document as @ref txc_rlist_list2_L_t object. +* You MUST call @a TSK_LIST_SAFE_FREE to free the returned object. +* @sa @ref txc_gsmarcs_create_rls +*/ txc_rlist_list2_L_t* txc_gsmarcs_create_rlist2(const txc_context_t* context) { txc_rlist_list2_L_t* rlist = 0; @@ -117,8 +178,13 @@ bail: return rlist; } -/* create default rls with all mandatory services as per GSMA RCS1 */ -/* ATTENTION: use 'TSK_LIST_SAFE_FREE' function to free the returned object */ +/**@ingroup txc_gsma_rcs_group +* Create a GSMA RCS2 rls-services document. +* @param context The XCAP context from which to create the document. +* @retval The rls-services document as @ref txc_rls_service_L_t object. +* You MUST call @a TSK_LIST_SAFE_FREE to free the returned object. +* @sa @ref txc_gsmarcs_create_rlist2 +*/ txc_rls_service_L_t* txc_gsmarcs_create_rls(const txc_context_t* context) { txc_rls_service_t *service = 0; @@ -149,8 +215,12 @@ txc_rls_service_L_t* txc_gsmarcs_create_rls(const txc_context_t* context) return services; } -/* create default oma pres-rules document */ -/* ATTENTION: use 'TSK_SAFE_FREE2' function to free the returned string */ +/**@ingroup txc_gsma_rcs_group +* Serialize the GSMA RCS2 pres-rules document as XML string. +* @param context The XCAP context from which to create the document. +* @retval The resource-list document as @ref txc_rls_service_L_t object. +* You MUST call @a TSK_SAFE_FREE2 to free the returned string. +*/ char* txc_gsmarcs_create_oma_presrules(const txc_context_t* context) { return txc_oma_presrules_serialize(context); diff --git a/trunk/tinyXCAP/src/txc_gsma_rcs.h b/trunk/tinyXCAP/src/txc_gsma_rcs.h index 3dca7721..4034e112 100644 --- a/trunk/tinyXCAP/src/txc_gsma_rcs.h +++ b/trunk/tinyXCAP/src/txc_gsma_rcs.h @@ -19,6 +19,15 @@ * along with DOUBANGO. * */ + +/**@file txc_gsma_rcs.h + * @brief GSMA RCS 1 and RCS 2 documents + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + #ifndef _TINYXCAP_TXC_GSMA_RCS_H_ #define _TINYXCAP_TXC_GSMA_RCS_H_ diff --git a/trunk/tinyXCAP/src/txc_ietf-directory.c b/trunk/tinyXCAP/src/txc_ietf-directory.c index 77f98216..49ac47a4 100644 --- a/trunk/tinyXCAP/src/txc_ietf-directory.c +++ b/trunk/tinyXCAP/src/txc_ietf-directory.c @@ -19,4 +19,25 @@ * along with DOUBANGO. * */ -#include "txc_ietf-directory.h" \ No newline at end of file +/**@file txc_ietf-directory.c + * @brief draft-garcia-simple-xcap-directory + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ +#include "txc_ietf-directory.h" + +/**@defgroup txc_ietf_directory_group IETF XCAP Directory +*/ + +/**@page txc_ietf_directory_page IETF XCAP Directory Tutorial (directory) +* @par Application Unique ID (AUID) +* - 'directory' as per draft-garcia-simple-xcap-directory-00 subclause 9.1 +* @par Default Document Namespace +* - 'urn:ietf:params:xml:ns:xcap-directory' as per draft-garcia-simple-xcap-directory-00 subclause 6 +* @par MIME Type +* - 'application/directory+xml' as per draft-garcia-simple-xcap-directory-00 subclause 9.2 +* @par Default document name +* - 'directory.xml' as per draft-garcia-simple-xcap-directory-00 subclause 9.6 +*/ \ No newline at end of file diff --git a/trunk/tinyXCAP/src/txc_ietf-directory.h b/trunk/tinyXCAP/src/txc_ietf-directory.h index e49bfeaa..8ac15546 100644 --- a/trunk/tinyXCAP/src/txc_ietf-directory.h +++ b/trunk/tinyXCAP/src/txc_ietf-directory.h @@ -20,6 +20,14 @@ * */ +/**@file txc_ietf-directory.h + * @brief draft-garcia-simple-xcap-directory + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + #ifndef _TINYXCAP_TXC_IETF_DIRECTORY_H_ #define _TINYXCAP_TXC_IETF_DIRECTORY_H_ diff --git a/trunk/tinyXCAP/src/txc_ietf-pres-rules.h b/trunk/tinyXCAP/src/txc_ietf-pres-rules.h index 9f3bd930..98690d94 100644 --- a/trunk/tinyXCAP/src/txc_ietf-pres-rules.h +++ b/trunk/tinyXCAP/src/txc_ietf-pres-rules.h @@ -20,14 +20,20 @@ * */ +/**@file txc_ietf-pres-rules.h + * @brief RFC 5025 - IETF Presence Authorization Rules + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + #include "tinyxcap_config.h" #include "txc.h" #ifndef _TINYXCAP_IETF_PRES_RULES_H_ #define _TINYXCAP_IETF_PRES_RULES_H_ -/* urn:ietf:params:xml:ns:pres-rules */ - -char* txc_ietf_presrules_serialize(const txc_context_t *context); +TINYXCAP_API char* txc_ietf_presrules_serialize(const txc_context_t *context); #endif /* _TINYXCAP_IETF_PRES_RULES_H_ */ \ No newline at end of file diff --git a/trunk/tinyXCAP/src/txc_ietf-presrules.c b/trunk/tinyXCAP/src/txc_ietf-presrules.c index 3e1eba31..b2943b54 100644 --- a/trunk/tinyXCAP/src/txc_ietf-presrules.c +++ b/trunk/tinyXCAP/src/txc_ietf-presrules.c @@ -19,15 +19,32 @@ * along with DOUBANGO. * */ -/* - RFC 5025 - Presence Authorization Rules -*/ + +/**@file txc_ietf-presrules.c + * @brief RFC 5025 - IETF Presence Authorization Rules + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ #include "txc_ietf-pres-rules.h" #include "txc_document.h" #include "txc_oma.h" -//static const char* txc_ietf_pres_rules_ns = "urn:ietf:params:xml:ns:pres-rules"; +/**@defgroup txc_ietf_pres_rules_group IETF Presence Authorization Rules +*/ + +/**@page txc_ietf_pres_rules_page IETF Presence Authorization Rules Tutorial (pres-rules) +* @par Application Unique ID (AUID) +* - 'pres-rules' as per rfc 5025 subclause 9.1 +* @par Default Document Namespace +* - 'urn:ietf:params:xml:ns:pres-rules' as per rfc 5025 subclause 9.3 +* @par MIME Type +* - 'application/auth-policy+xml' as per rfc 5025 subclause 9.4 +* @par Default document name +* - 'index' as per rfc 5025 subclause 9.7 +*/ /* 1= owner uri ; 2=oma_grantedcontacts uri; 3=oma_blockedcontacts*/ #define TXC_IETF_PRESRULES_TEMPLATE "" \ @@ -121,8 +138,11 @@ "" \ "" \ -/* will serialize a complete pres-rules whith xml header*/ -/* ATTENTION: use 'TSK_SAFE_FREE2' macro to free the returned string */ +/**@ingroup txc_ietf_pres_rules_group +* Used to create an initial IETF pres-rules document. +* @param context The xcap context for which to create the IETF pres-rules document. +* @retval The XML document to PUT to the XDMS. You MUST call @a TSK_SAFE_FREE2 to free the returned string. +*/ char* txc_ietf_presrules_serialize(const txc_context_t *context) { char *ietf_presrules_str = 0, *oma_grantedcontacts = 0, *oma_blockedcontacts = 0, *doc_sel = 0; diff --git a/trunk/tinyXCAP/src/txc_oma-directory.c b/trunk/tinyXCAP/src/txc_oma-directory.c index 4f880e8c..e646749f 100644 --- a/trunk/tinyXCAP/src/txc_oma-directory.c +++ b/trunk/tinyXCAP/src/txc_oma-directory.c @@ -19,12 +19,80 @@ * along with DOUBANGO. * */ + +/**@file txc_oma-directory.c + * @brief [OMA-TS-XDM_Core-V1_1-20080627-A] - OMA XCAP directory subclause 6.7.2 + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + #include "txc_oma-directory.h" #include "txc_macros.h" #include "tsk_macros.h" -//static const char* txc_oma_directory_ns = "urn:oma:xml:xdm:xcap-directory"; +/**@defgroup txc_oma_directory_group OMA XCAP directory +*/ + +/**@page txc_oma_directory_page OMA XCAP directory Tutorial (org.openmobilealliance.xcap-directory) +* @par Application Unique ID (AUID) +* - 'org.openmobilealliance.xcap-directory' as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.1 +* @par Default Document Namespace +* - 'urn:oma:xml:xdm:xcap-directory' as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.3 +* @par MIME Type +* - 'application/vnd.oma.xcap-directory+xml' as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.2 +* @par Default document name +* - 'directory.xml' as per [OMA-TS-XDM_Core-V1_1-20080627-A] subclause 6.7.2.7 +* +*

=== Create/deserialize an OMA XCAP directory document received from the XDMS ===

+* +* @code +#include "txc_api.h" + +char* entry_str = 0; +txc_omadir_t* omadir = 0; +txc_omadir_folder_L_t* list = 0; +tsk_list_item_t* item = 0; + +printf("\n---\nTEST OMA XCAP-DIRECTORY\n---\n"); +{ + // create oma xcap directory context + omadir = txc_omadir_create(buffer, size); + + // get all folders + printf("\nget all folders\n"); + if(list = txc_omadir_get_all_folders(omadir)) + { + tsk_list_foreach(item, list) + { + txc_omadir_folder_t *folder = ((txc_omadir_folder_t*)item->data); + printf("auid: \"%s\"\n", folder->auid); + } + TSK_LIST_SAFE_FREE(list); + } + + // get all entries in the folder with auid 'groups' + printf("\nget all entries in the folder with auid 'groups'\n"); + if(list = txc_omadir_get_entries_by_folder(omadir, "groups")) + { + tsk_list_foreach(item, list) + { + txc_rlist_entry_t *entry = ((txc_rlist_entry_t*)item->data); + printf("folder's auid:\"%s\" uri:\"%s\" display-name=\"%s\" etag\"%s\"\n", entry->list, entry->uri, entry->display_name, entry->etag); + entry_str = txc_rlist_entry_serialize(entry); + printf("serialized entry: \n%s\n", entry_str); + TSK_SAFE_FREE2(entry_str); + } + TSK_LIST_SAFE_FREE(list); + } + + // free the context + txc_omadir_free(&omadir); +} +* @endcode +*/ #define OMADIR_RETURN_IF_INVALID(omadir) if(!omadir || !(omadir->docPtr)) return 0; @@ -36,13 +104,22 @@ TSK_XML_NODE_SELECT_END()) -/* init folder */ +/**@ingroup txc_oma_directory_group +* Internal function to initialize an OMA XCAP directory folder. +* You must never call this method. You shall use @ref TXC_OMADIR_FOLDER_CREATE to create a folder. +* @param folder The folder to initialize +*/ void txc_omadir_folder_init(txc_omadir_folder_t *folder) { memset(folder, 0, sizeof(txc_omadir_folder_t)); } -/* free folder */ +/**@ingroup txc_oma_directory_group +* Internal function to free an OMA XCAP directory folder. +* You must never call this method. You shall use @ref TXC_OMADIR_FOLDER_SAFE_FREE to safely free a folder. +* @param _folder The folder to free +* @sa @ref TXC_OMADIR_FOLDER_SAFE_FREE +*/ void txc_omadir_folder_free(void **_folder) { txc_omadir_folder_t **folder = ((txc_omadir_folder_t**)_folder); @@ -53,8 +130,11 @@ void txc_omadir_folder_free(void **_folder) (*_folder) = 0; } -/* xml<->folder binding*/ -/* ATTENTION: use 'TXC_OMADIR_FOLDER_SAFE_FREE' function to free the returned object */ +/**@ingroup txc_oma_directory_group +* Deserialize an OMA XCAP folder directory from an XML node pointer. +* @param node The pointer to the XML node to deserialize +* @retval An OMA XCAP folder object. You MUST call @ref TXC_OMADIR_FOLDER_SAFE_FREE to free the returned object. +*/ txc_omadir_folder_t* txc_omadir_folder_from_xml(xmlNodePtr node) { xmlNodePtr node2 = 0; @@ -74,7 +154,13 @@ txc_omadir_folder_t* txc_omadir_folder_from_xml(xmlNodePtr node) return folder; } -/* create oma xcap-directory context */ +/**@ingroup txc_oma_directory_group +* Used to create an OMA XCAP directory context +* @param buffer The XML buffer from which to create the context +* @param size The size of the XML buffer +* @retval An OMA XCAP directory context. You MUST use @ref txc_omadir_free to free the returned object. +* @sa @ref txc_omadir_free +*/ txc_omadir_t* txc_omadir_create(const char* buffer, size_t size) { if(buffer && size) @@ -89,8 +175,12 @@ txc_omadir_t* txc_omadir_create(const char* buffer, size_t size) return 0; } -/* get all folders in the oma xcap-directory document */ -/* ATTENTION: use 'TSK_LIST_SAFE_FREE' function to free the returned object */ +/**@ingroup txc_oma_directory_group +* Returns all folders from an OMA XCAP directory context. +* @param omadir The context from which to extract all folders +* @retval The list of all available folders. You MUST use @a TSK_LIST_SAFE_FREE to free the returned list. +* @sa @ref txc_omadir_get_entries_by_folder +*/ txc_omadir_folder_L_t* txc_omadir_get_all_folders(const txc_omadir_t* omadir) { txc_omadir_folder_t* folder = 0; @@ -120,8 +210,12 @@ txc_omadir_folder_L_t* txc_omadir_get_all_folders(const txc_omadir_t* omadir) return list; } -/* get all entries in the folder */ -/* ATTENTION: use 'TSK_LIST_SAFE_FREE' function to free the returned object */ +/**@ingroup txc_oma_directory_group +* Returns all entries from an OMA XCAP folder. +* @param omadir The OMA XCAP directory context created using @ref txc_omadir_create. +* @param fo_auid The auid of the folder holding the entries +* @retval The list of all available entries. You MUST use @a TSK_LIST_SAFE_FREE to free the returned list. +*/ txc_rlist_entry_L_t* txc_omadir_get_entries_by_folder(const txc_omadir_t* omadir, const char* fo_auid) { txc_rlist_entry_t *rlist_entry = 0; @@ -149,7 +243,11 @@ txc_rlist_entry_L_t* txc_omadir_get_entries_by_folder(const txc_omadir_t* omadir return list; } -/* free oma dir context */ +/**@ingroup txc_oma_directory_group +* Free an OMA XCAP directory context previously created using @ref txc_omadir_create. +* @param omadir The context to free. +* @sa @ref txc_omadir_create +*/ void txc_omadir_free(txc_omadir_t **omadir) { if(*omadir) diff --git a/trunk/tinyXCAP/src/txc_oma-directory.h b/trunk/tinyXCAP/src/txc_oma-directory.h index 66d05aac..2199270c 100644 --- a/trunk/tinyXCAP/src/txc_oma-directory.h +++ b/trunk/tinyXCAP/src/txc_oma-directory.h @@ -20,6 +20,14 @@ * */ +/**@file txc_oma-directory.h + * @brief [OMA-TS-XDM_Core-V1_1-20080627-A] - OMA XCAP directory subclause 6.7.2 + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + #ifndef _TINYXCAP_TXC_OMA_DIRECTORY_H_ #define _TINYXCAP_TXC_OMA_DIRECTORY_H_ @@ -27,23 +35,31 @@ #include "txc.h" #include "txc_rlist.h" -/* urn:oma:xml:xdm:xcap-directory */ - +/**@def TXC_OMADIR_FOLDER_CREATE +* Create an OMA XCAP directory folder +* You MUST @ref TXC_OMADIR_FOLDER_SAFE_FREE to free the objet. +* @sa @ref TXC_OMADIR_FOLDER_SAFE_FREE +*/ +/**@def TXC_OMADIR_FOLDER_SAFE_FREE +* Safely free an OMA XCAP directory previously created using @ref TXC_OMADIR_FOLDER_CREATE. +* @sa @ref TXC_OMADIR_FOLDER_CREATE +*/ #define TXC_OMADIR_FOLDER_CREATE(folder) TXC_XXX_CREATE2(folder, omadir_folder) #define TXC_OMADIR_FOLDER_SAFE_FREE(folder) TXC_XXX_SAFE_FREE2(folder, omadir_folder) -/* folder */ +/** OMA XCAP directory folder . +*/ typedef struct txc_omadir_folder_s { - char* auid; + char* auid; /**< The auid of the folder */ } txc_omadir_folder_t; -typedef tsk_list_t txc_omadir_folder_L_t; /* contains txc_omadir_folder_t elements */ +typedef tsk_list_t txc_omadir_folder_L_t; /* List of @ref txc_omadir_folder_t elements */ -/* oma xcap-directory */ +/**OMA XCAP directory context. */ typedef struct txc_omadir_s { - xmlDocPtr docPtr; + xmlDocPtr docPtr; /**< Pointer to the XML document*/ } txc_omadir_t; diff --git a/trunk/tinyXCAP/src/txc_oma-prescont.c b/trunk/tinyXCAP/src/txc_oma-prescont.c index fe2b9d5c..aacdc1f0 100644 --- a/trunk/tinyXCAP/src/txc_oma-prescont.c +++ b/trunk/tinyXCAP/src/txc_oma-prescont.c @@ -19,14 +19,63 @@ * along with DOUBANGO. * */ -/* implements [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] */ +/**@file txc_oma-prescont.c + * @brief [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] - OMA Presence Content (Avatar) + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + #include "txc_oma-prescont.h" +/**@defgroup txc_oma_prescont_group OMA Presence Content (Avatars) +*/ -//static const char* txc_oma_prescont_ns = "urn:oma:xml:prs:pres-content"; +/**@page txc_oma_prescont_page OMA Presence Content Tutorial (org.openmobilealliance.pres-content) +* @par Application Unique ID (AUID) +* - 'org.openmobilealliance.pres-content' as per [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] subclause 5.1.2 +* @par Default Document Namespace +* - 'urn:oma:xml:prs:pres-content' as per [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] subclause 5.1.4 +* @par MIME Type +* - 'application/vnd.oma.pres-content+xml' as per [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] subclause 5.1.5 +* @par Default document name +* - 'oma_status-icon/rcs_status_icon' as per [R1_090831_RCS_Release_1_Technical_Realisation_v1_1] subclause 4.8.1 +* +*

=== Create/deserialize an OMA Presence Content (avatar) document received from the XDMS ===

+* +* @code +#include "txc_api.h" -/* create oma pres-content object */ -/* ATTENTION: use 'txc_oma_pres_cont_free' function to free the returned object*/ +// OMA pres-cont context +txc_oma_prescont_t* omaprescont = 0; + +printf("\n---\nTEST OMA PRES-CONTENT\n---\n"); +{ + // create oma-pres-content context + omaprescont = txc_oma_prescont_create(buffer, size); + + // dump + printf("\ndump pres-content\n"); + if(omaprescont) + { + printf("mime-type: \"%s\" encoding: \"%s\" description: \"%s\" data: \"%s\"\n", + omaprescont->mime_type, omaprescont->encoding, omaprescont->description, omaprescont->data); + } + // free omapres-content context + txc_oma_prescont_free(&omaprescont); +} +* @endcode +* +*/ + +/**@ingroup txc_oma_prescont_group +* Create an OMA presence content object from an XML string. +* @param buffer The XML string from which to create the pres-cont object +* @param size The size of the XML string +* @retval The OMA pres-cont object. You MUST call @ref txc_oma_prescont_free to free the returned object. +* @sa @ref txc_oma_prescont_free +*/ txc_oma_prescont_t* txc_oma_prescont_create(const char* buffer, size_t size) { xmlNodePtr node = 0; @@ -74,7 +123,11 @@ txc_oma_prescont_t* txc_oma_prescont_create(const char* buffer, size_t size) return pres_cont; } -/* init oma pres-content object */ +/**@ingroup txc_oma_prescont_group +* Free an OMA presence content object previously created using @ref txc_oma_prescont_create. +* @param pres_cont The object to free. +* @sa @ref txc_oma_prescont_create +*/ void txc_oma_prescont_free(txc_oma_prescont_t **pres_cont) { TSK_SAFE_FREE2((*pres_cont)->mime_type); diff --git a/trunk/tinyXCAP/src/txc_oma-prescont.h b/trunk/tinyXCAP/src/txc_oma-prescont.h index 2ca5fbbd..96e02bb0 100644 --- a/trunk/tinyXCAP/src/txc_oma-prescont.h +++ b/trunk/tinyXCAP/src/txc_oma-prescont.h @@ -19,6 +19,14 @@ * along with DOUBANGO. * */ + +/**@file txc_oma-prescont.h + * @brief [OMA-TS-Presence-SIMPLE_Content_XDM-V1_0-20081223-C] - OMA Presence Content (Avatar) + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ #ifndef _TINYXCAP_TXC_OMA_PRESCONT_H_ #define _TINYXCAP_TXC_OMA_PRESCONT_H_ @@ -26,15 +34,13 @@ #include "txc.h" #include "tsk_xml.h" -/* urn:oma:xml:prs:pres-content */ - -/* oma pres-content */ +/** OMA Presence-Content structure */ typedef struct txc_oma_prescont_s { - char* mime_type; - char* encoding; - char* description; - char* data; + char* mime_type; /**< The Mime-Type*/ + char* encoding; /**< The type of encoding (e.g. base64)*/ + char* description; /**< The description*/ + char* data; /**< The content */ } txc_oma_prescont_t; diff --git a/trunk/tinyXCAP/src/txc_oma-presrules.c b/trunk/tinyXCAP/src/txc_oma-presrules.c index 74d6430c..54d3a5c0 100644 --- a/trunk/tinyXCAP/src/txc_oma-presrules.c +++ b/trunk/tinyXCAP/src/txc_oma-presrules.c @@ -20,11 +20,33 @@ * */ +/**@file txc_oma-presrules.c + * @brief [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] - OMA Presence Authorization Rules + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + /* as per RCS1: http://www.gsmworld.com/documents/rcs/rcs1_updates/R1_090831_RCS_Release_1_Technical_Realisation_v1_1.pdf subclause 4.4*/ #include "txc_oma-presrules.h" #include "txc_document.h" #include "txc_oma.h" +/**@defgroup txc_oma_pres_rules_group OMA Presence Authorization Rules +*/ + +/**@page txc_oma_pres_rules_page OMA Presence Authorization Rules Tutorial (org.openmobilealliance.pres-rules) +* @par Application Unique ID (AUID) +* - 'org.openmobilealliance.pres-rules' as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.2 +* @par Default Document Namespace +* - 'urn:ietf:params:xml:ns:common-policy' as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.3 +* @par MIME Type +* - 'application/auth-policy+xml' as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.5 +* @par Default document name +* - 'pres-rules' as per [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] subclause 5.1.1.8 +*/ + /* 1= owner uri ; 2=oma_grantedcontacts uri; 3=oma_blockedcontacts*/ #define TXC_OMA_PRESRULES_TEMPLATE "" \ "" -/* will serialize a complete pres-rules whith xml header*/ -/* ATTENTION: use 'TSK_SAFE_FREE2' macro to free the returned string */ +/**@ingroup txc_oma_pres_rules_group +* Used to create an initial OMA pres-rules document. +* @param context The xcap context for which to create the OMA pres-rules document. +* @retval The XML document to PUT to the XDMS. You MUST call @a TSK_SAFE_FREE2 to free the returned string. +*/ char* txc_oma_presrules_serialize(const txc_context_t *context) { char *oma_presrules_str = 0, *oma_grantedcontacts = 0, *oma_blockedcontacts = 0, *doc_sel = 0; diff --git a/trunk/tinyXCAP/src/txc_oma-presrules.h b/trunk/tinyXCAP/src/txc_oma-presrules.h index 48538e27..29dcb9d0 100644 --- a/trunk/tinyXCAP/src/txc_oma-presrules.h +++ b/trunk/tinyXCAP/src/txc_oma-presrules.h @@ -20,6 +20,14 @@ * */ +/**@file txc_oma-presrules.h + * @brief [OMA-TS-Presence_SIMPLE_XDM-V1_1-20080627-A] - OMA Presence Authorization Rules + * + * @author Mamadou Diop + * + * @date Created: Sat Nov 8 16:54:58 2009 mdiop + */ + /* as per RCS1: http://www.gsmworld.com/documents/rcs/rcs1_updates/R1_090831_RCS_Release_1_Technical_Realisation_v1_1.pdf subclause 4.4*/ #ifndef _TINYXCAP_TXC_OMA_PRESRULES_H_ #define _TINYXCAP_TXC_OMA_PRESRULES_H_ @@ -27,8 +35,6 @@ #include "tinyxcap_config.h" #include "txc.h" -/* urn:ietf:params:xml:ns:pres-rules */ - TINYXCAP_API char* txc_oma_presrules_serialize(const txc_context_t *context); #endif /* _TINYXCAP_TXC_OMA_PRESRULES_H_ */ \ No newline at end of file diff --git a/trunk/tinyXCAP/src/txc_rlist.h b/trunk/tinyXCAP/src/txc_rlist.h index 73fd4474..4bcb96ac 100644 --- a/trunk/tinyXCAP/src/txc_rlist.h +++ b/trunk/tinyXCAP/src/txc_rlist.h @@ -122,8 +122,8 @@ typedef struct txc_rlist_list2_s txc_rlist_external_L_t* externals; /**< All extenals */ } txc_rlist_list2_t; -typedef tsk_list_t txc_rlist_list2_L_t; /* List of @ref txc_rlist_list2_t elements */ -typedef tsk_list_t txc_rlist_list2_LL_t; /* List of @ref txc_rlist_list2_t elements */ +typedef tsk_list_t txc_rlist_list2_L_t; /**< List of @ref txc_rlist_list2_t elements */ +typedef tsk_list_t txc_rlist_list2_LL_t; /**< List of @ref txc_rlist_list2_L_t elements */ /** Resource-lists document context */ diff --git a/trunk/tinyXCAP/test/test.c b/trunk/tinyXCAP/test/test.c index b43b5ad7..3b2adaea 100644 --- a/trunk/tinyXCAP/test/test.c +++ b/trunk/tinyXCAP/test/test.c @@ -21,13 +21,25 @@ */ #include "stdafx.h" -#define LOOP 0 +#define TEST_XXXX_CONTEXT_INIT(context) \ + context->user_agent = tsk_strdup2("XDM-client/OMA1.1"); \ + context->txc_root = tsk_strdup2("http://example.com:8080/services"); \ + context->password = tsk_strdup2("doubango"); \ + context->xui = tsk_strdup2("sip:doubango@example.com"); \ + context->pragma = tsk_strdup2("keep-alive"); -#define RUN_TEST_ALL 0 -#define RUN_TEST_SELECTOR 0 -#define RUN_TEST_XCAP_CAPS 0 -#define RUN_TEST_RLIST 0 -#define RUN_TEST_RLS 1 +#define LOOP 0 + +#define RUN_TEST_ALL 1 +#define RUN_TEST_SELECTOR 0 +#define RUN_TEST_XCAP_CAPS 0 +#define RUN_TEST_RLIST 0 +#define RUN_TEST_RLS 0 +#define RUN_TEST_IETF_PRESRULES 0 +#define RUN_TEST_OMA_PRESRULES 0 +#define RUN_TEST_OMA_DIRECTORY 0 +#define RUN_TEST_GSMA_RCS 0 +#define RUN_TEST_OMA_PRESCONT 1 #if RUN_TEST_SELECTOR || RUN_TEST_ALL #include "test_selector.h" @@ -45,6 +57,26 @@ #include "test_rls.h" #endif +#if RUN_TEST_IETF_PRESRULES || RUN_TEST_ALL +#include "test_ietf-pres-rules.h" +#endif + +#if RUN_TEST_OMA_PRESRULES || RUN_TEST_ALL +#include "test_oma-pres-rules.h" +#endif + +#if RUN_TEST_OMA_DIRECTORY || RUN_TEST_ALL +#include "test_oma-directory.h" +#endif + +#if RUN_TEST_GSMA_RCS || RUN_TEST_ALL +#include "test_gsma_rcs.h" +#endif + +#if RUN_TEST_OMA_PRESCONT || RUN_TEST_ALL +#include "test_oma-pres-cont.h" +#endif + int _tmain(int argc, _TCHAR* argv[]) { #if LOOP @@ -75,7 +107,33 @@ int _tmain(int argc, _TCHAR* argv[]) test_rls_services(rls_str0, strlen(rls_str0)); #endif + /*ietf pres-rules*/ +#if RUN_TEST_IETF_PRESRULES || RUN_TEST_ALL + test_ietf_presrules(); +#endif + + /*oma pres-rules*/ +#if RUN_TEST_OMA_PRESRULES || RUN_TEST_ALL + test_oma_presrules(); +#endif + + /* oma directory */ +#if RUN_TEST_OMA_DIRECTORY || RUN_TEST_ALL + test_oma_directory(omadir_str0, strlen(omadir_str0)); +#endif + + /* gsma rcs */ +#if RUN_TEST_GSMA_RCS || RUN_TEST_ALL + test_gsma_rcs(); +#endif + + /* oma pres-cont (avatars) */ +#if RUN_TEST_OMA_PRESCONT || RUN_TEST_ALL + test_oma_pres_cont(omaprescont_str0, strlen(omaprescont_str0)); +#endif + } + getchar(); return 0; diff --git a/trunk/tinyXCAP/test/test.vcproj b/trunk/tinyXCAP/test/test.vcproj index 37b6a5c7..edd8207b 100644 --- a/trunk/tinyXCAP/test/test.vcproj +++ b/trunk/tinyXCAP/test/test.vcproj @@ -200,6 +200,26 @@ + + + + + + + + + + diff --git a/trunk/tinyXCAP/test/test_gsma_rcs.h b/trunk/tinyXCAP/test/test_gsma_rcs.h index d0561c34..e2dcb305 100644 --- a/trunk/tinyXCAP/test/test_gsma_rcs.h +++ b/trunk/tinyXCAP/test/test_gsma_rcs.h @@ -1,71 +1,69 @@ -/**************************************************************************** - _ _ - | | | | - _ | | ___ _ _| | _ ____ ____ ____ ___ - / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \ - ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| | - \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/ - (_____| - - Copyright (C) 2009 xxxyyyzzz - - This file is part of Open Source Doubango IMS Client Framework project. - - DOUBANGO is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - DOUBANGO is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DOUBANGO. -****************************************************************************/ +/* +* Copyright (C) 2009 Mamadou Diop. +* +* Contact: Mamadou Diop +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ #ifndef _TEST_GSMA_RCS_H_ #define _TEST_GSMA_RCS_H_ -#include "xdm_api.h" +#include "txc_api.h" /* test gsma rcs */ void test_gsma_rcs() { - xdm_context_t* context = 0; - xdm_list_t *rlist2 = 0, *services; + txc_context_t* context = 0; + txc_rlist_list2_L_t *rlist2 = 0, *services; char *rlist2_str = 0, *rls_str = 0, *oma_presrules_str = 0; - + /* create our xdm context */ - XDM_CONTEXT_CREATE(context); + TXC_CONTEXT_CREATE(context); - context->user_agent = xdm_strdup("XDM-client/OMA1.1"); + /*context->user_agent = xdm_strdup("XDM-client/OMA1.1"); context->xdm_root = xdm_strdup("http://xcap.example.com/services"); context->password = xdm_strdup("mysecret"); - context->xui = xdm_strdup("sip:doubango@example.com"); + context->xui = xdm_strdup("sip:doubango@example.com");*/ - /* get rcs lists */ - rlist2 = xdm_gsmarcs_create_rlist2(context); - rlist2_str = xdm_rlist_rlist2_serialize(rlist2); + /* Initialize the context */ + TEST_XXXX_CONTEXT_INIT(context); + + /* Create an GSMA RCS2 resource-lists document object and serialize the document for test */ + rlist2 = txc_gsmarcs_create_rlist2(context); + rlist2_str = txc_rlist_list22_serialize(rlist2); printf("rcs resource-lists: %s\n", rlist2_str); - XDM_SAFE_FREE(rlist2_str); - XDM_LIST_SAFE_FREE(rlist2); + TSK_SAFE_FREE2(rlist2_str); + TSK_LIST_SAFE_FREE(rlist2); - /* get rls services */ - services = xdm_gsmarcs_create_rls(context); - rls_str = xdm_rls_rls_serialize(services); + /* Create an GSMA RCS2 rls-services document object and serialize the document for test*/ + services = txc_gsmarcs_create_rls(context); + rls_str = txc_rls_services_serialize(services); printf("rcs rls-services: %s\n", rls_str); - XDM_SAFE_FREE(rls_str); - XDM_LIST_SAFE_FREE(services); + TSK_SAFE_FREE2(rls_str); + TSK_LIST_SAFE_FREE(services); - /* get oma pres-rules */ - oma_presrules_str = xdm_gsmarcs_create_oma_presrules(context); + /* Create an GSMA RCS2 pres-rules document as XML string */ + oma_presrules_str = txc_gsmarcs_create_oma_presrules(context); printf("rcs oma pres-rules: %s\n", oma_presrules_str); - XDM_SAFE_FREE(oma_presrules_str); + TSK_SAFE_FREE2(oma_presrules_str); /* free context */ - XDM_CONTEXT_SAFE_FREE(context); + TXC_CONTEXT_SAFE_FREE(context); } diff --git a/trunk/tinyXCAP/test/test_ietf-pres-rules.h b/trunk/tinyXCAP/test/test_ietf-pres-rules.h new file mode 100644 index 00000000..0d515563 --- /dev/null +++ b/trunk/tinyXCAP/test/test_ietf-pres-rules.h @@ -0,0 +1,49 @@ +/* +* Copyright (C) 2009 Mamadou Diop. +* +* Contact: Mamadou Diop +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ +#include "txc_api.h" + +#ifndef TEST_IETF_PRESRULES +#define TEST_IETF_PRESRULES + +/* testing ietf-presrules */ +void test_ietf_presrules() +{ + txc_context_t* context; + char *presrules = 0; + + /* create our XCAP context */ + TXC_CONTEXT_CREATE(context); + + printf("---\nTEST IETF-PRESRULES\n---\n"); + + /* Initialize the context */ + TEST_XXXX_CONTEXT_INIT(context); + + presrules = txc_ietf_presrules_serialize(context); + printf("IETF pres-rules: \n%s\n***\n", presrules); + TSK_SAFE_FREE2(presrules); + + /* free the context*/ + TXC_CONTEXT_SAFE_FREE(context); +} + +#endif \ No newline at end of file diff --git a/trunk/tinyXCAP/test/test_oma-directory.h b/trunk/tinyXCAP/test/test_oma-directory.h index 6603f00e..7ff07c57 100644 --- a/trunk/tinyXCAP/test/test_oma-directory.h +++ b/trunk/tinyXCAP/test/test_oma-directory.h @@ -1,85 +1,86 @@ -/**************************************************************************** - _ _ - | | | | - _ | | ___ _ _| | _ ____ ____ ____ ___ - / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \ - ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| | - \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/ - (_____| - - Copyright (C) 2009 xxxyyyzzz +/* +* Copyright (C) 2009 Mamadou Diop. +* +* Contact: Mamadou Diop +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ +#include "txc_api.h" - This file is part of Open Source Doubango IMS Client Framework project. +#ifndef TEST_OMA_DIRECTORY +#define TEST_OMA_DIRECTORY - DOUBANGO is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - DOUBANGO is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DOUBANGO. -****************************************************************************/ - -#include "xdm_api.h" +// http://www.openmobilealliance.com/technical/release_program/docs/XDM/V2_0-20070724-C/OMA-TS-XDM_Core-V2_0-20070724-C.pdf subclause C.3 +const char* omadir_str0 = "" + "" + "" + "" + "" + "" + "" + "" + "" + ""; /* test OMA directory (urn:oma:xml:xdm:xcap-directory) */ -void test_oma_directory() +void test_oma_directory(const char* buffer, size_t size) { char* entry_str = 0; - xdm_omadir_t* omadir = 0; - xdm_list_t* list = 0; - xdm_list_item_t* item = 0; - // http://www.openmobilealliance.com/technical/release_program/docs/XDM/V2_0-20070724-C/OMA-TS-XDM_Core-V2_0-20070724-C.pdf subclause C.3 - const char* omadir_str = "" - "" - "" - "" - "" - "" - "" - "" - "" - ""; + txc_omadir_t* omadir = 0; + txc_omadir_folder_L_t* list = 0; + tsk_list_item_t* item = 0; + printf("\n---\nTEST OMA XCAP-DIRECTORY\n---\n"); { - /* create rlist context */ - omadir = xdm_omadir_create(omadir_str, strlen(omadir_str)); + /* create oma xcap directory context */ + omadir = txc_omadir_create(buffer, size); /* get all folders */ printf("\nget all folders\n"); - if(list = xdm_omadir_get_all_folders(omadir)) + if(list = txc_omadir_get_all_folders(omadir)) { - xdm_list_foreach(item, list) + tsk_list_foreach(item, list) { - xdm_omadir_folder_t *folder = ((xdm_omadir_folder_t*)item->data); + txc_omadir_folder_t *folder = ((txc_omadir_folder_t*)item->data); printf("auid: \"%s\"\n", folder->auid); } - XDM_LIST_SAFE_FREE(list); + TSK_LIST_SAFE_FREE(list); } /* get all entries in the folder with auid 'groups' */ printf("\nget all entries in the folder with auid 'groups'\n"); - if(list = xdm_omadir_get_entries_by_folder(omadir, "groups")) + if(list = txc_omadir_get_entries_by_folder(omadir, "groups")) { - xdm_list_foreach(item, list) + tsk_list_foreach(item, list) { - xdm_rlist_entry_t *entry = ((xdm_rlist_entry_t*)item->data); + txc_rlist_entry_t *entry = ((txc_rlist_entry_t*)item->data); printf("folder's auid:\"%s\" uri:\"%s\" display-name=\"%s\" etag\"%s\"\n", entry->list, entry->uri, entry->display_name, entry->etag); - entry_str = xdm_rlist_entry_serialize(entry); + entry_str = txc_rlist_entry_serialize(entry); printf("serialized entry: \n%s\n", entry_str); - XDM_SAFE_FREE(entry_str); + TSK_SAFE_FREE2(entry_str); } - XDM_LIST_SAFE_FREE(list); + TSK_LIST_SAFE_FREE(list); } - /* free omadir */ - xdm_omadir_free(&omadir); + /* free the context */ + txc_omadir_free(&omadir); } -} \ No newline at end of file +} + +#endif /* TEST_OMA_DIRECTORY */ \ No newline at end of file diff --git a/trunk/tinyXCAP/test/test_oma-pres-cont.h b/trunk/tinyXCAP/test/test_oma-pres-cont.h index 01bd8972..4067cd94 100644 --- a/trunk/tinyXCAP/test/test_oma-pres-cont.h +++ b/trunk/tinyXCAP/test/test_oma-pres-cont.h @@ -1,41 +1,30 @@ -/**************************************************************************** - _ _ - | | | | - _ | | ___ _ _| | _ ____ ____ ____ ___ - / || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \ - ( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| | - \____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/ - (_____| - - Copyright (C) 2009 xxxyyyzzz +/* +* Copyright (C) 2009 Mamadou Diop. +* +* Contact: Mamadou Diop +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ - This file is part of Open Source Doubango IMS Client Framework project. - - DOUBANGO is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - DOUBANGO is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DOUBANGO. -****************************************************************************/ - -#include "xdm_api.h" - -/* test OMA directory (urn:oma:xml:xdm:xcap-directory) */ -void test_oma_pres_cont() -{ - char* entry_str = 0; - xdm_oma_prescont_t* omaprescont = 0; - xdm_list_t* list = 0; - xdm_list_item_t* item = 0; - // http://www.openmobilealliance.org/technical/release_program/docs/PresenceSIMPLE/V2_0-20081223-C/OMA-TS-Presence_SIMPLE_Content_XDM-V1_0-20081223-C.pdf subclause C.1.1 - const char* omaprescont_str = "" +#include "txc_api.h" +#ifndef _TEST_OMA_PRESCONTENT_H_ +#define _TEST_OMA_PRESCONTENT_H_ +// http://www.openmobilealliance.org/technical/release_program/docs/PresenceSIMPLE/V2_0-20081223-C/OMA-TS-Presence_SIMPLE_Content_XDM-V1_0-20081223-C.pdf subclause C.1.1 + const char* omaprescont_str0 = "" "" "image/png" "base64" @@ -75,10 +64,15 @@ void test_oma_pres_cont() "+9sf/9/+e/BBgA4y6iYV7kockAAAAASUVORK5CYII=" ""; +/* test OMA directory (urn:oma:xml:xdm:xcap-directory) */ +void test_oma_pres_cont(const char* buffer, size_t size) +{ + txc_oma_prescont_t* omaprescont = 0; + printf("\n---\nTEST OMA PRES-CONTENT\n---\n"); { /* create oma-prescontent */ - omaprescont = xdm_oma_prescont_create(omaprescont_str, strlen(omaprescont_str)); + omaprescont = txc_oma_prescont_create(buffer, size); /* dump */ printf("\ndump pres-content\n"); @@ -88,6 +82,7 @@ void test_oma_pres_cont() omaprescont->mime_type, omaprescont->encoding, omaprescont->description, omaprescont->data); } /* free omaprescontent */ - xdm_oma_prescont_free(&omaprescont); + txc_oma_prescont_free(&omaprescont); } -} \ No newline at end of file +} +#endif /* _TEST_OMA_PRESCONTENT_H_ */ \ No newline at end of file diff --git a/trunk/tinyXCAP/test/test_oma-pres-rules.h b/trunk/tinyXCAP/test/test_oma-pres-rules.h new file mode 100644 index 00000000..c7397c35 --- /dev/null +++ b/trunk/tinyXCAP/test/test_oma-pres-rules.h @@ -0,0 +1,49 @@ +/* +* Copyright (C) 2009 Mamadou Diop. +* +* Contact: Mamadou Diop +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ +#include "txc_api.h" + +#ifndef TEST_OMA_PRESRULES +#define TEST_OMA_PRESRULES + +/* testing oma-presrules */ +void test_oma_presrules() +{ + txc_context_t* context; + char *presrules = 0; + + /* create our XCAP context */ + TXC_CONTEXT_CREATE(context); + + printf("---\nTEST IETF-PRESRULES\n---\n"); + + /* Initialize the context */ + TEST_XXXX_CONTEXT_INIT(context); + + presrules = txc_oma_presrules_serialize(context); + printf("OMA pres-rules: \n%s\n***\n", presrules); + TSK_SAFE_FREE2(presrules); + + /* free the context*/ + TXC_CONTEXT_SAFE_FREE(context); +} + +#endif \ No newline at end of file diff --git a/trunk/tinyXCAP/test/test_selector.h b/trunk/tinyXCAP/test/test_selector.h index 234f43fe..23dba76f 100644 --- a/trunk/tinyXCAP/test/test_selector.h +++ b/trunk/tinyXCAP/test/test_selector.h @@ -35,10 +35,8 @@ void test_selector() printf("---\nTEST XCAP SELECTOR\n---\n"); - context->user_agent = tsk_strdup2("XDM-client/OMA1.1"); - context->txc_root = tsk_strdup2("http://xcap.example.com:8080/services"); - context->password = tsk_strdup2("mysecret"); - context->xui = tsk_strdup2("sip:doubango@example.com"); + /* Initialize the context */ + TEST_XXXX_CONTEXT_INIT(context); //txc_auid_update(context, ietf_resource_lists, "rlist.xml");