## CamelIMAPXListResponse

CamelIMAPXListResponse — Stores an IMAP LIST response

## Synopsis

    #include <camel/camel.h>

    struct              CamelIMAPXListResponse;
    CamelIMAPXListResponse * camel_imapx_list_response_new  (CamelIMAPXInputStream *stream,
                                                             GCancellable *cancellable,
                                                             GError **error);
    guint               camel_imapx_list_response_hash      (CamelIMAPXListResponse *response);
    gboolean            camel_imapx_list_response_equal     (CamelIMAPXListResponse *response_a,
                                                             CamelIMAPXListResponse *response_b);
    gint                camel_imapx_list_response_compare   (CamelIMAPXListResponse *response_a,
                                                             CamelIMAPXListResponse *response_b);
    const gchar *       camel_imapx_list_response_get_mailbox_name
                                                            (CamelIMAPXListResponse *response);
    gchar               camel_imapx_list_response_get_separator
                                                            (CamelIMAPXListResponse *response);
    #define             CAMEL_IMAPX_LIST_ATTR_NOINFERIORS
    #define             CAMEL_IMAPX_LIST_ATTR_NOSELECT
    #define             CAMEL_IMAPX_LIST_ATTR_MARKED
    #define             CAMEL_IMAPX_LIST_ATTR_UNMARKED
    #define             CAMEL_IMAPX_LIST_ATTR_NONEXISTENT
    #define             CAMEL_IMAPX_LIST_ATTR_SUBSCRIBED
    #define             CAMEL_IMAPX_LIST_ATTR_REMOTE
    #define             CAMEL_IMAPX_LIST_ATTR_HASCHILDREN
    #define             CAMEL_IMAPX_LIST_ATTR_HASNOCHILDREN
    #define             CAMEL_IMAPX_LIST_ATTR_ALL
    #define             CAMEL_IMAPX_LIST_ATTR_ARCHIVE
    #define             CAMEL_IMAPX_LIST_ATTR_DRAFTS
    #define             CAMEL_IMAPX_LIST_ATTR_FLAGGED
    #define             CAMEL_IMAPX_LIST_ATTR_JUNK
    #define             CAMEL_IMAPX_LIST_ATTR_SENT
    #define             CAMEL_IMAPX_LIST_ATTR_TRASH
    void                camel_imapx_list_response_add_attribute
                                                            (CamelIMAPXListResponse *response,
                                                             const gchar *attribute);
    gboolean            camel_imapx_list_response_has_attribute
                                                            (CamelIMAPXListResponse *response,
                                                             const gchar *attribute);
    GHashTable *        camel_imapx_list_response_dup_attributes
                                                            (CamelIMAPXListResponse *response);
    GVariant *          camel_imapx_list_response_ref_extended_item
                                                            (CamelIMAPXListResponse *response,
                                                             const gchar *extended_item_tag);
    const gchar *       camel_imapx_list_response_get_oldname
                                                            (CamelIMAPXListResponse *response);

## Object Hierarchy

      GObject
       +----CamelIMAPXListResponse

## Description

CamelIMAPXListResponse encapsulates an IMAP LIST response, which consists of a set of mailbox attributes, a mailbox separator character, and the mailbox name. (Extended information for LIST responses, as described in RFC 5258, to be supported at a later date.)

CamelIMAPXListResponse can also convert the mailbox attributes to a CamelStoreInfoFlags / CamelFolderInfoFlags value for use with `camel_store_get_folder_info()`.

## Details

### struct CamelIMAPXListResponse

    struct CamelIMAPXListResponse;

Contains only private data that should be read and manipulated using the functions below.

Since 3.10

### camel_imapx_list_response_new ()

    CamelIMAPXListResponse * camel_imapx_list_response_new  (CamelIMAPXInputStream *stream,
                                                             GCancellable *cancellable,
                                                             GError **error);

Attempts to parse an IMAP LIST response from `stream` and, if successful, stores the response data in a new CamelIMAPXListResponse. If an error occurs, the function sets `error` and returns `NULL`.

