132 lines
4.0 KiB
Objective-C
132 lines
4.0 KiB
Objective-C
#import <Foundation/Foundation.h>
|
|
#import "XMPPModule.h"
|
|
|
|
#if TARGET_OS_IPHONE
|
|
#import "DDXML.h"
|
|
#endif
|
|
|
|
#define _XMPP_BLOCKING_H
|
|
|
|
@class XMPPIQ;
|
|
|
|
extern NSString *const XMPPBlockingErrorDomain;
|
|
|
|
typedef enum XMPPBlockingErrorCode
|
|
{
|
|
XMPPBlockingQueryTimeout, // No response from server
|
|
XMPPBlockingDisconnect, // XMPP disconnection
|
|
|
|
} XMPPBlockingErrorCode;
|
|
|
|
@interface XMPPBlocking : XMPPModule
|
|
{
|
|
BOOL autoRetrieveBlockingListItems;
|
|
BOOL autoClearBlockingListInfo;
|
|
|
|
NSMutableDictionary *blockingDict;
|
|
|
|
NSMutableDictionary *pendingQueries;
|
|
}
|
|
|
|
/**
|
|
* Whether or not the module should automatically retrieve the blocking list rules.
|
|
* If this property is enabled, then the rules for each blocking list are automatically fetched.
|
|
*
|
|
* In other words, if the blocking list names are fetched (either automatically, or via retrieveListItems),
|
|
* then the module will automatically fetch the associated rules.
|
|
*
|
|
* The default value is YES.
|
|
**/
|
|
@property (readwrite, assign) BOOL autoRetrieveBlockingListItems;
|
|
|
|
/**
|
|
* Whether the module should automatically clear the blocking list info when the client disconnects.
|
|
*
|
|
* As per the XEP, if there are multiple resources signed in for the user,
|
|
* and one resource makes changes to a blocking list, all other resources are "pushed" a notification.
|
|
* However, if our client is disconnected when another resource makes the changes,
|
|
* then the only way we can find out about the changes are to redownload the blocking lists.
|
|
*
|
|
* It is recommended to clear the blocking list to assure we have the correct info.
|
|
* However, there may be specific situations in which an xmpp client can be sure the blocking list won't change.
|
|
*
|
|
* The default value is YES.
|
|
**/
|
|
@property (readwrite, assign) BOOL autoClearBlockingListInfo;
|
|
|
|
/**
|
|
* Blocking dict
|
|
*/
|
|
@property (readonly, strong) NSMutableDictionary *blockingDict;
|
|
|
|
/**
|
|
* Manual fetch of list names and rules, and manual control over when to clear stored info.
|
|
**/
|
|
- (void)retrieveBlockingListItems;
|
|
- (void)clearBlockingListInfo;
|
|
|
|
/**
|
|
* Returns the blocking list.
|
|
*
|
|
* The result is an array or blocking items (NSXMLElement's).
|
|
**/
|
|
- (NSArray*)blockingList;
|
|
|
|
/**
|
|
* Block JID.
|
|
*/
|
|
- (void)blockJID:(XMPPJID*)xmppJID;
|
|
|
|
/**
|
|
* Unblock JID.
|
|
*/
|
|
- (void)unblockJID:(XMPPJID*)xmppJID;
|
|
|
|
/**
|
|
* Return whether a jid is in blocking list or not.
|
|
*/
|
|
- (BOOL)containsJID:(XMPPJID*)xmppJID;
|
|
|
|
/**
|
|
* Unblock all.
|
|
*/
|
|
- (void)unblockAll;
|
|
|
|
@end
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#pragma mark -
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
@protocol XMPPBlockingDelegate
|
|
@optional
|
|
|
|
/**
|
|
* The following delegate methods correspond almost exactly with the action methods of the class.
|
|
* There are a few possible ways in which an action could fail:
|
|
*
|
|
* 1. We receive an error response from the server.
|
|
* 2. We receive no response from the server, and the query times out.
|
|
* 3. We get disconnected before we receive the response.
|
|
*
|
|
* In case number 1, the error will be an XMPPIQ of type='error'.
|
|
*
|
|
* In case number 2 or 3, the error will be an NSError
|
|
* with domain=XMPPPrivacyErrorDomain and code from the XMPPBlockingErrorCode enumeration.
|
|
**/
|
|
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didReceivedBlockingList:(NSArray*)blockingList;
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didNotReceivedBlockingListDueToError:(id)error;
|
|
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didReceivePushWithBlockingList:(NSString *)name;
|
|
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didBlockJID:(XMPPJID*)xmppJID;
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didNotBlockJID:(XMPPJID*)xmppJID error:(id)error;
|
|
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didUnblockJID:(XMPPJID*)xmppJID;
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didNotUnblockJID:(XMPPJID*)xmppJID error:(id)error;
|
|
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didUnblockAllWithError:(id)error;
|
|
- (void)xmppBlocking:(XMPPBlocking *)sender didNotUnblockAllDueToError:(id)error;
|
|
|
|
@end |