1 /* $Id$ 2 * 3 * Lasso - A free implementation of the Liberty Alliance specifications. 4 * 5 * Copyright (C) 2004-2007 Entr'ouvert 6 * http://lasso.entrouvert.org 7 * 8 * Authors: See AUTHORS file in top-level directory. 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, see <http://www.gnu.org/licenses/>. 22 */ 23 24 #ifndef __LASSO_DATA_SERVICE_H__ 25 #define __LASSO_DATA_SERVICE_H__ 26 27 #ifdef __cplusplus 28 extern "C" { 29 30 #endif /* __cplusplus */ 31 32 #include "wsf_profile.h" 33 #include "../xml/disco_resource_id.h" 34 #include "../xml/disco_encrypted_resource_id.h" 35 #include "../xml/dst_data.h" 36 #include "../xml/dst_modification.h" 37 #include "../xml/dst_query_item.h" 38 #include "../xml/disco_resource_offering.h" 39 #include "../xml/xml.h" 40 #include "../xml/saml_assertion.h" 41 42 #define LASSO_TYPE_DATA_SERVICE (lasso_data_service_get_type()) 43 #define LASSO_DATA_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ 44 LASSO_TYPE_DATA_SERVICE, LassoDataService)) 45 #define LASSO_DATA_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \ 46 LASSO_TYPE_DATA_SERVICE, LassoDataServiceClass)) 47 #define LASSO_IS_DATA_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ 48 LASSO_TYPE_DATA_SERVICE)) 49 #define LASSO_IS_DATA_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ 50 LASSO_TYPE_DATA_SERVICE)) 51 #define LASSO_DATA_SERVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \ 52 LASSO_TYPE_DATA_SERVICE, LassoDataServiceClass)) 53 54 typedef struct _LassoDataService LassoDataService; 55 typedef struct _LassoDataServiceClass LassoDataServiceClass; 56 typedef struct _LassoDataServicePrivate LassoDataServicePrivate; 57 58 struct _LassoDataService { 59 LassoWsfProfile parent; 60 61 /*< private >*/ 62 LassoDataServicePrivate *private_data; 63 }; 64 65 struct _LassoDataServiceClass { 66 LassoWsfProfileClass parent; 67 }; 68 69 70 LASSO_EXPORT GType lasso_data_service_get_type(void); 71 72 LASSO_EXPORT LassoDataService* lasso_data_service_new(LassoServer *server); 73 74 LASSO_EXPORT LassoDataService* lasso_data_service_new_full(LassoServer *server, 75 LassoDiscoResourceOffering *offering); 76 77 LASSO_EXPORT lasso_error_t lasso_data_service_init_query(LassoDataService *service, 78 const char *select, const char *item_id, const char *security_mech_id); 79 80 LASSO_EXPORT lasso_error_t lasso_data_service_add_query_item(LassoDataService *service, 81 const char *select, const char *item_id); 82 83 LASSO_EXPORT lasso_error_t lasso_data_service_process_request_msg(LassoDataService *service, 84 const char *message, const char *security_mech_id); 85 86 LASSO_EXPORT lasso_error_t lasso_data_service_validate_request(LassoDataService *service); 87 88 LASSO_EXPORT lasso_error_t lasso_data_service_build_query_response_msg(LassoDataService *service); 89 90 LASSO_EXPORT lasso_error_t lasso_data_service_build_modify_response_msg(LassoDataService *service); 91 92 LASSO_EXPORT lasso_error_t lasso_data_service_build_response_msg(LassoDataService *service); 93 94 LASSO_EXPORT lasso_error_t lasso_data_service_process_query_response_msg(LassoDataService *service, 95 const char *message); 96 97 LASSO_EXPORT lasso_error_t lasso_data_service_get_answer(LassoDataService *service, 98 xmlNode **output); 99 100 LASSO_EXPORT lasso_error_t lasso_data_service_get_answers(LassoDataService *service, GList **output); 101 102 LASSO_EXPORT lasso_error_t lasso_data_service_get_answers_by_select(LassoDataService *service, 103 const char *select, GList **output); 104 105 LASSO_EXPORT lasso_error_t lasso_data_service_get_answers_by_item_id(LassoDataService *service, 106 const char *item_id, GList **output); 107 108 LASSO_EXPORT lasso_error_t lasso_data_service_init_modify(LassoDataService *service, 109 const char *security_mech_id); 110 111 LASSO_EXPORT lasso_error_t lasso_data_service_add_modification(LassoDataService *service, 112 const gchar *select, xmlNode *xmlData, gboolean overrideAllowed, 113 time_t *notChangedSince, LassoDstModification **output); 114 115 116 LASSO_EXPORT lasso_error_t lasso_data_service_process_modify_response_msg(LassoDataService *service, 117 const gchar *soap_msg); 118 119 LASSO_EXPORT lasso_error_t lasso_data_service_get_query_item(LassoDataService *service, const char *select, 120 const char *item_id, LassoDstQueryItem **output); 121 122 LASSO_EXPORT void lasso_data_service_set_resource_data(LassoDataService *service, const xmlNode *resource_data); 123 124 LASSO_EXPORT xmlNode *lasso_data_service_get_resource_data(LassoDataService *service); 125 126 #ifdef __cplusplus 127 } 128 #endif /* __cplusplus */ 129 130 #endif /* __LASSO_DATA_SERVICE_H__ */ 131