`stream` : | a CamelIMAPXInputStream
`cancellable` : | a GCancellable
`error` : | return location for a GError, or `NULL`
Returns : | a CamelIMAPXListResponse, or `NULL`

Since 3.10

### camel_imapx_list_response_hash ()

    guint               camel_imapx_list_response_hash      (CamelIMAPXListResponse *response);

Generates a hash value for `response` based on the mailbox name. This function is intended for easily hashing a CamelIMAPXListResponse to add to a GHashTable or similar data structure.

`response` : | a CamelIMAPXListResponse
Returns : | a hash value for `response`

Since 3.10

### camel_imapx_list_response_equal ()

    gboolean            camel_imapx_list_response_equal     (CamelIMAPXListResponse *response_a,
                                                             CamelIMAPXListResponse *response_b);

Checks two CamelIMAPXListResponse instances for equality based on their mailbox names.

`response_a` : | the first CamelIMAPXListResponse
`response_b` : | the second CamelIMAPXListResponse
Returns : | `TRUE` if `response_a` and `response_b` are equal

Since 3.10

### camel_imapx_list_response_compare ()

    gint                camel_imapx_list_response_compare   (CamelIMAPXListResponse *response_a,
                                                             CamelIMAPXListResponse *response_b);

Compares two CamelIMAPXListResponse instances by their mailbox names.

`response_a` : | the first CamelIMAPXListResponse
`response_b` : | the second CamelIMAPXListResponse
Returns : | a negative value if `response_a` compares before `response_b`, zero if they compare equal, or a positive value if `response_a` compares after `response_b`

Since 3.10

### camel_imapx_list_response_get_mailbox_name ()

    const gchar *       camel_imapx_list_response_get_mailbox_name
                                                            (CamelIMAPXListResponse *response);

Returns the mailbox name for `response`.

`response` : | a CamelIMAPXListResponse
Returns : | the mailbox name

Since 3.10

### camel_imapx_list_response_get_separator ()

    gchar               camel_imapx_list_response_get_separator
                                                            (CamelIMAPXListResponse *response);

Returns the mailbox path separator character for `response`.

`response` : | a CamelIMAPXListResponse
Returns : | the mailbox path separator character

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_NOINFERIORS

    #define CAMEL_IMAPX_LIST_ATTR_NOINFERIORS "\\NoInferiors"

Refer to RFC 3501 section 7.2.2.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_NOSELECT

    #define CAMEL_IMAPX_LIST_ATTR_NOSELECT		"\\NoSelect"

Refer to RFC 3501 section 7.2.2.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_MARKED

    #define CAMEL_IMAPX_LIST_ATTR_MARKED		"\\Marked"

Refer to RFC 3501 section 7.2.2.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_UNMARKED

    #define CAMEL_IMAPX_LIST_ATTR_UNMARKED		"\\Unmarked"

Refer to RFC 3501 section 7.2.2.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_NONEXISTENT

    #define CAMEL_IMAPX_LIST_ATTR_NONEXISTENT "\\NonExistent"

Refer to RFC 5258 section 3.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_SUBSCRIBED

    #define CAMEL_IMAPX_LIST_ATTR_SUBSCRIBED "\\Subscribed"

Refer to RFC 5258 section 3.1.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_REMOTE

    #define CAMEL_IMAPX_LIST_ATTR_REMOTE		"\\Remote"

Refer to RFC 5258 section 3.1.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_HASCHILDREN

    #define CAMEL_IMAPX_LIST_ATTR_HASCHILDREN "\\HasChildren"

Refer to RFC 5258 section 4.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_HASNOCHILDREN

    #define CAMEL_IMAPX_LIST_ATTR_HASNOCHILDREN "\\HasNoChildren"

Refer to RFC 5258 section 4.

Since 3.10

### CAMEL_IMAPX_LIST_ATTR_ALL

    #define CAMEL_IMAPX_LIST_ATTR_ALL		"\\All"

Refer to RFC 6154 section 2.

