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