summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-07-18 23:57:33 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-07-18 23:57:33 +0000
commitba8b50b0e7feaaf2ac7fb5d9b2b6e1b4710aa400 (patch)
tree6b45b108ea45ad83f2ace8c449dabdda422e125b
parent4027d4b394bd18f60af1a931ae59719fc8204821 (diff)
downloadlasso-ba8b50b0e7feaaf2ac7fb5d9b2b6e1b4710aa400.tar.gz
lasso-ba8b50b0e7feaaf2ac7fb5d9b2b6e1b4710aa400.tar.xz
lasso-ba8b50b0e7feaaf2ac7fb5d9b2b6e1b4710aa400.zip
Added new lasso_request_new_from_export() constructor
-rw-r--r--lasso/Attic/protocols/request.c29
-rw-r--r--lasso/Attic/protocols/request.h7
2 files changed, 34 insertions, 2 deletions
diff --git a/lasso/Attic/protocols/request.c b/lasso/Attic/protocols/request.c
index 6ff2c3cd..7361a278 100644
--- a/lasso/Attic/protocols/request.c
+++ b/lasso/Attic/protocols/request.c
@@ -102,3 +102,32 @@ lasso_request_new(const xmlChar *assertionArtifact)
return (request);
}
+
+LassoNode*
+lasso_request_new_from_export(gchar *buffer,
+ lassoNodeExportTypes export_type)
+{
+ LassoNode *request=NULL, *soap_node, *request_node;
+
+ g_return_val_if_fail(buffer != NULL, NULL);
+
+ request = LASSO_NODE(g_object_new(LASSO_TYPE_REQUEST, NULL));
+
+ switch (export_type) {
+ case lassoNodeExportTypeXml:
+ lasso_node_import(request, buffer);
+ break;
+ case lassoNodeExportTypeQuery:
+ case lassoNodeExportTypeBase64:
+ break;
+ case lassoNodeExportTypeSoap:
+ soap_node = lasso_node_new_from_dump(buffer);
+ request_node = lasso_node_get_child(soap_node, "Request", lassoSamlProtocolHRef);
+ lasso_node_import(request, lasso_node_export(request_node));
+ lasso_node_destroy(request_node);
+ lasso_node_destroy(soap_node);
+ break;
+ }
+
+ return (request);
+}
diff --git a/lasso/Attic/protocols/request.h b/lasso/Attic/protocols/request.h
index 08c5c10d..0c5e25af 100644
--- a/lasso/Attic/protocols/request.h
+++ b/lasso/Attic/protocols/request.h
@@ -52,9 +52,12 @@ struct _LassoRequestClass {
LassoSamlpRequestClass parent;
};
-LASSO_EXPORT GType lasso_request_get_type (void);
+LASSO_EXPORT GType lasso_request_get_type (void);
-LASSO_EXPORT LassoNode* lasso_request_new (const xmlChar *assertionArtifact);
+LASSO_EXPORT LassoNode* lasso_request_new (const xmlChar *assertionArtifact);
+
+LASSO_EXPORT LassoNode* lasso_request_new_from_export (gchar *buffer,
+ lassoNodeExportTypes export_type);
#ifdef __cplusplus
}