LassoSoapEnvelope

## LassoSoapEnvelope LassoSoapEnvelope — <soap:Envelope> |

## Synopsis

    struct              LassoSoapEnvelope;
    LassoSoapEnvelope * lasso_soap_envelope_new             (LassoSoapBody *body);
    LassoSoapEnvelope * lasso_soap_envelope_new_from_message
                                                            (const gchar *message);

    void                lasso_soap_envelope_add_action      (LassoSoapEnvelope *soap_envelope,
                                                             const char *action);
    void                lasso_soap_envelope_add_security_token
                                                            (LassoSoapEnvelope *soap_envelope,
                                                             LassoNode *token);
    void                lasso_soap_envelope_add_to_body     (LassoSoapEnvelope *soap_envelope,
                                                             LassoNode *content);
    const char *        lasso_soap_envelope_get_action      (LassoSoapEnvelope *soap_envelope);
    GList *             lasso_soap_envelope_get_body_content
                                                            (LassoSoapEnvelope *soap_envelope);
    LassoWsAddrAttributedURI * lasso_soap_envelope_get_message_id
                                                            (LassoSoapEnvelope *soap_envelope,
                                                             gboolean create);
    LassoWsAddrRelatesTo * lasso_soap_envelope_get_relates_to
                                                            (LassoSoapEnvelope *envelope,
                                                             gboolean create);
    LassoSaml2Assertion * lasso_soap_envelope_get_saml2_security_token
                                                            (LassoSoapEnvelope *soap_envelope);
    LassoIdWsf2Sb2UserInteractionHint lasso_soap_envelope_get_sb2_user_interaction_hint
                                                            (LassoSoapEnvelope *soap_envelope);
    char *              lasso_soap_envelope_sb2_get_provider_id
                                                            (LassoSoapEnvelope *soap_envelope);
    const char *        lasso_soap_envelope_sb2_get_redirect_request_url
                                                            (LassoSoapEnvelope *soap_envelope);
    LassoIdWsf2Sb2TargetIdentity * lasso_soap_envelope_sb2_get_target_identity_header
                                                            (LassoSoapEnvelope *soap_envelope);
    void                lasso_soap_envelope_set_sb2_user_interaction_hint
                                                            (LassoSoapEnvelope *soap_envelope,
                                                             LassoIdWsf2Sb2UserInteractionHint hint);
    LassoWsSec1SecurityHeader * lasso_soap_envelope_wssec_get_security_header
                                                            (LassoSoapEnvelope *soap_envelope);
    LassoSoapFault *    lasso_soap_envelope_get_soap_fault  (LassoSoapEnvelope *soap_envelope,
                                                             gboolean create);
    void                lasso_soap_envelope_set_relates_to  (LassoSoapEnvelope *soap_envelope,
                                                             char *value,
                                                             char *relationship);

## Description

## Details

### struct LassoSoapEnvelope

    struct LassoSoapEnvelope {
    	LassoNode parent;

    	LassoSoapHeader *Header;
    	LassoSoapBody *Body;
    };

### lasso_soap_envelope_new ()

    LassoSoapEnvelope * lasso_soap_envelope_new             (LassoSoapBody *body);

### lasso_soap_envelope_new_from_message ()

    LassoSoapEnvelope * lasso_soap_envelope_new_from_message
                                                            (const gchar *message);

### lasso_soap_envelope_add_action ()

    void                lasso_soap_envelope_add_action      (LassoSoapEnvelope *soap_envelope,
                                                             const char *action);

### lasso_soap_envelope_add_security_token ()

    void                lasso_soap_envelope_add_security_token
                                                            (LassoSoapEnvelope *soap_envelope,
                                                             LassoNode *token);

Add `token` as a security token to the headers of `soap_envelope` using a LassoWsSec1SecurityHeader element as a container. Eventually create the LassoWsSec1SecurityHeader element if it does not exist already.

`soap_envelope` : | a LassoSoapEnvelope object
`token` : | a LassoNode to use as a security token

### lasso_soap_envelope_add_to_body ()

    void                lasso_soap_envelope_add_to_body     (LassoSoapEnvelope *soap_envelope,
                                                             LassoNode *content);

Add new content to the SOAP message body.

`soap_envelope` : | a LassoSoapEnvelope object
`content` : | a LassoNode object to add to the body of the SOAP message

### lasso_soap_envelope_get_action ()

    const char *        lasso_soap_envelope_get_action      (LassoSoapEnvelope *soap_envelope);

### lasso_soap_envelope_get_body_content ()

    GList *             lasso_soap_envelope_get_body_content
                                                            (LassoSoapEnvelope *soap_envelope);

Return the body content of the `soap_envelope` object.

`soap_envelope` : | a LassoSoapEnvelope object
Returns : | the content or NULL if the concent is empty or the object invalid. [element-type LassoNode]

### lasso_soap_envelope_get_message_id ()

    LassoWsAddrAttributedURI * lasso_soap_envelope_get_message_id
                                                            (LassoSoapEnvelope *soap_envelope,
                                                             gboolean create);

Return the WS-Addressing header MessageID content.

`soap_envelope` : | a LassoSoapEnvelope object
`create` : | whether to create the node if it is not found. [default FALSE]
Returns : | a LassoWsAddrAttributedURI object or NULL if none is found, and creation was not allowed. [transfer none]

