void skypeweb_get_info(PurpleConnection *pc, const gchar *username) { SkypeWebAccount *sa = purple_connection_get_protocol_data(pc); gchar *url; url = g_strdup_printf("/users/%s/profile", purple_url_encode(username)); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, NULL, skypeweb_got_info, g_strdup(username), TRUE); g_free(url); }
void skypeweb_buddy_unblock(PurpleConnection *pc, const char *name) { SkypeWebAccount *sa = purple_connection_get_protocol_data(pc); gchar *url; url = g_strdup_printf("/users/self/contacts/%s/unblock", purple_url_encode(name)); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_PUT | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, "", NULL, NULL, TRUE); g_free(url); }
void skypeweb_search_users_text(gpointer user_data, const gchar *text) { SkypeWebAccount *sa = user_data; GString *url = g_string_new("/search/users/any?"); g_string_append_printf(url, "keyWord=%s&", purple_url_encode(text)); g_string_append(url, "contactTypes[]=skype&"); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url->str, NULL, skypeweb_search_users_text_cb, g_strdup(text), FALSE); g_string_free(url, TRUE); }
void skypeweb_download_video_message(SkypeWebAccount *sa, const gchar *sid, PurpleConversation *conv) { gchar *url, *username_encoded; username_encoded = g_strdup(purple_url_encode(sa->username)); url = g_strdup_printf("/users/%s/video_mails/%s", username_encoded, purple_url_encode(sid)); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_VIDEOMAIL_HOST, url, NULL, skypeweb_got_vm_info, conv, TRUE); g_free(url); g_free(username_encoded); }
void skypeweb_buddy_block(PurpleConnection *pc, const char *name) { SkypeWebAccount *sa = purple_connection_get_protocol_data(pc); gchar *url, *postdata; url = g_strdup_printf("/users/self/contacts/%s/block", purple_url_encode(name)); postdata = g_strdup_printf("reporterIp=127.0.0.1&uiVersion=" SKYPEWEB_CLIENTINFO_VERSION "/" SKYPEWEB_CLIENTINFO_NAME); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_PUT | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, postdata, NULL, NULL, TRUE); g_free(postdata); g_free(url); }
void skypeweb_buddy_remove(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) { SkypeWebAccount *sa = purple_connection_get_protocol_data(pc); gchar *url; url = g_strdup_printf("/users/self/contacts/%s", purple_url_encode(purple_buddy_get_name(buddy))); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_DELETE | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, NULL, NULL, NULL, TRUE); g_free(url); skypeweb_unsubscribe_from_contact_status(sa, purple_buddy_get_name(buddy)); }
void skypeweb_auth_reject_cb(gpointer sender) { PurpleBuddy *buddy = sender; SkypeWebAccount *sa; gchar *url = NULL; sa = purple_connection_get_protocol_data(purple_account_get_connection(purple_buddy_get_account(buddy))); url = g_strdup_printf("/users/self/contacts/auth-request/%s/decline", purple_url_encode(purple_buddy_get_name(buddy))); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_PUT | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, NULL, NULL, NULL, TRUE); g_free(url); }
void skypeweb_get_friend_list(SkypeWebAccount *sa) { gchar *url; if (!sa->username) { //purple_debug_error("skypeweb", "Can't fetch contacts yet, don't have local username"); return; } url = g_strdup_printf("/contacts/v1/users/%s/contacts", purple_url_encode(sa->username)); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_NEW_CONTACTS_HOST, url, NULL, skypeweb_get_friend_list_cb, NULL, TRUE); g_free(url); }
void skypeweb_get_friend_profiles(SkypeWebAccount *sa, GSList *contacts) { const gchar *profiles_url = "/users/self/contacts/profiles"; GString *postdata; GSList *cur = contacts; if (contacts == NULL) return; postdata = g_string_new(""); do { g_string_append_printf(postdata, "&contacts[]=%s", purple_url_encode(cur->data)); } while((cur = g_slist_next(cur))); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_POST | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, profiles_url, postdata->str, skypeweb_got_friend_profiles, NULL, TRUE); g_string_free(postdata, TRUE); }
void skypeweb_add_buddy_with_invite(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char* message) { SkypeWebAccount *sa = purple_connection_get_protocol_data(pc); gchar *url, *postdata; GSList *users_to_fetch; url = g_strdup_printf("/users/self/contacts/auth-request/%s", purple_url_encode(purple_buddy_get_name(buddy))); postdata = g_strdup_printf("greeting=%s", message ? purple_url_encode(message) : ""); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_PUT | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, postdata, NULL, NULL, TRUE); g_free(postdata); g_free(url); // Subscribe to status/message updates users_to_fetch = g_slist_prepend(NULL, purple_buddy_get_name(buddy)); skypeweb_subscribe_to_contact_status(sa, users_to_fetch); g_slist_free(users_to_fetch); }
void skypeweb_auth_accept_cb(gpointer sender) { PurpleBuddy *buddy = sender; SkypeWebAccount *sa; gchar *url = NULL; GSList *users_to_fetch; sa = purple_connection_get_protocol_data(purple_account_get_connection(purple_buddy_get_account(buddy))); url = g_strdup_printf("/users/self/contacts/auth-request/%s/accept", purple_url_encode(purple_buddy_get_name(buddy))); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_PUT | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, url, NULL, NULL, NULL, TRUE); g_free(url); // Subscribe to status/message updates users_to_fetch = g_slist_prepend(NULL, purple_buddy_get_name(buddy)); skypeweb_subscribe_to_contact_status(sa, users_to_fetch); g_slist_free(users_to_fetch); }
static void skypeweb_join_chat(PurpleConnection *pc, GHashTable *data) { SkypeWebAccount *sa = purple_connection_get_protocol_data(pc); gchar *chatname; gchar *post; GString *url; PurpleChatConversation *chatconv; chatname = (gchar *)g_hash_table_lookup(data, "chatname"); if (chatname == NULL) { return; } chatconv = purple_conversations_find_chat_with_account(chatname, sa->account); if (chatconv != NULL) { purple_conversation_present(PURPLE_CONVERSATION(chatconv)); return; } url = g_string_new("/v1/threads/"); g_string_append_printf(url, "%s", purple_url_encode(chatname)); g_string_append(url, "/members/"); g_string_append_printf(url, "8:%s", purple_url_encode(sa->username)); post = "{\"role\":\"User\"}"; skypeweb_post_or_get(sa, SKYPEWEB_METHOD_PUT | SKYPEWEB_METHOD_SSL, sa->messages_host, url->str, post, NULL, NULL, TRUE); g_string_free(url, TRUE); skypeweb_get_conversation_history(sa, chatname); skypeweb_get_thread_users(sa, chatname); chatconv = purple_serv_got_joined_chat(pc, g_str_hash(chatname), chatname); purple_conversation_set_data(PURPLE_CONVERSATION(chatconv), "chatname", g_strdup(chatname)); purple_conversation_present(PURPLE_CONVERSATION(chatconv)); }
static void skypeweb_got_vm_info(SkypeWebAccount *sa, JsonNode *node, gpointer user_data) { PurpleConversation *conv = user_data; JsonObject *obj, *response, *media_stream; const gchar *filename; if (node == NULL || json_node_get_node_type(node) != JSON_NODE_OBJECT) return; obj = json_node_get_object(node); response = json_object_get_object_member(obj, "response"); media_stream = json_object_get_object_member(response, "media_stream"); filename = json_object_get_string_member(media_stream, "filename"); if (filename != NULL) { // Need to keep retrying this url until it comes back with status:ok gchar *url = g_strdup_printf("/vod/api-create?assetId=%s&profile=mp4-vm", purple_url_encode(filename)); skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, "media.vm.skype.com", url, NULL, skypeweb_got_vm_download_info, conv, TRUE); g_free(url); } }
void skypeweb_get_self_details(SkypeWebAccount *sa) { skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, "/users/self/profile", NULL, skypeweb_got_self_details, NULL, TRUE); }
gboolean skypeweb_check_authrequests(SkypeWebAccount *sa) { skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, "/users/self/contacts/auth-request", NULL, skypeweb_got_authrequests, NULL, TRUE); return TRUE; }
void skypeweb_logout(SkypeWebAccount *sa) { skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_LOGIN_HOST, "/logout", NULL, NULL, NULL, TRUE); }
void skypeweb_get_friend_list(SkypeWebAccount *sa) { skypeweb_post_or_get(sa, SKYPEWEB_METHOD_GET | SKYPEWEB_METHOD_SSL, SKYPEWEB_CONTACTS_HOST, "/users/self/contacts", NULL, skypeweb_get_friend_list_cb, NULL, TRUE); }