| 62 fb_data_save(fata); |
62 fb_data_save(fata); |
| 63 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED); |
63 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED); |
| 64 } |
64 } |
| 65 |
65 |
| 66 static void |
66 static void |
| 67 fb_cb_icon_fetch(PurpleHttpConnection *con, PurpleHttpResponse *res, |
67 fb_cb_data_icon(PurpleHttpConnection *con, PurpleHttpResponse *res, |
| 68 gpointer data) |
68 gpointer data) |
| 69 { |
69 { |
| 70 const gchar *csum; |
70 const gchar *csum; |
| 71 const gchar *name; |
71 const gchar *name; |
| 72 const gchar *str; |
72 const gchar *str; |
| 73 FbApi *api; |
73 FbApi *api; |
| 74 FbData *fata; |
74 FbDataIcon *icon = data; |
| 75 FbHttpParams *params; |
75 FbHttpParams *params; |
| 76 GError *err = NULL; |
76 GError *err = NULL; |
| 77 gsize size; |
77 gsize size; |
| 78 guchar *idata; |
78 guchar *idata; |
| 79 PurpleAccount *acct; |
79 PurpleAccount *acct; |
| 80 PurpleBuddy *bdy = data; |
|
| 81 PurpleConnection *gc; |
|
| 82 PurpleHttpRequest *req; |
80 PurpleHttpRequest *req; |
| 83 |
81 |
| 84 acct = purple_buddy_get_account(bdy); |
82 acct = purple_buddy_get_account(icon->buddy); |
| 85 gc = purple_account_get_connection(acct); |
83 api = fb_data_get_api(icon->fata); |
| 86 fata = purple_connection_get_protocol_data(gc); |
|
| 87 api = fb_data_get_api(fata); |
|
| 88 |
84 |
| 89 if (!fb_http_error_chk(res, &err)) { |
85 if (!fb_http_error_chk(res, &err)) { |
| 90 fb_cb_api_error(api, err, fata); |
86 fb_cb_api_error(api, err, icon->fata); |
| 91 g_error_free(err); |
87 g_error_free(err); |
| 92 return; |
88 return; |
| 93 } |
89 } |
| 94 |
90 |
| 95 req = purple_http_conn_get_request(con); |
91 req = purple_http_conn_get_request(con); |
| 96 str = purple_http_request_get_url(req); |
92 str = purple_http_request_get_url(req); |
| 97 params = fb_http_params_new_parse(str, TRUE); |
93 params = fb_http_params_new_parse(str, TRUE); |
| 98 csum = fb_http_params_get_str(params, "oh", &err); |
94 csum = fb_http_params_get_str(params, "oh", &err); |
| 99 |
95 |
| 100 name = purple_buddy_get_name(bdy); |
96 name = purple_buddy_get_name(icon->buddy); |
| 101 str = purple_http_response_get_data(res, &size); |
97 str = purple_http_response_get_data(res, &size); |
| 102 idata = g_memdup(str, size); |
98 idata = g_memdup(str, size); |
| 103 |
99 |
| 104 purple_buddy_icons_set_for_user(acct, name, idata, size, csum); |
100 purple_buddy_icons_set_for_user(acct, name, idata, size, csum); |
| 105 fb_http_params_free(params); |
101 fb_http_params_free(params); |
| 147 bdy = purple_blist_find_buddy(acct, uid); |
143 bdy = purple_blist_find_buddy(acct, uid); |
| 148 |
144 |
| 149 if (bdy == NULL) { |
145 if (bdy == NULL) { |
| 150 bdy = purple_buddy_new(acct, uid, user->name); |
146 bdy = purple_buddy_new(acct, uid, user->name); |
| 151 purple_blist_add_buddy(bdy, NULL, grp, NULL); |
147 purple_blist_add_buddy(bdy, NULL, grp, NULL); |
| 152 purple_http_get(gc, fb_cb_icon_fetch, bdy, user->icon); |
148 fb_data_icon_add(fata, bdy, user->icon, |
| |
149 fb_cb_data_icon); |
| 153 continue; |
150 continue; |
| 154 } |
151 } |
| 155 |
152 |
| 156 csum = purple_buddy_icons_get_checksum_for_user(bdy); |
153 csum = purple_buddy_icons_get_checksum_for_user(bdy); |
| 157 |
154 |
| 158 if (!purple_strequal(csum, user->csum)) { |
155 if (!purple_strequal(csum, user->csum)) { |
| 159 purple_http_get(gc, fb_cb_icon_fetch, bdy, user->icon); |
156 fb_data_icon_add(fata, bdy, user->icon, |
| |
157 fb_cb_data_icon); |
| 160 } |
158 } |
| 161 } |
159 } |
| 162 |
160 |
| |
161 fb_data_icon_queue(fata); |
| 163 purple_connection_update_progress(gc, _("Connecting"), 3, 4); |
162 purple_connection_update_progress(gc, _("Connecting"), 3, 4); |
| 164 fb_api_connect(api); |
163 fb_api_connect(api); |
| 165 } |
164 } |
| 166 |
165 |
| 167 static void |
166 static void |