### lasso_soap_envelope_get_relates_to ()

    LassoWsAddrRelatesTo * lasso_soap_envelope_get_relates_to
                                                            (LassoSoapEnvelope *envelope,
                                                             gboolean create);

Returns the RelatesTo WS-Addressing header, if it exists.

`soap_envelope` : | a LassoSoapEnvelope object
`create` : | whether to create the node if it is not found. [default FALSE]
Returns : | a LassoWsAddrAttributedURI object or NULL if none is found, and creation was not allowed. [transfer none]

### lasso_soap_envelope_get_saml2_security_token ()

    LassoSaml2Assertion * lasso_soap_envelope_get_saml2_security_token
                                                            (LassoSoapEnvelope *soap_envelope);

Return a SAML2 Assertion used as a security token if one is found in the headers of `soap_envelope`.

`soap_envelope` : | a LassoSoapEnvelope object
Returns : | a LassoSaml2Assertion, or NULL if none is found. [transfer none]

### lasso_soap_envelope_get_sb2_user_interaction_hint ()

    LassoIdWsf2Sb2UserInteractionHint lasso_soap_envelope_get_sb2_user_interaction_hint
                                                            (LassoSoapEnvelope *soap_envelope);

### lasso_soap_envelope_sb2_get_provider_id ()

    char *              lasso_soap_envelope_sb2_get_provider_id
                                                            (LassoSoapEnvelope *soap_envelope);

Return the providerID contained in the sb2:Sender header.

`soap_envelope` : | a LassoSoapEnvelope object
Returns : | the providerID string or NULL if no sb2:Sender header is present.

### lasso_soap_envelope_sb2_get_redirect_request_url ()

    const char *        lasso_soap_envelope_sb2_get_redirect_request_url
                                                            (LassoSoapEnvelope *soap_envelope);

Return the redirect request URL from the sb2:RedirectRequest SOAP Fault detail.

The WSC MUST verify that this URL belong to the WSP. You can do this by comparing the domain with the one in the `LassoProfile.msg_url` field

The WSC MUST redirect the User Agent to this URL with a GET or POST request. It MUST add a parameter named ReturnToURL giving the URL where the WSP will send the User Agent after the interaction. It MAY add an IDP parameter indicating to the WSP how to authenticate the principal if no preexisting session with the User Agent exists

The WSP must check that the ReturnToURL belon to the WSP, by using the providerID URL for example.

After the interaction the WSC must redirect the User Agent to the ReturnToURL URL adding a parameter named ResendMessage. If ResendMessage is 0 or false, it means that the principal refused to continue the process. Any other value means that the prinicpal accepted and so the WSC can try again its request.

In order to succeed the request need to refer to the SOAP Fault response containing the RedirectRequest element. See `lasso_soap_envelope_get_relates_to()`, and LassoWsAddrAttributedURI.

`soap_envelope` : | a LassoSoapEnvelope object
Returns : | the redirect URL string or NULL if no sb2:RedirectRequest detail is present. [transfer none][allow-none]

### lasso_soap_envelope_sb2_get_target_identity_header ()

    LassoIdWsf2Sb2TargetIdentity * lasso_soap_envelope_sb2_get_target_identity_header
                                                            (LassoSoapEnvelope *soap_envelope);

Return the first sb2:TargetIdentity header.

`soap_envelope` : | a LassoSoapEnvelope object.
Returns : | the first LassoIdWsf2Sb2TargetIdentity object found in the headers of the `soap_envelope`, or NULL if none is found. [transfer none]

### lasso_soap_envelope_set_sb2_user_interaction_hint ()

    void                lasso_soap_envelope_set_sb2_user_interaction_hint
                                                            (LassoSoapEnvelope *soap_envelope,
                                                             LassoIdWsf2Sb2UserInteractionHint hint);

### lasso_soap_envelope_wssec_get_security_header ()

    LassoWsSec1SecurityHeader * lasso_soap_envelope_wssec_get_security_header
                                                            (LassoSoapEnvelope *soap_envelope);

Return the first wsse:Security header found in the headers of `soap_envelope`.

`soap_envelope` : | a LassoSoapEnvelope object
Returns : | the wsse:Security header found in the SOAP message, or NULL if none is found. [transfer none]

### lasso_soap_envelope_get_soap_fault ()

    LassoSoapFault *    lasso_soap_envelope_get_soap_fault  (LassoSoapEnvelope *soap_envelope,
                                                             gboolean create);

Return the first SOAP Fault in the Body of the soap message `soap_envelope`.

`soap_envelope` : | a LassoSoapEnvelope
`create` : | whether to create the SOAP Fault. [default FALSE]
Returns : | a LassoSoapFault object or NULL. [transfer none][allow-none]

### lasso_soap_envelope_set_relates_to ()

    void                lasso_soap_envelope_set_relates_to  (LassoSoapEnvelope *soap_envelope,
                                                             char *value,
                                                             char *relationship);

Set the value of the RelatesTo header, if it does not exist it is created. If `value` is NULL, the header is removed.

`soap_envelope` : | a LassoSoapEnvelope object
`value:(allow-none)` : | the value to set into the new header
`relationship:(allow-none)` : | kind of the relationship