| 34 #include <json-glib/json-glib.h> |
34 #include <json-glib/json-glib.h> |
| 35 |
35 |
| 36 #include <glib/gi18n-lib.h> |
36 #include <glib/gi18n-lib.h> |
| 37 |
37 |
| 38 #include <purple.h> |
38 #include <purple.h> |
| |
39 #include "libpurple/soupcompat.h" |
| 39 |
40 |
| 40 #define GGP_EDISC_OS "WINNT x86-msvc" |
41 #define GGP_EDISC_OS "WINNT x86-msvc" |
| 41 #define GGP_EDISC_TYPE "desktop" |
42 #define GGP_EDISC_TYPE "desktop" |
| 42 #define GGP_EDISC_API "6" |
43 #define GGP_EDISC_API "6" |
| 43 |
44 |
| 265 ggp_ggdrive_auth_done(G_GNUC_UNUSED SoupSession *session, SoupMessage *msg, |
266 ggp_ggdrive_auth_done(G_GNUC_UNUSED SoupSession *session, SoupMessage *msg, |
| 266 gpointer user_data) |
267 gpointer user_data) |
| 267 { |
268 { |
| 268 PurpleConnection *gc = user_data; |
269 PurpleConnection *gc = user_data; |
| 269 ggp_edisc_session_data *sdata = ggp_edisc_get_sdata(gc); |
270 ggp_edisc_session_data *sdata = ggp_edisc_get_sdata(gc); |
| |
271 SoupStatus status_code; |
| 270 JsonParser *parser; |
272 JsonParser *parser; |
| 271 JsonObject *result; |
273 JsonObject *result; |
| 272 int status = -1; |
274 int status = -1; |
| 273 |
275 |
| 274 g_return_if_fail(sdata != NULL); |
276 g_return_if_fail(sdata != NULL); |
| 275 |
277 |
| 276 sdata->auth_request = NULL; |
278 sdata->auth_request = NULL; |
| 277 |
279 |
| 278 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { |
280 status_code = soup_message_get_status(msg); |
| |
281 if (!SOUP_STATUS_IS_SUCCESSFUL(status_code)) { |
| 279 purple_debug_misc("gg", |
282 purple_debug_misc("gg", |
| 280 "ggp_ggdrive_auth_done: authentication failed due to " |
283 "ggp_ggdrive_auth_done: authentication failed due to " |
| 281 "unsuccessful request (code = %d)", |
284 "unsuccessful request (code = %d)", |
| 282 msg->status_code); |
285 status_code); |
| 283 ggp_ggdrive_auth_results(gc, FALSE); |
286 ggp_ggdrive_auth_results(gc, FALSE); |
| 284 return; |
287 return; |
| 285 } |
288 } |
| 286 |
289 |
| 287 parser = ggp_json_parse(msg->response_body->data); |
290 parser = ggp_json_parse(msg->response_body->data); |
| 454 |
457 |
| 455 g_return_if_fail(sdata != NULL); |
458 g_return_if_fail(sdata != NULL); |
| 456 |
459 |
| 457 edisc_xfer->msg = NULL; |
460 edisc_xfer->msg = NULL; |
| 458 |
461 |
| 459 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { |
462 if (!SOUP_STATUS_IS_SUCCESSFUL(soup_message_get_status(msg))) { |
| 460 int error_id = ggp_edisc_parse_error(msg->response_body->data); |
463 int error_id = ggp_edisc_parse_error(msg->response_body->data); |
| 461 if (error_id == 206) /* recipient not logged in */ |
464 if (error_id == 206) /* recipient not logged in */ |
| 462 ggp_edisc_xfer_error(xfer, |
465 ggp_edisc_xfer_error(xfer, |
| 463 _("Recipient not logged in")); |
466 _("Recipient not logged in")); |
| 464 else if (error_id == 207) /* bad sender recipient relation */ |
467 else if (error_id == 207) /* bad sender recipient relation */ |
| 602 |
605 |
| 603 g_return_if_fail(edisc_xfer != NULL); |
606 g_return_if_fail(edisc_xfer != NULL); |
| 604 |
607 |
| 605 edisc_xfer->msg = NULL; |
608 edisc_xfer->msg = NULL; |
| 606 |
609 |
| 607 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { |
610 if (!SOUP_STATUS_IS_SUCCESSFUL(soup_message_get_status(msg))) { |
| 608 ggp_edisc_xfer_error(xfer, _("Error while sending a file")); |
611 ggp_edisc_xfer_error(xfer, _("Error while sending a file")); |
| 609 return; |
612 return; |
| 610 } |
613 } |
| 611 |
614 |
| 612 parser = ggp_json_parse(msg->response_body->data); |
615 parser = ggp_json_parse(msg->response_body->data); |
| 739 } |
742 } |
| 740 |
743 |
| 741 edisc_xfer = GGP_XFER(xfer); |
744 edisc_xfer = GGP_XFER(xfer); |
| 742 edisc_xfer->msg = NULL; |
745 edisc_xfer->msg = NULL; |
| 743 |
746 |
| 744 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { |
747 if (!SOUP_STATUS_IS_SUCCESSFUL(soup_message_get_status(msg))) { |
| 745 ggp_edisc_xfer_error(xfer, _("Cannot confirm file transfer.")); |
748 ggp_edisc_xfer_error(xfer, _("Cannot confirm file transfer.")); |
| 746 return; |
749 return; |
| 747 } |
750 } |
| 748 |
751 |
| 749 purple_debug_info("gg", "ggp_edisc_xfer_recv_ack_done: [%s]\n", |
752 purple_debug_info("gg", "ggp_edisc_xfer_recv_ack_done: [%s]\n", |
| 840 if (purple_xfer_is_cancelled(xfer)) |
843 if (purple_xfer_is_cancelled(xfer)) |
| 841 return; |
844 return; |
| 842 |
845 |
| 843 edisc_xfer->msg = NULL; |
846 edisc_xfer->msg = NULL; |
| 844 |
847 |
| 845 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { |
848 if (!SOUP_STATUS_IS_SUCCESSFUL(soup_message_get_status(msg))) { |
| 846 ggp_edisc_xfer_error(xfer, _("Error while receiving a file")); |
849 ggp_edisc_xfer_error(xfer, _("Error while receiving a file")); |
| 847 return; |
850 return; |
| 848 } |
851 } |
| 849 |
852 |
| 850 if (purple_xfer_get_bytes_remaining(xfer) == 0) { |
853 if (purple_xfer_get_bytes_remaining(xfer) == 0) { |
| 905 ggp_edisc_session_data *sdata; |
908 ggp_edisc_session_data *sdata; |
| 906 |
909 |
| 907 const gchar *ticket_id, *file_name, *send_mode_str; |
910 const gchar *ticket_id, *file_name, *send_mode_str; |
| 908 uin_t sender, recipient; |
911 uin_t sender, recipient; |
| 909 int file_size; |
912 int file_size; |
| 910 |
913 SoupStatus status_code; |
| 911 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { |
914 |
| |
915 status_code = soup_message_get_status(msg); |
| |
916 if (!SOUP_STATUS_IS_SUCCESSFUL(status_code)) { |
| 912 purple_debug_error("gg", |
917 purple_debug_error("gg", |
| 913 "ggp_edisc_xfer_recv_ticket_update_got: cannot " |
918 "ggp_edisc_xfer_recv_ticket_update_got: cannot " |
| 914 "fetch update for ticket (code=%d)", |
919 "fetch update for ticket (code=%d)", |
| 915 msg->status_code); |
920 status_code); |
| 916 return; |
921 return; |
| 917 } |
922 } |
| 918 |
923 |
| 919 sdata = ggp_edisc_get_sdata(gc); |
924 sdata = ggp_edisc_get_sdata(gc); |
| 920 g_return_if_fail(sdata != NULL); |
925 g_return_if_fail(sdata != NULL); |