libpurple/protocols/gg/edisc.c

changeset 41214
b0b7d118475f
parent 41212
9f0f4c23132e
child 41215
43a4dc8903fb
equal deleted inserted replaced
41213:0b5c475770e2 41214:b0b7d118475f
139 ******************************************************************************/ 139 ******************************************************************************/
140 140
141 static void 141 static void
142 ggp_edisc_set_defaults(SoupMessage *msg) 142 ggp_edisc_set_defaults(SoupMessage *msg)
143 { 143 {
144 SoupMessageHeaders *headers = soup_message_get_request_headers(msg);
145
144 // purple_http_request_set_max_len(msg, GGP_EDISC_RESPONSE_MAX); 146 // purple_http_request_set_max_len(msg, GGP_EDISC_RESPONSE_MAX);
145 soup_message_headers_replace(msg->request_headers, "X-gged-api-version", 147 soup_message_headers_replace(headers, "X-gged-api-version",
146 GGP_EDISC_API); 148 GGP_EDISC_API);
147 149
148 /* optional fields */ 150 /* optional fields */
149 soup_message_headers_replace( 151 soup_message_headers_replace(
150 msg->request_headers, "User-Agent", 152 headers, "User-Agent",
151 "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20120613 " 153 "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20120613 "
152 "GG/11.0.0.8169 (WINNT_x86-msvc; pl; beta; standard)"); 154 "GG/11.0.0.8169 (WINNT_x86-msvc; pl; beta; standard)");
153 soup_message_headers_replace( 155 soup_message_headers_replace(
154 msg->request_headers, "Accept", 156 headers, "Accept",
155 "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 157 "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
156 soup_message_headers_replace(msg->request_headers, "Accept-Language", 158 soup_message_headers_replace(headers, "Accept-Language",
157 "pl,en-us;q=0.7,en;q=0.3"); 159 "pl,en-us;q=0.7,en;q=0.3");
158 /* soup_message_headers_replace(msg->request_headers, "Accept-Encoding", 160 /* soup_message_headers_replace(headers, "Accept-Encoding",
159 * "gzip, deflate"); */ 161 * "gzip, deflate"); */
160 soup_message_headers_replace(msg->request_headers, "Accept-Charset", 162 soup_message_headers_replace(headers, "Accept-Charset",
161 "ISO-8859-2,utf-8;q=0.7,*;q=0.7"); 163 "ISO-8859-2,utf-8;q=0.7,*;q=0.7");
162 soup_message_headers_replace(msg->request_headers, "Connection", 164 soup_message_headers_replace(headers, "Connection", "keep-alive");
163 "keep-alive");
164 soup_message_headers_replace( 165 soup_message_headers_replace(
165 msg->request_headers, "Content-Type", 166 headers, "Content-Type",
166 "application/x-www-form-urlencoded; charset=UTF-8"); 167 "application/x-www-form-urlencoded; charset=UTF-8");
167 } 168 }
168 169
169 static int ggp_edisc_parse_error(const gchar *data) 170 static int ggp_edisc_parse_error(const gchar *data)
170 { 171 {
332 ggp_edisc_auth_data *auth; 333 ggp_edisc_auth_data *auth;
333 const gchar *imtoken; 334 const gchar *imtoken;
334 gchar *metadata; 335 gchar *metadata;
335 gchar *tmp; 336 gchar *tmp;
336 SoupMessage *msg; 337 SoupMessage *msg;
338 SoupMessageHeaders *headers;
337 339
338 g_return_if_fail(sdata != NULL); 340 g_return_if_fail(sdata != NULL);
339 341
340 imtoken = ggp_get_imtoken(gc); 342 imtoken = ggp_get_imtoken(gc);
341 if (!imtoken) { 343 if (!imtoken) {
359 361
360 purple_debug_info("gg", "ggp_ggdrive_auth(gc=%p)", gc); 362 purple_debug_info("gg", "ggp_ggdrive_auth(gc=%p)", gc);
361 363
362 msg = soup_message_new("PUT", "https://drive.mpa.gg.pl/signin"); 364 msg = soup_message_new("PUT", "https://drive.mpa.gg.pl/signin");
363 ggp_edisc_set_defaults(msg); 365 ggp_edisc_set_defaults(msg);
366 headers = soup_message_get_request_headers(msg);
364 367
365 metadata = g_strdup_printf("{" 368 metadata = g_strdup_printf("{"
366 "\"id\": \"%032x\", " 369 "\"id\": \"%032x\", "
367 "\"name\": \"%s\", " 370 "\"name\": \"%s\", "
368 "\"os_version\": \"" GGP_EDISC_OS "\", " 371 "\"os_version\": \"" GGP_EDISC_OS "\", "
370 "\"type\": \"" GGP_EDISC_TYPE "\"}", 373 "\"type\": \"" GGP_EDISC_TYPE "\"}",
371 g_random_int_range(1, 1 << 16), 374 g_random_int_range(1, 1 << 16),
372 g_get_host_name(), ggp_libgaduw_version(gc)); 375 g_get_host_name(), ggp_libgaduw_version(gc));
373 376
374 tmp = g_strdup_printf("IMToken %s", imtoken); 377 tmp = g_strdup_printf("IMToken %s", imtoken);
375 soup_message_headers_replace(msg->request_headers, "Authorization", tmp); 378 soup_message_headers_replace(headers, "Authorization", tmp);
376 g_free(tmp); 379 g_free(tmp);
377 tmp = g_strdup_printf("gg/pl:%u", accdata->session->uin); 380 tmp = g_strdup_printf("gg/pl:%u", accdata->session->uin);
378 soup_message_headers_replace(msg->request_headers, "X-gged-user", tmp); 381 soup_message_headers_replace(headers, "X-gged-user", tmp);
379 g_free(tmp); 382 g_free(tmp);
380 soup_message_headers_replace(msg->request_headers, "X-gged-client-metadata", 383 soup_message_headers_replace(headers, "X-gged-client-metadata", metadata);
381 metadata);
382 g_free(metadata); 384 g_free(metadata);
383 385
384 soup_session_queue_message(sdata->session, msg, ggp_ggdrive_auth_done, gc); 386 soup_session_queue_message(sdata->session, msg, ggp_ggdrive_auth_done, gc);
385 sdata->auth_request = msg; 387 sdata->auth_request = msg;
386 } 388 }
527 g_return_if_fail(sdata != NULL); 529 g_return_if_fail(sdata != NULL);
528 530
529 msg = soup_message_new("PUT", "https://drive.mpa.gg.pl/send_ticket"); 531 msg = soup_message_new("PUT", "https://drive.mpa.gg.pl/send_ticket");
530 ggp_edisc_set_defaults(msg); 532 ggp_edisc_set_defaults(msg);
531 533
532 soup_message_headers_replace(msg->request_headers, "X-gged-security-token", 534 soup_message_headers_replace(soup_message_get_request_headers(msg),
535 "X-gged-security-token",
533 sdata->security_token); 536 sdata->security_token);
534 537
535 data = g_strdup_printf("{\"send_ticket\":{" 538 data = g_strdup_printf("{\"send_ticket\":{"
536 "\"recipient\":\"%s\"," 539 "\"recipient\":\"%s\","
537 "\"file_name\":\"%s\"," 540 "\"file_name\":\"%s\","
632 { 635 {
633 ggp_edisc_session_data *sdata; 636 ggp_edisc_session_data *sdata;
634 GGPXfer *edisc_xfer; 637 GGPXfer *edisc_xfer;
635 gchar *upload_url, *filename_e; 638 gchar *upload_url, *filename_e;
636 SoupMessage *msg; 639 SoupMessage *msg;
640 SoupMessageHeaders *headers;
637 641
638 g_return_if_fail(xfer != NULL); 642 g_return_if_fail(xfer != NULL);
639 edisc_xfer = GGP_XFER(xfer); 643 edisc_xfer = GGP_XFER(xfer);
640 g_return_if_fail(edisc_xfer != NULL); 644 g_return_if_fail(edisc_xfer != NULL);
641 sdata = ggp_edisc_get_sdata(edisc_xfer->gc); 645 sdata = ggp_edisc_get_sdata(edisc_xfer->gc);
648 msg = soup_message_new("PUT", upload_url); 652 msg = soup_message_new("PUT", upload_url);
649 g_free(upload_url); 653 g_free(upload_url);
650 654
651 ggp_edisc_set_defaults(msg); 655 ggp_edisc_set_defaults(msg);
652 656
653 soup_message_headers_replace(msg->request_headers, "X-gged-local-revision", 657 headers = soup_message_get_request_headers(msg);
654 "0"); 658 soup_message_headers_replace(headers, "X-gged-local-revision", "0");
655 soup_message_headers_replace(msg->request_headers, "X-gged-security-token", 659 soup_message_headers_replace(headers, "X-gged-security-token",
656 sdata->security_token); 660 sdata->security_token);
657 soup_message_headers_replace(msg->request_headers, "X-gged-metadata", 661 soup_message_headers_replace(headers, "X-gged-metadata",
658 "{\"node_type\": \"file\"}"); 662 "{\"node_type\": \"file\"}");
659 663
660 soup_message_set_flags(msg, SOUP_MESSAGE_CAN_REBUILD); 664 soup_message_set_flags(msg, SOUP_MESSAGE_CAN_REBUILD);
661 soup_message_body_set_accumulate(msg->request_body, FALSE); 665 soup_message_body_set_accumulate(msg->request_body, FALSE);
662 soup_message_headers_set_content_length(msg->request_headers, 666 soup_message_headers_set_content_length(headers,
663 purple_xfer_get_size(xfer)); 667 purple_xfer_get_size(xfer));
664 g_signal_connect(msg, "wrote-headers", 668 g_signal_connect(msg, "wrote-headers",
665 G_CALLBACK(ggp_edisc_xfer_send_reader), xfer); 669 G_CALLBACK(ggp_edisc_xfer_send_reader), xfer);
666 g_signal_connect(msg, "wrote-chunk", G_CALLBACK(ggp_edisc_xfer_send_reader), 670 g_signal_connect(msg, "wrote-chunk", G_CALLBACK(ggp_edisc_xfer_send_reader),
667 xfer); 671 xfer);
756 static void ggp_edisc_xfer_recv_ack(PurpleXfer *xfer, gboolean accept) 760 static void ggp_edisc_xfer_recv_ack(PurpleXfer *xfer, gboolean accept)
757 { 761 {
758 GGPXfer *edisc_xfer = GGP_XFER(xfer); 762 GGPXfer *edisc_xfer = GGP_XFER(xfer);
759 ggp_edisc_session_data *sdata = ggp_edisc_get_sdata(edisc_xfer->gc); 763 ggp_edisc_session_data *sdata = ggp_edisc_get_sdata(edisc_xfer->gc);
760 SoupMessage *msg; 764 SoupMessage *msg;
765 SoupMessageHeaders *headers;
761 766
762 g_return_if_fail(sdata != NULL); 767 g_return_if_fail(sdata != NULL);
763 768
764 edisc_xfer->allowed = accept; 769 edisc_xfer->allowed = accept;
765 770
766 msg = soup_message_new("PUT", 771 msg = soup_message_new("PUT",
767 ggp_edisc_xfer_ticket_url(edisc_xfer->ticket_id)); 772 ggp_edisc_xfer_ticket_url(edisc_xfer->ticket_id));
768 ggp_edisc_set_defaults(msg); 773 ggp_edisc_set_defaults(msg);
769 774
770 soup_message_headers_replace(msg->request_headers, "X-gged-security-token", 775 headers = soup_message_get_request_headers(msg);
776 soup_message_headers_replace(headers, "X-gged-security-token",
771 sdata->security_token); 777 sdata->security_token);
772 soup_message_headers_replace(msg->request_headers, "X-gged-ack-status", 778 soup_message_headers_replace(headers, "X-gged-ack-status",
773 accept ? "allow" : "reject"); 779 accept ? "allow" : "reject");
774 780
775 soup_session_queue_message(sdata->session, msg, 781 soup_session_queue_message(sdata->session, msg,
776 accept ? ggp_edisc_xfer_recv_ack_done : NULL, 782 accept ? ggp_edisc_xfer_recv_ack_done : NULL,
777 xfer); 783 xfer);
1022 msg = soup_message_new("GET", ggp_edisc_xfer_ticket_url(ticket)); 1028 msg = soup_message_new("GET", ggp_edisc_xfer_ticket_url(ticket));
1023 g_free(ticket); 1029 g_free(ticket);
1024 1030
1025 ggp_edisc_set_defaults(msg); 1031 ggp_edisc_set_defaults(msg);
1026 1032
1027 soup_message_headers_replace(msg->request_headers, "X-gged-security-token", 1033 soup_message_headers_replace(soup_message_get_request_headers(msg),
1034 "X-gged-security-token",
1028 sdata->security_token); 1035 sdata->security_token);
1029 1036
1030 soup_session_queue_message(sdata->session, msg, 1037 soup_session_queue_message(sdata->session, msg,
1031 ggp_edisc_xfer_recv_ticket_update_got, gc); 1038 ggp_edisc_xfer_recv_ticket_update_got, gc);
1032 } 1039 }

mercurial