camel-provider: Camel Reference Manual

## camel-provider camel-provider |

## Functions

#define | CAMEL_PROVIDER_ALLOWS()
#define | CAMEL_PROVIDER_NEEDS()
#define | CAMEL_PROVIDER_HIDDEN()
void | camel_provider_init ()
gboolean | camel_provider_load ()
void | camel_provider_register ()
GList * | camel_provider_list ()
CamelProvider * | camel_provider_get ()
void | camel_provider_module_init ()

## Types and Values

#define | EDS_CAMEL_PROVIDER_DIR
#define | CAMEL_URL_PART_USER
#define | CAMEL_URL_PART_AUTH
#define | CAMEL_URL_PART_PASSWORD
#define | CAMEL_URL_PART_HOST
#define | CAMEL_URL_PART_PORT
#define | CAMEL_URL_PART_PATH
#define | CAMEL_URL_PART_PATH_DIR
#define | CAMEL_URL_PART_NEED
#define | CAMEL_URL_PART_HIDDEN
enum | CamelProviderURLFlags
| CamelProviderConfEntry
| CamelProviderPortEntry
struct | CamelProviderModule

## Object Hierarchy

        GBoxed
        ╰── CamelProvider

## Description

## Functions

### CAMEL_PROVIDER_ALLOWS()

    #define             CAMEL_PROVIDER_ALLOWS(prov, flags)

### CAMEL_PROVIDER_NEEDS()

    #define             CAMEL_PROVIDER_NEEDS(prov, flags)

### CAMEL_PROVIDER_HIDDEN()

    #define             CAMEL_PROVIDER_HIDDEN(prov, flags)

### camel_provider_init ()

    void
    camel_provider_init (void);

Initialize the Camel provider system by reading in the .urls files in the provider directory and creating a hash table mapping URLs to module names.

A .urls file has the same initial prefix as the shared library it correspond to, and consists of a series of lines containing the URL protocols that that library handles.

TODO: This should be pathed? TODO: This should be plugin-d?

### camel_provider_load ()

    gboolean
    camel_provider_load (const gchar *path,
                         GError **error);

Loads the provider at `path` , and calls its initialization function, passing `session` as an argument. The provider should then register itself with `session` .

#### Parameters

path | the path to a shared library |
error | return location for a GError, or `NULL` |

#### Returns

`TRUE` on success, `FALSE` on failure

### camel_provider_register ()

    void
    camel_provider_register (CamelProvider *provider);

Registers a provider.

#### Parameters

provider | provider object |

### camel_provider_list ()

    GList *
    camel_provider_list (gboolean load);

This returns a list of available providers. If `load` is `TRUE`, it will first load in all available providers that haven't yet been loaded.

Free the returned list with `g_list_free()`. The CamelProvider structs in the list are owned by Camel and should not be modified or freed.

#### Parameters

load | whether or not to load in providers that are not already loaded |

#### Returns

a GList of CamelProvider structs.

[element-type CamelProvider][transfer container]

### camel_provider_get ()

    CamelProvider *
    camel_provider_get (const gchar *protocol,
                        GError **error);

Returns the registered CamelProvider for `protocol` , loading it from disk if necessary. If no CamelProvider can be found for `protocol` , or the provider module fails to load, the function sets `error` and returns `NULL`.

The returned CamelProvider is owned by Camel and should not be modified or freed.

#### Parameters

protocol | a CamelProvider protocol name |
error | return location for a GError, or `NULL` |

#### Returns

a CamelProvider for `protocol` , or `NULL` on error

### camel_provider_module_init ()

    void
    camel_provider_module_init (void);

## Types and Values

### EDS_CAMEL_PROVIDER_DIR

    #define EDS_CAMEL_PROVIDER_DIR    "EDS_CAMEL_PROVIDER_DIR"

This environment variable configures where the camel provider modules are loaded from.

### CAMEL_URL_PART_USER

    #define CAMEL_URL_PART_USER	 (1 << 0)

### CAMEL_URL_PART_AUTH

    #define CAMEL_URL_PART_AUTH	 (1 << 1)

### CAMEL_URL_PART_PASSWORD

    #define CAMEL_URL_PART_PASSWORD	 (1 << 2)

### CAMEL_URL_PART_HOST

    #define CAMEL_URL_PART_HOST	 (1 << 3)

### CAMEL_URL_PART_PORT

    #define CAMEL_URL_PART_PORT	 (1 << 4)

### CAMEL_URL_PART_PATH

    #define CAMEL_URL_PART_PATH	 (1 << 5)

### CAMEL_URL_PART_PATH_DIR

    #define CAMEL_URL_PART_PATH_DIR  (1 << 6)

### CAMEL_URL_PART_NEED

    #define CAMEL_URL_PART_NEED	       8

### CAMEL_URL_PART_HIDDEN

    #define CAMEL_URL_PART_HIDDEN (CAMEL_URL_PART_NEED + 8)

### enum CamelProviderURLFlags

#### Members

CAMEL_URL_ALLOW_USER |  |
CAMEL_URL_ALLOW_AUTH |  |
CAMEL_URL_ALLOW_PASSWORD |  |
CAMEL_URL_ALLOW_HOST |  |
CAMEL_URL_ALLOW_PORT |  |
CAMEL_URL_ALLOW_PATH |  |
CAMEL_URL_NEED_USER |  |
CAMEL_URL_NEED_AUTH |  |
CAMEL_URL_NEED_PASSWORD |  |
CAMEL_URL_NEED_HOST |  |
CAMEL_URL_NEED_PORT |  |
CAMEL_URL_NEED_PATH |  |
CAMEL_URL_NEED_PATH_DIR |  |
CAMEL_URL_HIDDEN_USER |  |
CAMEL_URL_HIDDEN_AUTH |  |
CAMEL_URL_HIDDEN_PASSWORD |  |
CAMEL_URL_HIDDEN_HOST |  |
CAMEL_URL_HIDDEN_PORT |  |
CAMEL_URL_HIDDEN_PATH |  |

### CamelProviderConfEntry

    typedef struct {
    	CamelProviderConfType type;
    	const gchar *name, *depname;
    	const gchar *text, *value;
    } CamelProviderConfEntry;

Described a configuration entry shown to the user in an application. Some types do not use all the members.

The default values are taken from corresponding GObject properties of the provider's CamelSettings descendant.

#### Members

CamelProviderConfType `type`; | a configuration entry type, one of CamelProviderConfType |
const gchar *`name`; | name of the entry, corresponding to a CamelSettings descendant property name |
const gchar *`depname`; | name of a dependency property, having this entry sensitive only if the `depname` is set; it can start with an exclamation mark (`!`), to negate the condition, aka to have this entry sensitive only if the `depname` is not set. | [nullable]
const gchar *`text`; | user-visible text describing the configuration entry; it should be localized |
const gchar *`value`; | it's ignored for all but the `CAMEL_PROVIDER_CONF_OPTIONS` `type` , where it contains colon (`:`) separated pairs of key:value items for a combo box items; the value is localized with `dgettext()` using the translation domain of the provider. | [nullable]

### CamelProviderPortEntry

    typedef struct {
    	gint port;
    	const gchar *desc;
    	gboolean is_ssl;
    } CamelProviderPortEntry;

#### Members

gint `port`; | port number |
const gchar *`desc`; | human description of the port |
gboolean `is_ssl`; | a boolean whether the port is used together with TLS/SSL |

Since: 3.2

### struct CamelProviderModule

    struct CamelProviderModule {
    	gchar *path;
    	GSList *types;
    	guint loaded : 1;
    };