Thu, 03 Sep 2020 20:16:32 -0500
Add support for message attachments
Add a PurpleAttachment for storing message attachments
A start to implementing the attachment api in PidginMessage
Add PidginAttachment that wraps PurpleAttachment.
Finish implementing the attachment management api in PidginMessage
Add PidginAttachment to the docs
Testing Done:
Compiled and ran. Messaged with bonjour.
Reviewed at https://reviews.imfreedom.org/r/76/
|
37956
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
1 | /* |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
2 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
3 | * purple |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
4 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
5 | * Purple is the legal property of its developers, whose names are too numerous |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
6 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
7 | * source distribution. |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
8 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
9 | * This program is free software; you can redistribute it and/or modify |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
10 | * it under the terms of the GNU General Public License as published by |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
11 | * the Free Software Foundation; either version 2 of the License, or |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
12 | * (at your option) any later version. |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
13 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
14 | * This program is distributed in the hope that it will be useful, |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
17 | * GNU General Public License for more details. |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
18 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
20 | * along with this program; if not, write to the Free Software |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
22 | */ |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
23 | |
|
40474
1341be8e3402
Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents:
40341
diff
changeset
|
24 | #if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION) |
|
1341be8e3402
Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents:
40341
diff
changeset
|
25 | # error "only <purple.h> may be included directly" |
|
1341be8e3402
Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents:
40341
diff
changeset
|
26 | #endif |
|
1341be8e3402
Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents:
40341
diff
changeset
|
27 | |
|
39659
e4dfb99b0cef
Fix libpurple header guards using reserved names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37971
diff
changeset
|
28 | #ifndef PURPLE_GIO_H |
|
e4dfb99b0cef
Fix libpurple header guards using reserved names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37971
diff
changeset
|
29 | #define PURPLE_GIO_H |
|
37956
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
30 | /** |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
31 | * SECTION:purple-gio |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
32 | * @section_id: libpurple-purple-gio |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
33 | * @short_description: Gio helper functions |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
34 | * @title: Purple Gio API |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
35 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
36 | * The Purple Gio API provides helper functions for Gio operations which |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
37 | * are commonly used within libpurple and its consumers. These contain |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
38 | * such functions as setting up connections and shutting them down |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
39 | * gracefully. |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
40 | */ |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
41 | |
|
37962
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
42 | #include "account.h" |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
43 | |
|
37956
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
44 | #include <gio/gio.h> |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
45 | |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
46 | G_BEGIN_DECLS |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
47 | |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
48 | /** |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
49 | * purple_gio_graceful_close: |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
50 | * @stream: A #GIOStream to close |
|
37971
35c6b0947dfc
purple-gio: Fix Gir annotation warnings
Mike Ruprecht <cmaiku@gmail.com>
parents:
37962
diff
changeset
|
51 | * @input: (nullable): A #GInputStream which wraps @stream's input stream |
|
35c6b0947dfc
purple-gio: Fix Gir annotation warnings
Mike Ruprecht <cmaiku@gmail.com>
parents:
37962
diff
changeset
|
52 | * @output: (nullable): A #GOutputStream which wraps @stream's output stream |
|
37956
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
53 | * |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
54 | * Closes @input, @output, @stream. If there are pending operations, it |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
55 | * asynchronously waits for the operations to finish before closing the |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
56 | * arguments. Ensure the Gio callbacks can safely handle this being done |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
57 | * asynchronously. |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
58 | */ |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
59 | void |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
60 | purple_gio_graceful_close(GIOStream *stream, |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
61 | GInputStream *input, GOutputStream *output); |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
62 | |
|
37962
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
63 | /** |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
64 | * purple_gio_socket_client_new: |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
65 | * @account: The #PurpleAccount to use for this connection |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
66 | * @error: Return location for a GError, or NULL |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
67 | * |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
68 | * A helper function to simplify creating a #GSocketClient. It's intended |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
69 | * to be used in protocol plugins. |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
70 | * |
|
37971
35c6b0947dfc
purple-gio: Fix Gir annotation warnings
Mike Ruprecht <cmaiku@gmail.com>
parents:
37962
diff
changeset
|
71 | * Returns: (transfer full): A new #GSocketClient with the appropriate |
|
37962
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
72 | * GProxyResolver, based on the #PurpleAccount settings and |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
73 | * TLS Certificate handling, or NULL if an error occurred. |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
74 | */ |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
75 | GSocketClient * |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
76 | purple_gio_socket_client_new(PurpleAccount *account, GError **error); |
|
13e2a9fcbddd
purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents:
37956
diff
changeset
|
77 | |
|
40341
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
78 | /** |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
79 | * purple_socket_listener_add_any_inet_port: |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
80 | * @listener: A #GSocketListener. |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
81 | * @source_object: (nullable): Optional GObject identifying this source. |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
82 | * @error: A #GError location to store the error occurring, or %NULL to ignore. |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
83 | * |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
84 | * Listens for TCP connections on any available port number for both IPv6 and |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
85 | * IPv4 (if each is available). This is a simple wrapper around |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
86 | * g_socket_listener_add_any_inet_port(), except if the user specified a port |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
87 | * range in the settings, than a port will be chosen from that range. |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
88 | * |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
89 | * Returns: The port number, or 0 in case of failure. |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
90 | */ |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
91 | guint16 purple_socket_listener_add_any_inet_port(GSocketListener *listener, |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
92 | GObject *source_object, |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
93 | GError **error); |
|
ae0175720477
Add a helper to open ports, respecting user settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39659
diff
changeset
|
94 | |
|
37956
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
95 | G_END_DECLS |
|
21cffc3446a0
purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff
changeset
|
96 | |
|
39659
e4dfb99b0cef
Fix libpurple header guards using reserved names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37971
diff
changeset
|
97 | #endif /* PURPLE_GIO_H */ |