## camel-url

camel-url

## Synopsis

                        CamelURL;
    #define             CAMEL_URL_HIDE_PASSWORD
    #define             CAMEL_URL_HIDE_PARAMS
    #define             CAMEL_URL_HIDE_AUTH
    #define             CAMEL_URL_HIDE_ALL
    CamelURL *          camel_url_new_with_base             (CamelURL *base,
                                                             const char *url_string);
    CamelURL *          camel_url_new                       (const char *url_string,
                                                             CamelException *ex);
    char *              camel_url_to_string                 (CamelURL *url,
                                                             guint32 flags);
    void                camel_url_free                      (CamelURL *url);
    char *              camel_url_encode                    (const char *part,
                                                             const char *escape_extra);
    void                camel_url_decode                    (char *part);
    char *              camel_url_decode_path               (const char *path);
    void                camel_url_set_protocol              (CamelURL *url,
                                                             const char *protocol);
    void                camel_url_set_user                  (CamelURL *url,
                                                             const char *user);
    void                camel_url_set_authmech              (CamelURL *url,
                                                             const char *authmech);
    void                camel_url_set_passwd                (CamelURL *url,
                                                             const char *passwd);
    void                camel_url_set_host                  (CamelURL *url,
                                                             const char *host);
    void                camel_url_set_port                  (CamelURL *url,
                                                             int port);
    void                camel_url_set_path                  (CamelURL *url,
                                                             const char *path);
    void                camel_url_set_param                 (CamelURL *url,
                                                             const char *name,
                                                             const char *value);
    void                camel_url_set_query                 (CamelURL *url,
                                                             const char *query);
    void                camel_url_set_fragment              (CamelURL *url,
                                                             const char *fragment);
    const char *        camel_url_get_param                 (CamelURL *url,
                                                             const char *name);
    guint               camel_url_hash                      (const void *v);
    int                 camel_url_equal                     (const void *v,
                                                             const void *v2);
    CamelURL *          camel_url_copy                      (const CamelURL *in);

## Description

## Details

### CamelURL

    typedef struct {
    	char  *protocol;
    	char  *user;
    	char  *authmech;
    	char  *passwd;
    	char  *host;
    	int    port;
    	char  *path;
    	GData *params;
    	char  *query;
    	char  *fragment;
    } CamelURL;

### CAMEL_URL_HIDE_PASSWORD

    #define CAMEL_URL_HIDE_PASSWORD (1 << 0)

### CAMEL_URL_HIDE_PARAMS

    #define CAMEL_URL_HIDE_PARAMS (1 << 1)

### CAMEL_URL_HIDE_AUTH

    #define CAMEL_URL_HIDE_AUTH (1 << 2)

### CAMEL_URL_HIDE_ALL

    #define CAMEL_URL_HIDE_ALL (CAMEL_URL_HIDE_PASSWORD | CAMEL_URL_HIDE_PARAMS | CAMEL_URL_HIDE_AUTH)

### camel_url_new_with_base ()

    CamelURL *          camel_url_new_with_base             (CamelURL *base,
                                                             const char *url_string);

Parses `url_string` relative to `base`.

`base` : | a base URL
`url_string` : | the URL
Returns : | a parsed CamelURL

### camel_url_new ()

    CamelURL *          camel_url_new                       (const char *url_string,
                                                             CamelException *ex);

Parses an absolute URL.

`url_string` : | a URL string
`ex` : | a CamelException
Returns : | a CamelURL if it can be parsed, or `NULL` otherwise

### camel_url_to_string ()

    char *              camel_url_to_string                 (CamelURL *url,
                                                             guint32 flags);

Flatten a CamelURL into a string.

`url` : | a CamelURL
`flags` : | additional translation options
Returns : | a string representing `url`, which the caller must free

### camel_url_free ()

    void                camel_url_free                      (CamelURL *url);

Frees `url`.

`url` : | a CamelURL

### camel_url_encode ()

    char *              camel_url_encode                    (const char *part,
                                                             const char *escape_extra);

This `-encodes` the given URL part and returns the escaped version in allocated memory, which the caller must free when it is done.

`part` : | a URL part
`escape_extra` : | additional characters beyond " \"%#<>{}|\^[]`" to escape (or `NULL`)
Returns : | the encoded string

### camel_url_decode ()

    void                camel_url_decode                    (char *part);

`-decodes` the passed-in URL *in place*. The decoded version is never longer than the encoded version, so there does not need to be any additional space at the end of the string.

`part` : | a URL part

### camel_url_decode_path ()

    char *              camel_url_decode_path               (const char *path);

`path` : |
Returns : |

### camel_url_set_protocol ()

    void                camel_url_set_protocol              (CamelURL *url,
                                                             const char *protocol);

Set the protocol of a CamelURL.

`url` : | a CamelURL
`protocol` : | protocol schema

### camel_url_set_user ()

    void                camel_url_set_user                  (CamelURL *url,
                                                             const char *user);

Set the user of a CamelURL.

`url` : | a CamelURL
`user` : | username

### camel_url_set_authmech ()

    void                camel_url_set_authmech              (CamelURL *url,
                                                             const char *authmech);

Set the authmech of a CamelURL.

`url` : | a CamelURL
`authmech` : | authentication mechanism

### camel_url_set_passwd ()

    void                camel_url_set_passwd                (CamelURL *url,
                                                             const char *passwd);

Set the password of a CamelURL.

`url` : | a CamelURL
`passwd` : | password

### camel_url_set_host ()

    void                camel_url_set_host                  (CamelURL *url,
                                                             const char *host);

Set the hostname of a CamelURL.

`url` : | a CamelURL
`host` : | hostname

### camel_url_set_port ()

    void                camel_url_set_port                  (CamelURL *url,
                                                             int port);

Set the port on a CamelURL.

`url` : | a CamelURL
`port` : | port

### camel_url_set_path ()

    void                camel_url_set_path                  (CamelURL *url,
                                                             const char *path);

Set the path component of a CamelURL.

`url` : | a CamelURL
`path` : | path

### camel_url_set_param ()

    void                camel_url_set_param                 (CamelURL *url,
                                                             const char *name,
                                                             const char *value);

Set a param on the CamelURL.

`url` : | a CamelURL
`name` : | name of the param to set
`value` : | value of the param to set

### camel_url_set_query ()

    void                camel_url_set_query                 (CamelURL *url,
                                                             const char *query);

Set the query of a CamelURL.

`url` : | a CamelURL
`query` : | url query

### camel_url_set_fragment ()

    void                camel_url_set_fragment              (CamelURL *url,
                                                             const char *fragment);

Set the fragment of a CamelURL.

`url` : | a CamelURL
`fragment` : | url fragment

### camel_url_get_param ()

    const char *        camel_url_get_param                 (CamelURL *url,
                                                             const char *name);

Get the value of the specified param on the URL.

`url` : | a CamelURL
`name` : | name of the param
Returns : | the value of a param if found or `NULL` otherwise

### camel_url_hash ()

    guint               camel_url_hash                      (const void *v);

`v` : |
Returns : |

### camel_url_equal ()

    int                 camel_url_equal                     (const void *v,
                                                             const void *v2);

`v` : |
`v2` : |
Returns : |

### camel_url_copy ()

    CamelURL *          camel_url_copy                      (const CamelURL *in);

Copy a CamelURL.

`in` : | a CamelURL to copy
Returns : | a duplicate copy of `in`