## EPhotoSource

EPhotoSource — A source of email address photos

## Functions

void | e_photo_source_get_photo ()
gboolean | e_photo_source_get_photo_finish ()

## Types and Values

| EPhotoSource
struct | EPhotoSourceInterface

## Object Hierarchy

        GInterface
        ╰── EPhotoSource

## Prerequisites

EPhotoSource requires GObject.

## Includes

    #include <e-util/e-util.h>

## Description

EPhotoSource is an interface used to extend the functionality of EPhotoCache. You can add an object implementing EPhotoSource to an EPhotoCache with `e_photo_cache_add_photo_source()` and remove it with `e_photo_cache_remove_photo_source()`. When EPhotoCache needs a photo for an email address it will invoke `e_photo_source_get_photo()` on all available EPhotoSource objects simultaneously and select one photo.

## Functions

### e_photo_source_get_photo ()

    void
    e_photo_source_get_photo (EPhotoSource *photo_source,
                              const gchar *email_address,
                              GCancellable *cancellable,
                              GAsyncReadyCallback callback,
                              gpointer user_data);

Asynchronously searches for a photo for `email_address` .

When the operation is finished, `callback` will be called. You can then call `e_photo_source_get_photo_finish()` to get the result of the operation.

#### Parameters

photo_source | an EPhotoSource |
email_address | an email address |
cancellable | optional GCancellable object, or `NULL` |
callback | a GAsyncReadyCallback to call when the request is satisfied |
user_data | data to pass to the callback function |

### e_photo_source_get_photo_finish ()

    gboolean
    e_photo_source_get_photo_finish (EPhotoSource *photo_source,
                                     GAsyncResult *result,
                                     GInputStream **out_stream,
                                     gint *out_priority,
                                     GError **error);

Finishes the operation started with `e_photo_source_get_photo()`.

If a match was found, a GInputStream from which to read image data is returned through the `out_stream` return location, and a suggested priority value for the match is returned through the `out_priority` return location.

You can use the `out_priority` value to rank this result among other EPhotoSource results. The value is usually `G_PRIORITY_DEFAULT` , but may be `G_PRIORITY_LOW` if the result is a fallback image.

If no match was found, the `out_stream` return location is set to `NULL` (the `out_priority` return location will remain unset).

The return value indicates whether the search completed successfully, not whether a match was found. If an error occurred, the function will set `error` and return `FALSE`.

#### Parameters

photo_source | an EPhotoSource |
result | a GAsyncResult |
out_stream | return location for a GInputStream |
out_priority | return location for a priority value, or `NULL` |
error | return location for a GError, or `NULL` |

#### Returns

whether the search completed successfully

## Types and Values

### EPhotoSource

    typedef struct _EPhotoSource EPhotoSource;

### struct EPhotoSourceInterface

    struct EPhotoSourceInterface {
    	GTypeInterface parent_interface;

    	void		(*get_photo)		(EPhotoSource *photo_source,
    						 const gchar *email_address,
    						 GCancellable *cancellable,
    						 GAsyncReadyCallback callback,
    						 gpointer user_data);
    	gboolean (*get_photo_finish) (EPhotoSource *photo_source,
    						 GAsyncResult *result,
    						 GInputStream **out_stream,
    						 gint *out_priority,
    						 GError **error);
    };