| Camel Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
CamelProvider; enum CamelProviderType; enum CamelProviderFlags; #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 #define CAMEL_PROVIDER_ALLOWS (prov, flags) #define CAMEL_PROVIDER_NEEDS (prov, flags) #define CAMEL_PROVIDER_HIDDEN (prov, flags) enum CamelProviderURLFlags; #define CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT(prov) enum CamelProviderConfType; CamelProviderConfEntry; CamelProviderPortEntry; #define CAMEL_PROVIDER_CONF_DEFAULT_USERNAME #define CAMEL_PROVIDER_CONF_DEFAULT_HOSTNAME #define CAMEL_PROVIDER_CONF_DEFAULT_PATHgint (*CamelProviderAutoDetectFunc) (CamelURL *url,,GHashTable **auto_detected); struct CamelProviderModule;GError **errorvoid camel_provider_init (void);gboolean camel_provider_load (const,gchar *path);GError **errorvoid camel_provider_register (CamelProvider *provider);GList * camel_provider_list (); CamelProvider * camel_provider_get (gboolean loadconst,gchar *protocol);GError **errorvoid camel_provider_module_init (void);gint camel_provider_auto_detect (CamelProvider *provider,CamelURL *url,,GHashTable **auto_detected);GError **error
typedef struct {
/* Provider protocol name (e.g. "imap", "smtp"). */
const gchar *protocol;
/* Provider name as used by people. (May be the same as protocol) */
const gchar *name;
/* Description of the provider. A novice user should be able
* to read this description, and the information provided by
* an ISP, IS department, etc, and determine whether or not
* this provider is relevant to him, and if so, which
* information goes with it.
*/
const gchar *description;
/* The category of message that this provider works with.
* (evolution-mail will only list a provider in the store/transport
* config dialogs if its domain is "mail".)
*/
const gchar *domain;
/* Flags describing the provider, flags describing its URLs */
CamelProviderFlags flags;
CamelProviderURLFlags url_flags;
/* The ConfEntry and AutoDetect functions will probably be
* DEPRECATED in a future release */
/* Extra configuration information */
CamelProviderConfEntry *extra_conf;
/* The list of CamelProviderPortEntry structs. Each struct contains
* port number and a short string description ("Default IMAP port"
* or "POP3 over SSL" etc.
*/
CamelProviderPortEntry *port_entries;
/* auto-detection function */
CamelProviderAutoDetectFunc auto_detect;
/* GType(s) of its store and/or transport. If both are
* set, then they are assumed to be linked together and the
* transport type can only be used in an account that also
* uses the store type (eg, Exchange or NNTP).
*/
GType object_types[CAMEL_NUM_PROVIDER_TYPES];
/* GList of CamelServiceAuthTypes the provider supports */
GList *authtypes;
GHashFunc url_hash;
GEqualFunc url_equal;
/* gettext translation domain (NULL for providers in the
* evolution source tree).
*/
const gchar *translation_domain;
/* Private to the provider */
gpointer priv;
} CamelProvider;
typedef enum {
CAMEL_PROVIDER_STORE,
CAMEL_PROVIDER_TRANSPORT,
CAMEL_NUM_PROVIDER_TYPES /*< skip >*/
} CamelProviderType;
typedef enum { /*< flags >*/
CAMEL_PROVIDER_IS_REMOTE = 1 << 0,
CAMEL_PROVIDER_IS_LOCAL = 1 << 1,
CAMEL_PROVIDER_IS_EXTERNAL = 1 << 2,
CAMEL_PROVIDER_IS_SOURCE = 1 << 3,
CAMEL_PROVIDER_IS_STORAGE = 1 << 4,
CAMEL_PROVIDER_SUPPORTS_SSL = 1 << 5,
CAMEL_PROVIDER_HAS_LICENSE = 1 << 6,
CAMEL_PROVIDER_DISABLE_SENT_FOLDER = 1 << 7,
CAMEL_PROVIDER_ALLOW_REAL_TRASH_FOLDER = 1 << 8,
CAMEL_PROVIDER_ALLOW_REAL_JUNK_FOLDER = 1 << 9
} CamelProviderFlags;
typedef enum {
CAMEL_URL_ALLOW_USER = CAMEL_URL_PART_USER,
CAMEL_URL_ALLOW_AUTH = CAMEL_URL_PART_AUTH,
CAMEL_URL_ALLOW_PASSWORD = CAMEL_URL_PART_PASSWORD,
CAMEL_URL_ALLOW_HOST = CAMEL_URL_PART_HOST,
CAMEL_URL_ALLOW_PORT = CAMEL_URL_PART_PORT,
CAMEL_URL_ALLOW_PATH = CAMEL_URL_PART_PATH,
CAMEL_URL_NEED_USER = CAMEL_URL_PART_USER << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_AUTH = CAMEL_URL_PART_AUTH << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PASSWORD = CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_HOST = CAMEL_URL_PART_HOST << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PORT = CAMEL_URL_PART_PORT << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PATH = CAMEL_URL_PART_PATH << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PATH_DIR = CAMEL_URL_PART_PATH_DIR << CAMEL_URL_PART_NEED,
CAMEL_URL_HIDDEN_USER = CAMEL_URL_PART_USER << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_AUTH = CAMEL_URL_PART_AUTH << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_PASSWORD = CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_HOST = CAMEL_URL_PART_HOST << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_PORT = CAMEL_URL_PART_PORT << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_PATH = CAMEL_URL_PART_PATH << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_FRAGMENT_IS_PATH = 1 << 30, /* url uses fragment for folder name path, not path */
CAMEL_URL_PATH_IS_ABSOLUTE = 1 << 31,
} CamelProviderURLFlags;
#define CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT(prov) (prov->object_types[CAMEL_PROVIDER_STORE] && prov->object_types[CAMEL_PROVIDER_TRANSPORT])
typedef enum {
CAMEL_PROVIDER_CONF_END,
CAMEL_PROVIDER_CONF_SECTION_START,
CAMEL_PROVIDER_CONF_SECTION_END,
CAMEL_PROVIDER_CONF_CHECKBOX,
CAMEL_PROVIDER_CONF_CHECKSPIN,
CAMEL_PROVIDER_CONF_ENTRY,
CAMEL_PROVIDER_CONF_LABEL,
CAMEL_PROVIDER_CONF_HIDDEN,
CAMEL_PROVIDER_CONF_OPTIONS
} CamelProviderConfType;
typedef struct {
CamelProviderConfType type;
const gchar *name, *depname;
const gchar *text, *value;
} CamelProviderConfEntry;
typedef struct {
gint port;
const gchar *desc;
gboolean is_ssl;
} CamelProviderPortEntry;
Since 3.2
gint (*CamelProviderAutoDetectFunc) (CamelURL *url,,GHashTable **auto_detected);GError **error
struct CamelProviderModule {
gchar *path;
GSList *types;
guint loaded : 1;
};
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?
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.
|
the path to a shared library |
|
return location for a NULL |
Returns : |
TRUEFALSE |
void camel_provider_register (CamelProvider *provider);
Registers a provider.
|
provider object |
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
|
a CamelProvider protocol name |
|
return location for a NULL |
Returns : |
a CamelProvider for protocolNULL |
gint camel_provider_auto_detect (CamelProvider *provider,CamelURL *url,,GHashTable **auto_detected);GError **error
After filling in the standard Username/Hostname/Port/Path settings
(which must be set in url), if the provider supports it, you
may wish to have the provider auto-detect further settings based on
the aformentioned settings.
If the provider does not support auto-detection, auto_detected
will be set to NULLauto_detected. If
for some reason it cannot auto-detect anything (not enough
information provided in url?) then auto_detected will be
set to NULL
|
camel provider |
|
a CamelURL |
|
output hash table of auto-detected values |
|
return location for a NULL |
Returns : |
0 on success or -1 on fail. |