libpurple/purplefiletransfer.h

changeset 42330
a2fa1d2d2452
child 42369
a0ca3c963371
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purplefiletransfer.h	Mon Oct 02 23:58:42 2023 -0500
@@ -0,0 +1,301 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
+# error "only <purple.h> may be included directly"
+#endif
+
+#ifndef PURPLE_FILE_TRANSFER_H
+#define PURPLE_FILE_TRANSFER_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/**
+ * PurpleFileTransferState:
+ * @PURPLE_FILE_TRANSFER_STATE_UNKNOWN: The transfer is in an unknown state.
+ * @PURPLE_FILE_TRANSFER_STATE_NEGOTIATING: The transfer is still being
+ *                                          negotiated. This includes
+ *                                          determining who's actually sending
+ *                                          as well as waiting for the
+ *                                          receiving user to select a
+ *                                          destination file.
+ * @PURPLE_FILE_TRANSFER_STATE_STARTED: The transfer is in progress.
+ * @PURPLE_FILE_TRANSFER_STATE_FINISHED: The transfer has completed
+ *                                       successfully.
+ * @PURPLE_FILE_TRANSFER_STATE_FAILED: The transfer failed.
+ */
+typedef enum {
+	PURPLE_FILE_TRANSFER_STATE_UNKNOWN,
+	PURPLE_FILE_TRANSFER_STATE_NEGOTIATING,
+	PURPLE_FILE_TRANSFER_STATE_STARTED,
+	PURPLE_FILE_TRANSFER_STATE_FINISHED,
+	PURPLE_FILE_TRANSFER_STATE_FAILED,
+} PurpleFileTransferState;
+
+/**
+ * PurpleFileTransfer:
+ *
+ * A peer to peer file transfer object.
+ *
+ * Since: 3.0.0
+ */
+
+#define PURPLE_TYPE_FILE_TRANSFER purple_file_transfer_get_type()
+G_DECLARE_FINAL_TYPE(PurpleFileTransfer, purple_file_transfer, PURPLE,
+                     FILE_TRANSFER, GObject)
+
+/**
+ * purple_file_transfer_new_send:
+ * @account: The account this file transfer is from.
+ * @remote: The [class@ContactInfo] of the remote user.
+ * @local_file: The [iface@Gio.File] of the file to send.
+ *
+ * Creates a new [class@FileTransfer] which will be used to send @local_file to
+ * @remote.
+ *
+ * This will also set [property@FileTransfer:filename] and
+ * [property@FileTransfer:file-size] to the proper values
+ * for @local_file.
+ *
+ * Returns: (transfer full): The new file transfer.
+ *
+ * Since: 3.0.0
+ */
+PurpleFileTransfer *purple_file_transfer_new_send(PurpleAccount *account, PurpleContactInfo *remote, GFile *local_file);
+
+/**
+ * purple_file_transfer_new_receive:
+ * @account: The account this file transfer is to.
+ * @remote: The [class@ContactInfo] of the user sending the file.
+ * @filename: (non-nullable): The base filename.
+ * @file_size: The size of the file.
+ *
+ * Creates a new [class@FileTransfer] which will be used to negotiate a file
+ * transfer from @remote to @account with the given @filename and @file_size.
+ *
+ * > Note: This function should only be called by a protocol plugin
+ * implementation.
+ *
+ * Returns: (transfer full): The new file transfer.
+ *
+ * Since: 3.0.0
+ */
+PurpleFileTransfer *purple_file_transfer_new_receive(PurpleAccount *account, PurpleContactInfo *remote, const char *filename, guint64 file_size);
+
+/**
+ * purple_file_transfer_get_account:
+ * @transfer: The instance.
+ *
+ * Gets the [class@Account] that @transfer was created with to transfer a file.
+ *
+ * Returns: (transfer none): The account.
+ *
+ * Since: 3.0.0
+ */
+PurpleAccount *purple_file_transfer_get_account(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_get_remote:
+ * @transfer: The instance.
+ *
+ * Gets the [class@ContactInfo] that @transfer was created with to transfer a
+ * file with.
+ *
+ * Returns: (transfer none): The remote contact info.
+ *
+ * Since: 3.0.0
+ */
+PurpleContactInfo *purple_file_transfer_get_remote(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_get_initiator:
+ * @transfer: The instance.
+ *
+ * Gets the [class@ContactInfo] of the user that initiated @transfer.
+ *
+ * Returns: (transfer none): The contact info who initiated the file transfer.
+ *
+ * Since: 3.0.0
+ */
+PurpleContactInfo *purple_file_transfer_get_initiator(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_get_cancellable:
+ * @transfer: The instance.
+ *
+ * The [class@Gio.Cancellable] for @transfer that can be used to cancel the
+ * transfer.
+ *
+ * Returns: (transfer none): The cancellable.
+ *
+ * Since: 3.0.0
+ */
+GCancellable *purple_file_transfer_get_cancellable(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_get_state:
+ * @transfer: The instance.
+ *
+ * Gets the [enum@FileTransferState] of the transfer.
+ *
+ * Returns: The state of @transfer.
+ *
+ * Since: 3.0.0
+ */
+PurpleFileTransferState purple_file_transfer_get_state(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_set_state:
+ * @transfer: The instance.
+ * @state: The new state.
+ *
+ * Sets the state of @transfer to @state.
+ *
+ * This method should only be called by protocol plugins to match what it is
+ * doing.
+ *
+ * Since: 3.0.0
+ */
+void purple_file_transfer_set_state(PurpleFileTransfer *transfer, PurpleFileTransferState state);
+
+/**
+ * purple_file_transfer_get_error:
+ * @transfer: The instance.
+ *
+ * Gets the #GError from @transfer.
+ *
+ * Returns: (transfer none) (nullable): The error for the transfer.
+ *
+ * Since: 3.0.0
+ */
+GError *purple_file_transfer_get_error(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_set_error:
+ * @transfer: The instance.
+ * @error: (transfer full) (nullable): The new error.
+ *
+ * Sets the error of @transfer to @error.
+ *
+ * Since: 3.0.0
+ */
+void purple_file_transfer_set_error(PurpleFileTransfer *transfer, GError *error);
+
+/**
+ * purple_file_transfer_get_local_file:
+ * @transfer: The instance.
+ *
+ * Gets the local file from @transfer.
+ *
+ * Returns: (transfer none): The local file.
+ *
+ * Since: 3.0.0
+ */
+GFile *purple_file_transfer_get_local_file(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_set_local_file:
+ * @transfer: The instance.
+ * @local_file: The new local file.
+ *
+ * Sets the local file of @transfer to @local_file.
+ *
+ * Since: 3.0.0
+ */
+void purple_file_transfer_set_local_file(PurpleFileTransfer *transfer, GFile *local_file);
+
+/**
+ * purple_file_transfer_get_filename:
+ * @transfer: The instance.
+ *
+ * Gets the base filename from @transfer.
+ *
+ * Returns: (transfer none): The base filename.
+ *
+ * Since: 3.0.0
+ */
+const char *purple_file_transfer_get_filename(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_get_file_size:
+ * @transfer: The instance.
+ *
+ * Gets the size of the file that is being transferred.
+ *
+ * Returns: The size of the file in bytes or %0 if the size is unknown.
+ *
+ * Since: 3.0.0
+ */
+guint64 purple_file_transfer_get_file_size(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_get_content_type:
+ * @transfer: The instance.
+ *
+ * Gets the content type of the file being transferred.
+ *
+ * Returns: (nullable): The content type.
+ *
+ * Since: 3.0.0
+ */
+const char *purple_file_transfer_get_content_type(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_set_content_type:
+ * @transfer: The instance.
+ * @content_type: (nullable): The new content type.
+ *
+ * Sets the content type of @transfer to @content_type.
+ *
+ * Since: 3.0.0
+ */
+void purple_file_transfer_set_content_type(PurpleFileTransfer *transfer, const char *content_type);
+
+/**
+ * purple_file_transfer_get_message:
+ * @transfer: The instance.
+ *
+ * The message that was sent with the file transfer if the protocol supports
+ * sending one.
+ *
+ * Returns: The message sent with the transfer.
+ *
+ * Since: 3.0.0
+ */
+const char *purple_file_transfer_get_message(PurpleFileTransfer *transfer);
+
+/**
+ * purple_file_transfer_set_message:
+ * @transfer: The instance.
+ * @message: (nullable): The new message.
+ *
+ * Sets the message to send with @transfer to @message.
+ *
+ * Since: 3.0.0
+ */
+void purple_file_transfer_set_message(PurpleFileTransfer *transfer, const char *message);
+
+G_END_DECLS
+
+#endif /* PURPLE_FILE_TRANSFER_H */

mercurial