static void web_service_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { WebService *self = WEB_SERVICE (object); switch (property_id) { case PROP_SERVICE_NAME: _g_strset (&self->priv->service_name, g_value_get_string (value)); break; case PROP_SERVICE_ADDRESS: _g_strset (&self->priv->service_address, g_value_get_string (value)); break; case PROP_SERVICE_PROTOCOL: _g_strset (&self->priv->service_protocol, g_value_get_string (value)); break; case PROP_ACCOUNT_TYPE: self->priv->account_type = g_value_get_gtype (value); break; case PROP_CANCELLABLE: _g_object_unref (self->priv->cancellable); self->priv->cancellable = g_value_dup_object (value); break; case PROP_BROWSER: self->priv->browser = g_value_get_pointer (value); break; case PROP_DIALOG: self->priv->dialog = g_value_get_pointer (value); break; default: break; } }
static void picasa_web_service_get_user_info (WebService *base, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { PicasaWebService *self = PICASA_WEB_SERVICE (base); OAuthAccount *account; GHashTable *data_set; SoupMessage *msg; account = web_service_get_current_account (WEB_SERVICE (self)); if (account != NULL) { _g_strset (&self->priv->refresh_token, account->token_secret); _g_strset (&self->priv->access_token, account->token); } data_set = g_hash_table_new (g_str_hash, g_str_equal); if (self->priv->access_token != NULL) { msg = soup_form_request_new_from_hash ("GET", "https://www.googleapis.com/oauth2/v2/userinfo", data_set); _picasa_web_service_add_headers (self, msg); _web_service_send_message (WEB_SERVICE (self), msg, cancellable, callback, user_data, picasa_web_service_get_user_info, picasa_web_service_get_user_info_ready_cb, self); } else { /* Get the access token from the refresh token */ AccessTokenData *data; data = g_new0 (AccessTokenData, 1); data->service = self; data->cancellable = _g_object_ref (cancellable); data->callback = callback; data->user_data = user_data; _picasa_web_service_get_access_token (self, self->priv->refresh_token, cancellable, access_token_ready_cb, data); } g_hash_table_destroy (data_set); }
static void _picasa_web_service_get_access_token_ready_cb (SoupSession *session, SoupMessage *msg, gpointer user_data) { PicasaWebService *self = user_data; GSimpleAsyncResult *result; GError *error = NULL; JsonNode *node; result = _web_service_get_result (WEB_SERVICE (self)); if (picasa_web_utils_parse_json_response (msg, &node, &error)) { JsonObject *obj; OAuthAccount *account; obj = json_node_get_object (node); account = web_service_get_current_account (WEB_SERVICE (self)); if (account != NULL) g_object_set (account, "token", json_object_get_string_member (obj, "access_token"), NULL); else _g_strset (&self->priv->access_token, json_object_get_string_member (obj, "access_token")); } else g_simple_async_result_set_from_error (result, error); g_simple_async_result_complete_in_idle (result); }
static void _picasa_web_service_get_access_token (PicasaWebService *self, const char *refresh_token, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GHashTable *data_set; SoupMessage *msg; _g_strset (&self->priv->access_token, NULL); data_set = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (data_set, "refresh_token", (gpointer) refresh_token); g_hash_table_insert (data_set, "client_id", GTHUMB_PICASA_WEB_CLIENT_ID); g_hash_table_insert (data_set, "client_secret", GTHUMB_PICASA_WEB_CLIENT_SECRET); g_hash_table_insert (data_set, "grant_type", "refresh_token"); msg = soup_form_request_new_from_hash ("POST", "https://accounts.google.com/o/oauth2/token", data_set); _picasa_web_service_add_headers (self, msg); _web_service_send_message (WEB_SERVICE (self), msg, cancellable, callback, user_data, _picasa_web_service_get_access_token, _picasa_web_service_get_access_token_ready_cb, self); g_hash_table_destroy (data_set); }
static void facebook_photo_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { FacebookPhoto *self; self = FACEBOOK_PHOTO (object); switch (property_id) { case PROP_ID: _g_strset (&self->id, g_value_get_string (value)); break; case PROP_PICTURE: _g_strset (&self->picture, g_value_get_string (value)); break; case PROP_SOURCE: _g_strset (&self->source, g_value_get_string (value)); break; case PROP_WIDTH: self->width = g_value_get_int (value); break; case PROP_HEIGHT: self->height = g_value_get_int (value); break; case PROP_LINK: _g_strset (&self->link, g_value_get_string (value)); break; case PROP_CREATED_TIME: gth_datetime_free (self->created_time); self->created_time = g_value_dup_boxed (value); break; case PROP_UPDATED_TIME: gth_datetime_free (self->updated_time); self->updated_time = g_value_dup_boxed (value); break; case PROP_IMAGES: facebook_image_list_free (self->images); self->images = g_value_dup_boxed (value); break; default: break; } }
static void facebook_user_load_from_element (DomDomizable *base, DomElement *element) { FacebookUser *self; DomElement *node; self = FACEBOOK_USER (base); for (node = element->first_child; node; node = node->next_sibling) { if (g_strcmp0 (node->tag_name, "uid") == 0) { _g_strset (&self->id, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "name") == 0) { _g_strset (&self->username, dom_element_get_inner_text (node)); } } }
void facebook_photo_set_original_format (FacebookPhoto *self, const char *value) { _g_strset (&self->original_format, value); g_free (self->mime_type); self->mime_type = NULL; if (self->original_format != NULL) self->mime_type = g_strconcat ("image/", self->original_format, NULL); }
static void picasa_web_service_ask_authorization (WebService *base) { PicasaWebService *self = PICASA_WEB_SERVICE (base); GtkWidget *dialog; _g_strset (&self->priv->refresh_token, NULL); _g_strset (&self->priv->access_token, NULL); dialog = oauth_ask_authorization_dialog_new (picasa_web_service_get_authorization_url (self)); gtk_window_set_default_size (GTK_WINDOW (dialog), 680, 580); _web_service_set_auth_dialog (WEB_SERVICE (self), GTK_DIALOG (dialog)); g_signal_connect (OAUTH_ASK_AUTHORIZATION_DIALOG (dialog), "loaded", G_CALLBACK (ask_authorization_dialog_loaded_cb), self); gtk_widget_show (dialog); }
static FacebookImage * facebook_image_copy (FacebookImage *source) { FacebookImage *dest; dest = facebook_image_new (); _g_strset (&dest->source, source->source); dest->width = source->width; dest->height = source->height; return dest; }
static void ask_authorization_dialog_load_request_cb (OAuthAskAuthorizationDialog *dialog, gpointer user_data) { OAuthService *self = user_data; const char *uri; uri = oauth_ask_authorization_dialog_get_uri (dialog); if (uri == NULL) return; if (g_str_has_prefix (uri, OAUTH_CALLBACK)) { const char *uri_data; GHashTable *data; gboolean success = FALSE; uri_data = uri + strlen (OAUTH_CALLBACK "?"); data = soup_form_decode (uri_data); _g_strset (&self->priv->token, g_hash_table_lookup (data, "oauth_token")); if (self->priv->token != NULL) { gtk_widget_hide (GTK_WIDGET (dialog)); gth_task_dialog (GTH_TASK (self), FALSE, NULL); success = TRUE; _oauth_service_get_access_token (self, g_hash_table_lookup (data, "oauth_verifier"), gth_task_get_cancellable (GTH_TASK (self)), get_access_token_ready_cb, self); } if (! success) gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL); g_hash_table_destroy (data); } }
void picasa_web_album_set_edit_url (PicasaWebAlbum *self, const char *value) { _g_strset (&self->edit_url, value); }
void picasa_web_album_set_alternate_url (PicasaWebAlbum *self, const char *value) { _g_strset (&self->alternate_url, value); }
void picasa_web_album_set_location (PicasaWebAlbum *self, const char *value) { _g_strset (&self->location, value); }
void picasa_web_album_set_summary (PicasaWebAlbum *self, const char *value) { _g_strset (&self->summary, value); }
void facebook_photo_set_title (FacebookPhoto *self, const char *value) { _g_strset (&self->title, value); }
void facebook_user_set_username (FacebookUser *self, const char *value) { _g_strset (&self->username, value); }
void facebook_photo_set_url_o (FacebookPhoto *self, const char *value) { _g_strset (&self->url_o, value); }
void oauth_service_set_token_secret (OAuthService *self, const char *token_secret) { _g_strset (&self->priv->token_secret, token_secret); }
void oauth_service_set_token (OAuthService *self, const char *token) { _g_strset (&self->priv->token, token); }
void picasa_web_album_set_keywords (PicasaWebAlbum *self, const char *value) { _g_strset (&self->keywords, value); }
void facebook_photo_set_server (FacebookPhoto *self, const char *value) { _g_strset (&self->server, value); }
void photobucket_album_set_name (PhotobucketAlbum *self, const char *value) { _g_strset (&self->name, value); }
void picasa_web_album_set_id (PicasaWebAlbum *self, const char *value) { _g_strset (&self->id, value); }
static gboolean facebook_photo_deserialize_property (JsonSerializable *serializable, const gchar *property_name, GValue *value, GParamSpec *pspec, JsonNode *property_node) { FacebookPhoto *self = FACEBOOK_PHOTO (serializable); if (pspec->value_type == GTH_TYPE_DATETIME) { GTimeVal timeval; if (g_time_val_from_iso8601 (json_node_get_string (property_node), &timeval)) { GthDateTime *datetime; datetime = gth_datetime_new (); gth_datetime_from_timeval (datetime, &timeval); g_object_set (self, property_name, datetime, NULL); gth_datetime_free (datetime); return TRUE; } return FALSE; } if (pspec->value_type == FACEBOOK_TYPE_IMAGE_LIST) { GList *images = NULL; JsonArray *array; int i; array = json_node_get_array (property_node); for (i = 0; i < json_array_get_length (array); i++) { JsonObject *image_obj; image_obj = json_array_get_object_element (array, i); if (image_obj != NULL) { FacebookImage *image; image = facebook_image_new (); _g_strset (&image->source, json_object_get_string_member (image_obj, "source")); image->width = json_object_get_int_member (image_obj, "width"); image->height = json_object_get_int_member (image_obj, "height"); images = g_list_prepend (images, image); } } images = g_list_reverse (images); g_object_set (self, property_name, images, NULL); facebook_image_list_free (images); return TRUE; } return json_serializable_default_deserialize_property (serializable, property_name, value, pspec, property_node); }
void picasa_web_album_set_title (PicasaWebAlbum *self, const char *value) { _g_strset (&self->title, value); }
void facebook_user_set_id (FacebookUser *self, const char *value) { _g_strset (&self->id, value); }
void flickr_account_set_accountname (FlickrAccount *self, const char *value) { _g_strset (&self->accountname, value); }
void picasa_web_album_set_etag (PicasaWebAlbum *self, const char *value) { _g_strset (&self->etag, value); }
void facebook_photo_set_id (FacebookPhoto *self, const char *value) { _g_strset (&self->id, value); }