## LassoSession

LassoSession — Principal Session

## Functions

LassoSession * | lasso_session_new ()
LassoSession * | lasso_session_new_from_dump ()
gchar * | lasso_session_dump ()
void | lasso_session_destroy ()
GList * | lasso_session_get_assertions ()
LassoNode * | lasso_session_get_assertion ()
lasso_error_t | lasso_session_remove_assertion ()
lasso_error_t | lasso_session_add_assertion ()
gchar * | lasso_session_get_provider_index ()
gboolean | lasso_session_is_empty ()

## Types and Values

struct | LassoSession

## Description

## Functions

### lasso_session_new ()

    LassoSession *
    lasso_session_new (void);

Creates a new LassoSession.

#### Returns

a newly created LassoSession

### lasso_session_new_from_dump ()

    LassoSession *
    lasso_session_new_from_dump (const gchar *dump);

Restores the `dump` to a new LassoSession.

#### Parameters

dump | XML server dump |

#### Returns

a newly created LassoSession; or NULL if an error occured

### lasso_session_dump ()

    gchar *
    lasso_session_dump (LassoSession *session);

Dumps `session` content to an XML string.

#### Parameters

session | a LassoSession |

#### Returns

the dump string. It must be freed by the caller.

[transfer full]

### lasso_session_destroy ()

    void
    lasso_session_destroy (LassoSession *session);

Destroys a session.

#### Parameters

session | a LassoSession |

### lasso_session_get_assertions ()

    GList *
    lasso_session_get_assertions (LassoSession *session,
                                  const char *provider_id);

Gets the assertions for the given `provider_id` .

#### Parameters

session | a LassoSession |
provider_id | the provider ID |

#### Returns

a list of LassoSamlAssertion.

[allow-none][transfer container][element-type LassoNode]

### lasso_session_get_assertion ()

    LassoNode *
    lasso_session_get_assertion (LassoSession *session,
                                 const gchar *providerID);

Gets the assertion for the given `providerID` .

#### Parameters

session | a LassoSession |
providerID | the provider ID |

#### Returns

the assertion or NULL if it didn't exist. This LassoSamlAssertion is internally allocated and must not be freed by the caller.

[transfer none][allow-none]

### lasso_session_remove_assertion ()

    lasso_error_t
    lasso_session_remove_assertion (LassoSession *session,
                                    const gchar *providerID);

Removes assertion for `providerID` from `session` .

#### Parameters

session | a LassoSession |
providerID | the provider ID |

#### Returns

0 on success; or a negative value otherwise.

### lasso_session_add_assertion ()

    lasso_error_t
    lasso_session_add_assertion (LassoSession *session,
                                 const char *providerID,
                                 LassoNode *assertion);

Adds `assertion` to the principal session. This function also add the assertion to the index by assertionID.

#### Parameters

session | a LassoSession |
providerID | the provider ID |
assertion | the assertion |

#### Returns

0 on success; or a negative value otherwise.

### lasso_session_get_provider_index ()

    gchar *
    lasso_session_get_provider_index (LassoSession *session,
                                      gint index);

Looks up and returns the nth provider id.

#### Parameters

session | a LassoSession |
index | index of requested provider |

#### Returns

the provider id; or NULL if there were no nth provider. This string must be freed by the caller.

[transfer full][allow-none]

### lasso_session_is_empty ()

    gboolean
    lasso_session_is_empty (LassoSession *session);

Returns `TRUE` if session is empty.

#### Parameters

session | a LassoSession |

#### Returns

`TRUE` if empty

## Types and Values

### struct LassoSession

    struct LassoSession {
    	LassoNode parent;

    	/* Can actually contain LassoSamlAssertion or LassoSaml2Assertion */
    	GHashTable *assertions; /* of LassoNode */
    	gboolean is_dirty;
    };

LassoSession stores the assertions received or emitted during the current session. It stores state for using profiles like LassoLogin or LassoLogout.

#### Members

LassoNode `parent`; |  |
GHashTable *`assertions`; | a hashtable of LassoSamlAssertion or LassoSaml2Assertion, indexed by provider ids,. | [element-type string LassoNode]
gboolean `is_dirty`; | whether this session object has been modified since its creation. |