PNXMPPFramework/Extensions/FileTransfer/XMPPOutgoingFileTransfer.h
2016-02-24 16:56:39 +01:00

141 lines
4.1 KiB
Objective-C

//
// Created by Jonathon Staff on 10/21/14.
// Copyright (c) 2014 nplexity, LLC. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "XMPPFileTransfer.h"
@interface XMPPOutgoingFileTransfer : XMPPFileTransfer
/**
* (Required)
*
* The data being sent to the recipient.
*
* If you're using startFileTransfer:, you *MUST* set this prior to calling
* startFileTransfer:.
*/
@property (nonatomic, strong) NSData *outgoingData;
/**
* (Required)
*
* The recipient of your file transfer.
*
* If you're using startFileTransfer:, you *MUST* set this prior to calling
* startFileTransfer:.
*/
@property (nonatomic, strong) XMPPJID *recipientJID;
/**
* (Optional)
*
* The name of the file you're sending.
*
* If you don't provide a filename, one will be generated for you.
*/
@property (nonatomic, copy) NSString *outgoingFileName;
/**
* (Optional)
*
* The description of the file you're sending.
*/
@property (nonatomic, copy) NSString *outgoingFileDescription;
/**
* (Optional)
*
* Specifies whether or not a random name should be generated instead of the
* filename provided. The randomly generated name will retain the same file
* extension as the original name if one was provided
*
* The default is NO; set to YES to generate a random name.
*/
@property (nonatomic, assign) BOOL shouldGenerateRandomName;
/**
* (Optional)
*
* Specifies the default block-size when using IBB file transfers. The default
* value is 4096 (Bytes). If the file recipient requests a smaller block-size,
* it will be halved.
*/
@property (nonatomic, assign) int32_t blockSize;
#pragma mark - Public Methods
/**
* Starts the file transfer. This assumes that at a minimum a recipientJID and
* outgoingData have already been provided.
*
* @param errPtr The address of an error which will be contain a description of
* the problem if there is one (optional).
*
* @return Returns NO if there is something blatantly wrong (not authorized, no
* recipientJID, no outgoingData); YES otherwise.
*/
- (BOOL)startFileTransfer:(NSError **)errPtr;
/**
* Sends the provided data to the provided recipient. Use of this method is not
* recommended, as there is no error handling, but you're free to make your own
* choices.
*/
- (BOOL)sendData:(NSData *)data toRecipient:(XMPPJID *)recipient;
/**
* Sends the provided data to the provided recipient. Pass nil for params you
* don't care about.
*
* @param data The data you wish to send (required).
* @param name The filename of the file you're sending (optional).
* @param recipient The recipient of your file transfer (required). Note that a
* resource must also be included in the JID.
* @param description The description of the file you're sending (optional).
* @param errPtr The address of an error which will contain a description of the
* problem if there is one (optional).
*/
- (BOOL)sendData:(NSData *)data
named:(NSString *)name
toRecipient:(XMPPJID *)recipient
description:(NSString *)description
error:(NSError **)errPtr;
@end
#pragma mark - XMPPOutgoingFileTransferDelegate
@protocol XMPPOutgoingFileTransferDelegate
@optional
/**
* Implement this method when calling startFileTransfer: or sendData:(variants).
* It will be invoked if the file transfer fails to execute properly. More
* information will be given in the error.
*
* @param sender XMPPOutgoingFileTransfer object invoking this delegate method.
* @param error NSError containing more details of the failure.
*/
- (void)xmppOutgoingFileTransfer:(XMPPOutgoingFileTransfer *)sender
didFailWithError:(NSError *)error;
/**
* Implement this method when calling startFileTransfer: or sendData:(variants).
* It will be invoked if the outgoing file transfer was completed successfully.
*
* @param sender XMPPOutgoingFileTransfer object invoking this delegate method.
*/
- (void)xmppOutgoingFileTransferDidSucceed:(XMPPOutgoingFileTransfer *)sender;
/**
* Not really sure why you would want this information, but hey, when I get
* information, I'm happy to share.
*/
- (void)xmppOutgoingFileTransferIBBClosed:(XMPPOutgoingFileTransfer *)sender;
@end