## CamelFilterDriver CamelFilterDriver |

## Synopsis

    struct              CamelFilterDriver;
    CamelFolder *       (*CamelFilterGetFolderFunc)         (CamelFilterDriver *driver,
                                                             const gchar *uri,
                                                             gpointer data,
                                                             GError **error);
    CamelFilterDriver * camel_filter_driver_new             (struct _CamelSession *Param1);
    void                camel_filter_driver_set_logfile     (CamelFilterDriver *d,
                                                             FILE *logfile);
    void                camel_filter_driver_set_status_func (CamelFilterDriver *d,
                                                             CamelFilterStatusFunc *func,
                                                             gpointer data);
    void                camel_filter_driver_set_shell_func  (CamelFilterDriver *d,
                                                             CamelFilterShellFunc *func,
                                                             gpointer data);
    void                camel_filter_driver_set_play_sound_func
                                                            (CamelFilterDriver *d,
                                                             CamelFilterPlaySoundFunc *func,
                                                             gpointer data);
    void                camel_filter_driver_set_system_beep_func
                                                            (CamelFilterDriver *d,
                                                             CamelFilterSystemBeepFunc *func,
                                                             gpointer data);
    void                camel_filter_driver_set_folder_func (CamelFilterDriver *d,
                                                             CamelFilterGetFolderFunc fetcher,
                                                             gpointer data);
    void                camel_filter_driver_set_default_folder
                                                            (CamelFilterDriver *d,
                                                             CamelFolder *def);
    void                camel_filter_driver_add_rule        (CamelFilterDriver *d,
                                                             const gchar *name,
                                                             const gchar *match,
                                                             const gchar *action);
    gint                camel_filter_driver_remove_rule_by_name
                                                            (CamelFilterDriver *d,
                                                             const gchar *name);
    void                camel_filter_driver_flush           (CamelFilterDriver *driver,
                                                             GError **error);
    gint                camel_filter_driver_filter_message  (CamelFilterDriver *driver,
                                                             CamelMimeMessage *message,
                                                             CamelMessageInfo *info,
                                                             const gchar *uid,
                                                             CamelFolder *source,
                                                             const gchar *store_uid,
                                                             const gchar *original_store_uid,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gint                camel_filter_driver_filter_mbox     (CamelFilterDriver *driver,
                                                             const gchar *mbox,
                                                             const gchar *original_source_url,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gint                camel_filter_driver_filter_folder   (CamelFilterDriver *driver,
                                                             CamelFolder *folder,
                                                             CamelUIDCache *cache,
                                                             GPtrArray *uids,
                                                             gboolean remove,
                                                             GCancellable *cancellable,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----CamelObject
             +----CamelFilterDriver

## Description

## Details

### struct CamelFilterDriver

    struct CamelFilterDriver;

### CamelFilterGetFolderFunc ()

    CamelFolder *       (*CamelFilterGetFolderFunc)         (CamelFilterDriver *driver,
                                                             const gchar *uri,
                                                             gpointer data,
                                                             GError **error);

### camel_filter_driver_new ()

    CamelFilterDriver * camel_filter_driver_new             (struct _CamelSession *Param1);

Returns : | A new CamelFilterDriver object

### camel_filter_driver_set_logfile ()

    void                camel_filter_driver_set_logfile     (CamelFilterDriver *d,
                                                             FILE *logfile);

### camel_filter_driver_set_status_func ()

    void                camel_filter_driver_set_status_func (CamelFilterDriver *d,
                                                             CamelFilterStatusFunc *func,
                                                             gpointer data);

### camel_filter_driver_set_shell_func ()

    void                camel_filter_driver_set_shell_func  (CamelFilterDriver *d,
                                                             CamelFilterShellFunc *func,
                                                             gpointer data);

### camel_filter_driver_set_play_sound_func ()

    void                camel_filter_driver_set_play_sound_func
                                                            (CamelFilterDriver *d,
                                                             CamelFilterPlaySoundFunc *func,
                                                             gpointer data);

### camel_filter_driver_set_system_beep_func ()

    void                camel_filter_driver_set_system_beep_func
                                                            (CamelFilterDriver *d,
                                                             CamelFilterSystemBeepFunc *func,
                                                             gpointer data);

### camel_filter_driver_set_folder_func ()

    void                camel_filter_driver_set_folder_func (CamelFilterDriver *d,
                                                             CamelFilterGetFolderFunc fetcher,
                                                             gpointer data);

### camel_filter_driver_set_default_folder ()

    void                camel_filter_driver_set_default_folder
                                                            (CamelFilterDriver *d,
                                                             CamelFolder *def);

### camel_filter_driver_add_rule ()

    void                camel_filter_driver_add_rule        (CamelFilterDriver *d,
                                                             const gchar *name,
                                                             const gchar *match,
                                                             const gchar *action);

### camel_filter_driver_remove_rule_by_name ()

    gint                camel_filter_driver_remove_rule_by_name
                                                            (CamelFilterDriver *d,
                                                             const gchar *name);

### camel_filter_driver_flush ()

    void                camel_filter_driver_flush           (CamelFilterDriver *driver,
                                                             GError **error);

Flush all of the only-once filter actions.

`error` : | return location for a GError, or `NULL`

### camel_filter_driver_filter_message ()

    gint                camel_filter_driver_filter_message  (CamelFilterDriver *driver,
                                                             CamelMimeMessage *message,
                                                             CamelMessageInfo *info,
                                                             const gchar *uid,
                                                             CamelFolder *source,
                                                             const gchar *store_uid,
                                                             const gchar *original_store_uid,
                                                             GCancellable *cancellable,
                                                             GError **error);

Filters a message based on rules defined in the FilterDriver object. If the source folder (`source`) and the uid (`uid`) are provided, the filter will operate on the CamelFolder (which in certain cases is more efficient than using the default `camel_folder_append_message()` function).

`driver` : | CamelFilterDriver
`message` : | message to filter or NULL
`info` : | message info or NULL
`uid` : | message uid or NULL
`source` : | source folder or NULL
`store_uid` : | UID of source store, or `NULL`
`original_store_uid` : | UID of source store (pre-movemail), or `NULL`
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | return location for a GError, or `NULL`
Returns : | -1 if errors were encountered during filtering, otherwise returns 0.

### camel_filter_driver_filter_mbox ()

    gint                camel_filter_driver_filter_mbox     (CamelFilterDriver *driver,
                                                             const gchar *mbox,
                                                             const gchar *original_source_url,
                                                             GCancellable *cancellable,
                                                             GError **error);

Filters an mbox file based on rules defined in the FilterDriver object. Is more efficient as it doesn't need to open the folder through Camel directly.

`driver` : | CamelFilterDriver
`mbox` : | mbox filename to be filtered
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | return location for a GError, or `NULL`
Returns : | -1 if errors were encountered during filtering, otherwise returns 0.

### camel_filter_driver_filter_folder ()

    gint                camel_filter_driver_filter_folder   (CamelFilterDriver *driver,
                                                             CamelFolder *folder,
                                                             CamelUIDCache *cache,
                                                             GPtrArray *uids,
                                                             gboolean remove,
                                                             GCancellable *cancellable,
                                                             GError **error);

Filters a folder based on rules defined in the FilterDriver object.

`driver` : | CamelFilterDriver
`folder` : | CamelFolder to be filtered
`cache` : | UID cache (needed for POP folders)
`uids` : | message uids to be filtered or NULL (as a shortcut to filter all messages)
`remove` : | TRUE to mark filtered messages as deleted
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | return location for a GError, or `NULL`
Returns : | -1 if errors were encountered during filtering, otherwise returns 0.