Since 3.12

### CAMEL_IMAPX_LIST_ATTR_ARCHIVE

    #define CAMEL_IMAPX_LIST_ATTR_ARCHIVE		"\\Archive"

Refer to RFC 6154 section 2.

Since 3.12

### CAMEL_IMAPX_LIST_ATTR_DRAFTS

    #define CAMEL_IMAPX_LIST_ATTR_DRAFTS		"\\Drafts"

Refer to RFC 6154 section 2.

Since 3.12

### CAMEL_IMAPX_LIST_ATTR_FLAGGED

    #define CAMEL_IMAPX_LIST_ATTR_FLAGGED		"\\Flagged"

Refer to RFC 6154 section 2.

Since 3.12

### CAMEL_IMAPX_LIST_ATTR_JUNK

    #define CAMEL_IMAPX_LIST_ATTR_JUNK		"\\Junk"

Refer to RFC 6154 section 2.

Since 3.12

### CAMEL_IMAPX_LIST_ATTR_SENT

    #define CAMEL_IMAPX_LIST_ATTR_SENT		"\\Sent"

Refer to RFC 6154 section 2.

Since 3.12

### CAMEL_IMAPX_LIST_ATTR_TRASH

    #define CAMEL_IMAPX_LIST_ATTR_TRASH		"\\Trash"

Refer to RFC 6154 section 2.

Since 3.12

### camel_imapx_list_response_add_attribute ()

    void                camel_imapx_list_response_add_attribute
                                                            (CamelIMAPXListResponse *response,
                                                             const gchar *attribute);

Adds a mailbox attribute to `response`. The `attribute` should be one of the LIST attribute macros defined above.

`response` : | a CamelIMAPXListResponse
`attribute` : | a mailbox attribute

Since 3.10

### camel_imapx_list_response_has_attribute ()

    gboolean            camel_imapx_list_response_has_attribute
                                                            (CamelIMAPXListResponse *response,
                                                             const gchar *attribute);

Returns whether `response` includes the given mailbox attribute. The `attribute` should be one of the LIST attribute macros defined above.

`response` : | a CamelIMAPXListResponse
`attribute` : | a mailbox attribute
Returns : | `TRUE` if `response` has `attribute`, or else `FALSE`

Since 3.10

### camel_imapx_list_response_dup_attributes ()

    GHashTable *        camel_imapx_list_response_dup_attributes
                                                            (CamelIMAPXListResponse *response);

Returns a GHashTable of mailbox attributes to be used as a set. Use `g_hash_table_contains()` and `g_hash_table_get_keys()` to query for and list all mailbox attributes, respectively.

The hash table keys are all internalized strings and must not be freed. Free the returned GHashTable with `g_hash_table_destroy()` when finished with it.

`response` : | a CamelIMAPXListResponse
Returns : | a newly-created GHashTable

Since 3.10

### camel_imapx_list_response_ref_extended_item ()

    GVariant *          camel_imapx_list_response_ref_extended_item
                                                            (CamelIMAPXListResponse *response,
                                                             const gchar *extended_item_tag);

Returns the extended item value for `extended_item_tag` as a GVariant. The type of the GVariant depends on the extended item. If no value for `extended_item_tag` exists, the function returns `NULL`.

The returned GVariant is referenced for thread-safety and should be unreferenced with `g_variant_unref()` when finished with it.

`response` : | a CamelIMAPXListResponse
`extended_item_tag` : | an extended item tag
Returns : | a GVariant, or `NULL`

Since 3.10

### camel_imapx_list_response_get_oldname ()

    const gchar *       camel_imapx_list_response_get_oldname
                                                            (CamelIMAPXListResponse *response);

Convenience function returns the value of the "OLDNAME" extended data item, or `NULL` if no such extended data item is present.

The presence of this extended data item indicates the mailbox has been renamed. See RFC 5465 Section 5.4 for further details.

`response` : | a CamelIMAPXListResponse
Returns : | the old mailbox name, or `NULL`

Since 3.12