aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/imap
diff options
context:
space:
mode:
Diffstat (limited to 'src/objc/imap')
-rw-r--r--src/objc/imap/MCOIMAP.h22
-rw-r--r--src/objc/imap/MCOIMAPAppendMessageOperation.h22
-rw-r--r--src/objc/imap/MCOIMAPAppendMessageOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPCapabilityOperation.h17
-rw-r--r--src/objc/imap/MCOIMAPCapabilityOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPCopyMessagesOperation.h23
-rw-r--r--src/objc/imap/MCOIMAPCopyMessagesOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPFetchContentOperation.h22
-rw-r--r--src/objc/imap/MCOIMAPFetchContentOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPFetchFoldersOperation.mm24
-rw-r--r--src/objc/imap/MCOIMAPFetchMessagesOperation.h25
-rw-r--r--src/objc/imap/MCOIMAPFetchMessagesOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPFetchNamespaceOperation.h15
-rw-r--r--src/objc/imap/MCOIMAPFetchNamespaceOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPFolderInfo.h20
-rw-r--r--src/objc/imap/MCOIMAPFolderInfo.m28
-rw-r--r--src/objc/imap/MCOIMAPFolderInfoOperation.h16
-rw-r--r--src/objc/imap/MCOIMAPFolderInfoOperation.mm62
-rw-r--r--src/objc/imap/MCOIMAPIdentityOperation.h15
-rw-r--r--src/objc/imap/MCOIMAPIdentityOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPIdleOperation.h17
-rw-r--r--src/objc/imap/MCOIMAPIdleOperation.mm60
-rw-r--r--src/objc/imap/MCOIMAPOperation.mm18
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.h22
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm102
-rw-r--r--src/objc/imap/MCOIMAPSearchOperation.h17
-rw-r--r--src/objc/imap/MCOIMAPSearchOperation.mm55
-rw-r--r--src/objc/imap/MCOIMAPSession.h102
-rw-r--r--src/objc/imap/MCOIMAPSession.mm217
29 files changed, 1281 insertions, 25 deletions
diff --git a/src/objc/imap/MCOIMAP.h b/src/objc/imap/MCOIMAP.h
index 3fae405b..b44f52d6 100644
--- a/src/objc/imap/MCOIMAP.h
+++ b/src/objc/imap/MCOIMAP.h
@@ -13,5 +13,27 @@
#import <mailcore/MCOIMAPSession.h>
#import <mailcore/MCOIMAPOperation.h>
#import <mailcore/MCOIMAPFetchFoldersOperation.h>
+#import <mailcore/MCOIMAPFolder.h>
+#import <mailcore/MCOIMAPMessage.h>
+#import <mailcore/MCOIMAPMessagePart.h>
+#import <mailcore/MCOIMAPMultipart.h>
+#import <mailcore/MCOIMAPNamespace.h>
+#import <mailcore/MCOIMAPNamespaceItem.h>
+#import <mailcore/MCOIMAPPart.h>
+#import <mailcore/MCOIMAPFolderInfoOperation.h>
+#import <mailcore/MCOIMAPFolderInfo.h>
+#import <mailcore/MCOIMAPAppendMessageOperation.h>
+#import <mailcore/MCOIMAPCopyMessagesOperation.h>
+#import <mailcore/MCOIMAPFetchMessagesOperation.h>
+#import <mailcore/MCOIMAPFetchContentOperation.h>
+#import <mailcore/MCOIMAPSearchOperation.h>
+#import <mailcore/MCOIMAPIdleOperation.h>
+#import <mailcore/MCOIMAPFetchNamespaceOperation.h>
+#import <mailcore/MCOIMAPSearchOperation.h>
+#import <mailcore/MCOIMAPIdleOperation.h>
+#import <mailcore/MCOIMAPFetchNamespaceOperation.h>
+#import <mailcore/MCOIMAPIdentityOperation.h>
+#import <mailcore/MCOIMAPCapabilityOperation.h>
+#import <mailcore/MCOIMAPSearchExpression.h>
#endif
diff --git a/src/objc/imap/MCOIMAPAppendMessageOperation.h b/src/objc/imap/MCOIMAPAppendMessageOperation.h
new file mode 100644
index 00000000..61cade97
--- /dev/null
+++ b/src/objc/imap/MCOIMAPAppendMessageOperation.h
@@ -0,0 +1,22 @@
+//
+// MCOIMAPAppendMessageOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+#import <mailcore/MCOConstants.h>
+
+@interface MCOIMAPAppendMessageOperation : MCOOperation
+
+/*
+@property (nonatomic, copy) NSString * folder;
+@property (nonatomic, strong) NSData * messageData;
+@property (nonatomic, assign) MCOMessageFlag flags;
+*/
+
+- (void)start:(void (^)(NSError *error, uint32_t createdUID))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPAppendMessageOperation.mm b/src/objc/imap/MCOIMAPAppendMessageOperation.mm
new file mode 100644
index 00000000..eecec723
--- /dev/null
+++ b/src/objc/imap/MCOIMAPAppendMessageOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPAppendMessageOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPAppendMessageOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, uint32_t createdUID);
+
+@implementation MCOIMAPAppendMessageOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPAppendMessageOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, uint32_t createdUID))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, op->createdUID());
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], 0);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPCapabilityOperation.h b/src/objc/imap/MCOIMAPCapabilityOperation.h
new file mode 100644
index 00000000..e6f187f4
--- /dev/null
+++ b/src/objc/imap/MCOIMAPCapabilityOperation.h
@@ -0,0 +1,17 @@
+//
+// MCOIMAPCapabilityOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+
+@class MCOIndexSet;
+
+@interface MCOIMAPCapabilityOperation : MCOOperation
+
+- (void)start:(void (^)(NSError *error, MCOIndexSet * capabilities))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPCapabilityOperation.mm b/src/objc/imap/MCOIMAPCapabilityOperation.mm
new file mode 100644
index 00000000..97a635da
--- /dev/null
+++ b/src/objc/imap/MCOIMAPCapabilityOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPCapabilityOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPCapabilityOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, MCOIndexSet * capabilities);
+
+@implementation MCOIMAPCapabilityOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPCapabilityOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, MCOIndexSet * capabilities))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->capabilities()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPCopyMessagesOperation.h b/src/objc/imap/MCOIMAPCopyMessagesOperation.h
new file mode 100644
index 00000000..727a9ecc
--- /dev/null
+++ b/src/objc/imap/MCOIMAPCopyMessagesOperation.h
@@ -0,0 +1,23 @@
+//
+// MCOIMAPCopyMessagesOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+
+@class MCOIndexSet;
+
+@interface MCOIMAPCopyMessagesOperation : MCOOperation
+
+/*
+@property (nonatomic, copy) NSString * folder;
+@property (nonatomic, strong) MCOIndexSet * uids;
+@property (nonatomic, copy) NSString * destFolder;
+*/
+
+- (void)start:(void (^)(NSError *error, MCOIndexSet * destUids))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPCopyMessagesOperation.mm b/src/objc/imap/MCOIMAPCopyMessagesOperation.mm
new file mode 100644
index 00000000..3aa48b56
--- /dev/null
+++ b/src/objc/imap/MCOIMAPCopyMessagesOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPCopyMessagesOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPCopyMessagesOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, MCOIndexSet * destUids);
+
+@implementation MCOIMAPCopyMessagesOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPCopyMessagesOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, MCOIndexSet * destUids))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->destUids()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], 0);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPFetchContentOperation.h b/src/objc/imap/MCOIMAPFetchContentOperation.h
new file mode 100644
index 00000000..71798845
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFetchContentOperation.h
@@ -0,0 +1,22 @@
+//
+// MCOIMAPFetchContentOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+#import <mailcore/MCOConstants.h>
+
+@interface MCOIMAPFetchContentOperation : MCOOperation
+
+/*
+@property (nonatomic, assign) uint32_t uid;
+@property (nonatomic, copy) NSString * partID;
+@property (nonatomic, assign) MCOEncoding encoding;
+*/
+
+- (void)start:(void (^)(NSError *error, NSData * data))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPFetchContentOperation.mm b/src/objc/imap/MCOIMAPFetchContentOperation.mm
new file mode 100644
index 00000000..233eaff8
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFetchContentOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPFetchContentOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPFetchContentOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, NSData * data);
+
+@implementation MCOIMAPFetchContentOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPFetchContentOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, NSData * data))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->data()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPFetchFoldersOperation.mm b/src/objc/imap/MCOIMAPFetchFoldersOperation.mm
index 56f08aa7..abf59611 100644
--- a/src/objc/imap/MCOIMAPFetchFoldersOperation.mm
+++ b/src/objc/imap/MCOIMAPFetchFoldersOperation.mm
@@ -18,16 +18,12 @@
using namespace mailcore;
-@interface MCOIMAPFetchFoldersOperation ()
-@property (nonatomic, copy) void (^completionBlock)(NSError *error, NSArray *folder);
-@end
+typedef void (^completionType)(NSError *error, NSArray *folder);
@implementation MCOIMAPFetchFoldersOperation {
- void (^_completionBlock)(NSError *error, NSArray *folder);
+ completionType _completionBlock;
}
-@synthesize completionBlock = _completionBlock;
-
#define nativeType mailcore::IMAPFetchFoldersOperation
+ (void) load
@@ -37,21 +33,27 @@ using namespace mailcore;
+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
{
- mailcore::IMAPOperation * op = (mailcore::IMAPOperation *) object;
+ nativeType * op = (nativeType *) object;
return [[[self alloc] initWithMCOperation:op] autorelease];
}
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
- (void)start:(void (^)(NSError *error, NSArray *folder))completionBlock {
- self.completionBlock = completionBlock;
+ _completionBlock = [completionBlock copy];
[self start];
}
- (void)operationCompleted {
- IMAPFetchFoldersOperation *op = MCO_NATIVE_INSTANCE;
+ nativeType *op = MCO_NATIVE_INSTANCE;
if (op->error() == ErrorNone) {
- self.completionBlock(nil, MCO_TO_OBJC(op->folders()));
+ _completionBlock(nil, MCO_TO_OBJC(op->folders()));
} else {
- self.completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
}
}
diff --git a/src/objc/imap/MCOIMAPFetchMessagesOperation.h b/src/objc/imap/MCOIMAPFetchMessagesOperation.h
new file mode 100644
index 00000000..dec5f7b2
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFetchMessagesOperation.h
@@ -0,0 +1,25 @@
+//
+// MCOIMAPFetchMessagesOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+#import <mailcore/MCOConstants.h>
+
+@class MCOIndexSet;
+
+@interface MCOIMAPFetchMessagesOperation : MCOOperation
+
+/*
+@property (nonatomic, assign, getter=isFetchByUidEnabled) BOOL fetchByUidEnabled;
+@property (nonatomic, strong) MCOIndexSet * indexes;
+@property (nonatomic, assign) uint64_t modSequenceValue;
+@property (nonatomic, assign) MCOIMAPMessagesRequestKind kind;
+*/
+
+- (void)start:(void (^)(NSError *error, NSArray * messages, MCOIndexSet * vanishedMessages))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPFetchMessagesOperation.mm b/src/objc/imap/MCOIMAPFetchMessagesOperation.mm
new file mode 100644
index 00000000..f5cbc859
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFetchMessagesOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPFetchMessagesOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPFetchMessagesOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, NSArray * messages, MCOIndexSet * vanishedMessages);
+
+@implementation MCOIMAPFetchMessagesOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPFetchMessagesOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, NSArray * messages, MCOIndexSet * vanishedMessages))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->messages()), MCO_TO_OBJC(op->vanishedMessages()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil, nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPFetchNamespaceOperation.h b/src/objc/imap/MCOIMAPFetchNamespaceOperation.h
new file mode 100644
index 00000000..12abd817
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFetchNamespaceOperation.h
@@ -0,0 +1,15 @@
+//
+// MCOIMAPFetchNamespaceOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+
+@interface MCOIMAPFetchNamespaceOperation : MCOOperation
+
+- (void)start:(void (^)(NSError *error, NSDictionary * namespaces))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPFetchNamespaceOperation.mm b/src/objc/imap/MCOIMAPFetchNamespaceOperation.mm
new file mode 100644
index 00000000..798194b2
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFetchNamespaceOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPFetchNamespaceOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPFetchNamespaceOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, NSDictionary * namespaces);
+
+@implementation MCOIMAPFetchNamespaceOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPFetchNamespaceOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, NSDictionary * namespaces))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->namespaces()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPFolderInfo.h b/src/objc/imap/MCOIMAPFolderInfo.h
new file mode 100644
index 00000000..e0fed5e8
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFolderInfo.h
@@ -0,0 +1,20 @@
+//
+// MCOIMAPFolderInfo.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface MCOIMAPFolderInfo : NSObject
+
++ (MCOIMAPFolderInfo *) info;
+
+@property (nonatomic, assign) uint32_t uidNext;
+@property (nonatomic, assign) uint32_t uidValidity;
+@property (nonatomic, assign) uint64_t modSequenceValue;
+@property (nonatomic, assign) int messageCount;
+
+@end
diff --git a/src/objc/imap/MCOIMAPFolderInfo.m b/src/objc/imap/MCOIMAPFolderInfo.m
new file mode 100644
index 00000000..f23336bf
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFolderInfo.m
@@ -0,0 +1,28 @@
+//
+// MCOIMAPFolderInfo.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPFolderInfo.h"
+
+@implementation MCOIMAPFolderInfo {
+ uint32_t _uidNext;
+ uint32_t _uidValidity;
+ uint64_t _modSequenceValue;
+ int _messageCount;
+}
+
+@synthesize uidNext = _uidNext;
+@synthesize uidValidity = _uidValidity;
+@synthesize modSequenceValue = _modSequenceValue;
+@synthesize messageCount = _messageCount;
+
++ (MCOIMAPFolderInfo *) info
+{
+ return [[[MCOIMAPFolderInfo alloc] init] autorelease];
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPFolderInfoOperation.h b/src/objc/imap/MCOIMAPFolderInfoOperation.h
new file mode 100644
index 00000000..99640618
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFolderInfoOperation.h
@@ -0,0 +1,16 @@
+//
+// MCOIMAPFolderInfoOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+#import <mailcore/MCOIMAPOperation.h>
+
+@class MCOIMAPFolderInfo;
+
+@interface MCOIMAPFolderInfoOperation : MCOIMAPOperation
+- (void)start:(void (^)(NSError *error, MCOIMAPFolderInfo *info))completionBlock;
+@end
diff --git a/src/objc/imap/MCOIMAPFolderInfoOperation.mm b/src/objc/imap/MCOIMAPFolderInfoOperation.mm
new file mode 100644
index 00000000..a3d1d8a5
--- /dev/null
+++ b/src/objc/imap/MCOIMAPFolderInfoOperation.mm
@@ -0,0 +1,62 @@
+//
+// MCOIMAPFolderInfoOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPFolderInfoOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOIMAPFolderInfo.h"
+#import "MCOUtils.h"
+#import "MCOIMAPFolderInfo.h"
+
+typedef void (^completionType)(NSError *error, MCOIMAPFolderInfo *info);
+
+@implementation MCOIMAPFolderInfoOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPFolderInfoOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, MCOIMAPFolderInfo *info))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ MCOIMAPFolderInfo * info = [MCOIMAPFolderInfo info];
+ [info setUidNext:MCO_NATIVE_INSTANCE->uidNext()];
+ [info setUidValidity:MCO_NATIVE_INSTANCE->uidValidity()];
+ [info setModSequenceValue:MCO_NATIVE_INSTANCE->modSequenceValue()];
+ [info setMessageCount:MCO_NATIVE_INSTANCE->messageCount()];
+ _completionBlock(nil, info);
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPIdentityOperation.h b/src/objc/imap/MCOIMAPIdentityOperation.h
new file mode 100644
index 00000000..ca00e79e
--- /dev/null
+++ b/src/objc/imap/MCOIMAPIdentityOperation.h
@@ -0,0 +1,15 @@
+//
+// MCOIMAPIdentityOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+
+@interface MCOIMAPIdentityOperation : MCOOperation
+
+- (void)start:(void (^)(NSError *error, NSDictionary * serverIdentity))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPIdentityOperation.mm b/src/objc/imap/MCOIMAPIdentityOperation.mm
new file mode 100644
index 00000000..ab358adf
--- /dev/null
+++ b/src/objc/imap/MCOIMAPIdentityOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPIdentityOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPIdentityOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, NSDictionary * serverIdentity);
+
+@implementation MCOIMAPIdentityOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPIdentityOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, NSDictionary * namespaces))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->serverIdentity()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPIdleOperation.h b/src/objc/imap/MCOIMAPIdleOperation.h
new file mode 100644
index 00000000..30b7f7c8
--- /dev/null
+++ b/src/objc/imap/MCOIMAPIdleOperation.h
@@ -0,0 +1,17 @@
+//
+// MCOIMAPIdleOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+
+@interface MCOIMAPIdleOperation : MCOOperation
+
+- (void) interruptIdle;
+
+- (void)start:(void (^)(NSError *error))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPIdleOperation.mm b/src/objc/imap/MCOIMAPIdleOperation.mm
new file mode 100644
index 00000000..3de7b141
--- /dev/null
+++ b/src/objc/imap/MCOIMAPIdleOperation.mm
@@ -0,0 +1,60 @@
+//
+// MCOIMAPIdleOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPIdleOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error);
+
+@implementation MCOIMAPIdleOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPIdleOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil);
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()]);
+ }
+}
+
+- (void) interruptIdle
+{
+ MCO_NATIVE_INSTANCE->interruptIdle();
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPOperation.mm b/src/objc/imap/MCOIMAPOperation.mm
index 700269b3..a928fede 100644
--- a/src/objc/imap/MCOIMAPOperation.mm
+++ b/src/objc/imap/MCOIMAPOperation.mm
@@ -13,26 +13,28 @@
#import "MCOUtils.h"
-@interface MCOIMAPOperation ()
-@property (nonatomic, copy) void (^completionBlock)(NSError *error);
-@end
+typedef void (^completionType)(NSError *error);
@implementation MCOIMAPOperation {
- void (^_completionBlock)(NSError *error);
+ completionType _completionBlock;
}
-@synthesize completionBlock = _completionBlock;
-
#define nativeType mailcore::IMAPOperation
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
- (void)start:(void (^)(NSError *error))completionBlock {
- self.completionBlock = completionBlock;
+ _completionBlock = [completionBlock copy];
[self start];
}
- (void)operationCompleted {
NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()];
- self.completionBlock(error);
+ _completionBlock(error);
}
@end
diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h
new file mode 100644
index 00000000..c9659509
--- /dev/null
+++ b/src/objc/imap/MCOIMAPSearchExpression.h
@@ -0,0 +1,22 @@
+//
+// MCOIMAPSearchExpression.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <mailcore/MCOConstants.h>
+
+@interface MCOIMAPSearchExpression : NSObject
+
++ (MCOIMAPSearchExpression *) searchFrom:(NSString *)value;
++ (MCOIMAPSearchExpression *) searchRecipient:(NSString *)value;
++ (MCOIMAPSearchExpression *) searchSubject:(NSString *)value;
++ (MCOIMAPSearchExpression *) searchContent:(NSString *)value;
++ (MCOIMAPSearchExpression *) searchHeader:(NSString *)header value:(NSString *)value;
++ (MCOIMAPSearchExpression *) searchAnd:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other;
++ (MCOIMAPSearchExpression *) searchOr:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other;
+
+@end
diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm
new file mode 100644
index 00000000..18e5fdc7
--- /dev/null
+++ b/src/objc/imap/MCOIMAPSearchExpression.mm
@@ -0,0 +1,102 @@
+//
+// MCOIMAPSearchExpression.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPSearchExpression.h"
+
+#include "MCIMAP.h"
+
+#import "MCOUtils.h"
+
+@implementation MCOIMAPSearchExpression {
+ mailcore::IMAPSearchExpression * _nativeExpr;
+}
+
+#define nativeType mailcore::IMAPSearchExpression
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
+- (id) copyWithZone:(NSZone *)zone
+{
+ nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy();
+ id result = [[self class] mco_objectWithMCObject:nativeObject];
+ MC_SAFE_RELEASE(nativeObject);
+ return [result retain];
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ mailcore::IMAPSearchExpression * expr = (mailcore::IMAPSearchExpression *) object;
+ return [[[self alloc] initWithMCExpression:expr] autorelease];
+}
+
+- (id) initWithMCExpression:(mailcore::IMAPSearchExpression *)expr
+{
+ self = [super init];
+
+ _nativeExpr = (mailcore::IMAPSearchExpression *) expr->copy();
+
+ return self;
+}
+
+- (void) dealloc
+{
+ MC_SAFE_RELEASE(_nativeExpr);
+ [super dealloc];
+}
+
++ (MCOIMAPSearchExpression *) searchFrom:(NSString *)value
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchFrom([value mco_mcString]));
+}
+
++ (MCOIMAPSearchExpression *) searchRecipient:(NSString *)value
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchRecipient([value mco_mcString]));
+}
+
++ (MCOIMAPSearchExpression *) searchSubject:(NSString *)value
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSubject([value mco_mcString]));
+}
+
++ (MCOIMAPSearchExpression *) searchContent:(NSString *)value
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchContent([value mco_mcString]));
+}
+
++ (MCOIMAPSearchExpression *) searchHeader:(NSString *)header value:(NSString *)value
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchHeader([header mco_mcString], [value mco_mcString]));
+}
+
++ (MCOIMAPSearchExpression *) searchAnd:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other
+{
+ mailcore::IMAPSearchExpression * copyExpr = (mailcore::IMAPSearchExpression *) expression->_nativeExpr->copy();
+ mailcore::IMAPSearchExpression * copyOther = (mailcore::IMAPSearchExpression *) other->_nativeExpr->copy();
+ mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchAnd(copyExpr, copyOther);
+ copyExpr->release();
+ copyOther->release();
+
+ return MCO_TO_OBJC(result);
+}
+
++ (MCOIMAPSearchExpression *) searchOr:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other
+{
+ mailcore::IMAPSearchExpression * copyExpr = (mailcore::IMAPSearchExpression *) expression->_nativeExpr->copy();
+ mailcore::IMAPSearchExpression * copyOther = (mailcore::IMAPSearchExpression *) other->_nativeExpr->copy();
+ mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchOr(copyExpr, copyOther);
+ copyExpr->release();
+ copyOther->release();
+
+ return MCO_TO_OBJC(result);
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPSearchOperation.h b/src/objc/imap/MCOIMAPSearchOperation.h
new file mode 100644
index 00000000..72ed6cfd
--- /dev/null
+++ b/src/objc/imap/MCOIMAPSearchOperation.h
@@ -0,0 +1,17 @@
+//
+// MCOIMAPSearchOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import <mailcore/MCOOperation.h>
+
+@class MCOIndexSet;
+
+@interface MCOIMAPSearchOperation : MCOOperation
+
+- (void)start:(void (^)(NSError *error, MCOIndexSet * searchResult))completionBlock;
+
+@end
diff --git a/src/objc/imap/MCOIMAPSearchOperation.mm b/src/objc/imap/MCOIMAPSearchOperation.mm
new file mode 100644
index 00000000..c4deb18e
--- /dev/null
+++ b/src/objc/imap/MCOIMAPSearchOperation.mm
@@ -0,0 +1,55 @@
+//
+// MCOIMAPSearchOperation.m
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 3/25/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOIMAPSearchOperation.h"
+
+#include "MCAsyncIMAP.h"
+
+#import "MCOOperation+Private.h"
+#import "MCOUtils.h"
+
+typedef void (^completionType)(NSError *error, MCOIndexSet * searchResult);
+
+@implementation MCOIMAPSearchOperation {
+ completionType _completionBlock;
+}
+
+#define nativeType mailcore::IMAPSearchOperation
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ nativeType * op = (nativeType *) object;
+ return [[[self alloc] initWithMCOperation:op] autorelease];
+}
+
+- (void) dealloc
+{
+ [_completionBlock release];
+ [super dealloc];
+}
+
+- (void)start:(void (^)(NSError *error, MCOIndexSet * searchResult))completionBlock {
+ _completionBlock = [completionBlock copy];
+ [self start];
+}
+
+- (void)operationCompleted {
+ nativeType *op = MCO_NATIVE_INSTANCE;
+ if (op->error() == mailcore::ErrorNone) {
+ _completionBlock(nil, MCO_TO_OBJC(op->uids()));
+ } else {
+ _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
+ }
+}
+
+@end
diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h
index 7019b792..eaf7df49 100644
--- a/src/objc/imap/MCOIMAPSession.h
+++ b/src/objc/imap/MCOIMAPSession.h
@@ -15,6 +15,19 @@
@class MCOIMAPFetchFoldersOperation;
@class MCOIMAPOperation;
+@class MCOIMAPNamespace;
+@class MCOIMAPFolderInfoOperation;
+@class MCOIMAPAppendMessageOperation;
+@class MCOIMAPCopyMessagesOperation;
+@class MCOIndexSet;
+@class MCOIMAPFetchMessagesOperation;
+@class MCOIMAPFetchContentOperation;
+@class MCOIMAPSearchOperation;
+@class MCOIMAPIdleOperation;
+@class MCOIMAPFetchNamespaceOperation;
+@class MCOIMAPSearchExpression;
+@class MCOIMAPIdentityOperation;
+@class MCOIMAPCapabilityOperation;
@interface MCOIMAPSession : NSObject
@property (nonatomic, strong) NSString *hostname;
@@ -29,8 +42,93 @@
@property (nonatomic, assign, getter=isVoIPEnabled) BOOL VoIPEnabled;
@property (nonatomic, assign) char delimiter;
-- (MCOIMAPOperation *)checkAccountOperation;
-- (MCOIMAPFetchFoldersOperation *)fetchAllFoldersOperation;
+@property (nonatomic, strong) MCOIMAPNamespace * defaultNamespace;
+@property (nonatomic, assign) BOOL allowsFolderConcurrentAccessEnabled;
+@property (nonatomic, assign) unsigned int maximumConnectons;
+
+- (MCOIMAPFolderInfoOperation *) folderInfoOperation:(NSString *)folder;
+- (MCOIMAPFetchFoldersOperation *) fetchSubscribedFoldersOperation;
+- (MCOIMAPFetchFoldersOperation *) fetchAllFoldersOperation;
+
+- (MCOIMAPOperation *) renameFolderOperation:(NSString *)folder otherName:(NSString *)otherName;
+- (MCOIMAPOperation *) deleteFolderOperation:(NSString *)folder;
+- (MCOIMAPOperation *) createFolderOperation:(NSString *)folder;
+
+- (MCOIMAPOperation *) subscribeFolderOperation:(NSString *)folder;
+- (MCOIMAPOperation *) unsubscribeFolderOperation:(NSString *)folder;
+
+- (MCOIMAPAppendMessageOperation *)appendMessageOperationWithFolder:(NSString *)folder
+ messageData:(NSData *)messageData
+ flags:(MCOMessageFlag)flags;
+
+- (MCOIMAPCopyMessagesOperation *)copyMessagesOperationWithFolder:(NSString *)folder
+ uids:(MCOIndexSet *)uids
+ destFolder:(NSString *)destFolder;
+
+
+- (MCOIMAPOperation *) expungeOperation:(NSString *)folder;
+
+- (MCOIMAPFetchMessagesOperation *) fetchMessagesByUIDOperationWithFolder:(NSString *)folder
+ requestKind:(MCOIMAPMessagesRequestKind)requestKind
+ uids:(MCOIndexSet *)uids;
+
+- (MCOIMAPFetchMessagesOperation *) fetchMessagesByNumberOperationWithFolder:(NSString *)folder
+ requestKind:(MCOIMAPMessagesRequestKind)requestKind
+ numbers:(MCOIndexSet *)numbers;
+
+- (MCOIMAPFetchMessagesOperation *) syncMessagesByUIDWithFolder:(NSString *)folder
+ requestKind:(MCOIMAPMessagesRequestKind)requestKind
+ uids:(MCOIndexSet *)uids
+ modSeq:(uint64_t)modSeq;
+
+- (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+ urgent:(BOOL)urgent;
+
+- (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid;
+
+- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+ partID:(NSString *)partID
+ encoding:(MCOEncoding)encoding
+ urgent:(BOOL)urgent;
+
+- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+ partID:(NSString *)partID
+ encoding:(MCOEncoding)encoding;
+
+- (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder
+ uids:(MCOIndexSet *)uids
+ kind:(MCOIMAPStoreFlagsRequestKind)kind
+ flags:(MCOMessageFlag)flags;
+
+- (MCOIMAPOperation *) storeLabelsOperationWithFolder:(NSString *)folder
+ uids:(MCOIndexSet *)uids
+ kind:(MCOIMAPStoreFlagsRequestKind)kind
+ labels:(NSArray *)labels;
+
+- (MCOIMAPSearchOperation *) searchOperationWithFolder:(NSString *)folder
+ kind:(MCOIMAPSearchKind)kind
+ searchString:(NSString *)searchString;
+
+- (MCOIMAPSearchOperation *) searchExpressionOperationWithFolder:(NSString *)folder
+ expression:(MCOIMAPSearchExpression *)expression;
+
+- (MCOIMAPIdleOperation *) idleOperationWithFolder:(NSString *)folder
+ lastKnownUID:(uint32_t)lastKnownUID;
+
+- (MCOIMAPFetchNamespaceOperation *) fetchNamespaceOperation;
+
+- (MCOIMAPIdentityOperation *) identityOperationWithVendor:(NSString *)vendor
+ name:(NSString *)name
+ version:(NSString *)version;
+
+- (MCOIMAPOperation *) checkAccountOperation;
+
+- (MCOIMAPCapabilityOperation *) capabilityOperation;
+
@end
#endif
diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm
index 2a8c7465..99531582 100644
--- a/src/objc/imap/MCOIMAPSession.mm
+++ b/src/objc/imap/MCOIMAPSession.mm
@@ -58,14 +58,223 @@ MCO_OBJC_SYNTHESIZE_SCALAR(char, char, setDelimiter, delimiter)
#pragma mark - Operations
-- (MCOIMAPOperation *)checkAccountOperation {
- IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->checkAccountOperation();
- return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+- (MCOIMAPFolderInfoOperation *) folderInfoOperation:(NSString *)folder
+{
+ IMAPFolderInfoOperation * coreOp = MCO_NATIVE_INSTANCE->folderInfoOperation([folder mco_mcString]);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchFoldersOperation *) fetchSubscribedFoldersOperation
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->fetchSubscribedFoldersOperation();
+ return MCO_TO_OBJC(coreOp);
}
- (MCOIMAPFetchFoldersOperation *)fetchAllFoldersOperation {
IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->fetchAllFoldersOperation();
- return [[[MCOIMAPFetchFoldersOperation alloc] initWithMCOperation:coreOp] autorelease];
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPOperation *) renameFolderOperation:(NSString *)folder otherName:(NSString *)otherName
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->renameFolderOperation([folder mco_mcString], [otherName mco_mcString]);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPOperation *) deleteFolderOperation:(NSString *)folder
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->deleteFolderOperation([folder mco_mcString]);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPOperation *) createFolderOperation:(NSString *)folder
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->createFolderOperation([folder mco_mcString]);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPOperation *) subscribeFolderOperation:(NSString *)folder
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->subscribeFolderOperation([folder mco_mcString]);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPOperation *) unsubscribeFolderOperation:(NSString *)folder
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->unsubscribeFolderOperation([folder mco_mcString]);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPAppendMessageOperation *)appendMessageOperationWithFolder:(NSString *)folder
+ messageData:(NSData *)messageData
+ flags:(MCOMessageFlag)flags
+{
+ IMAPAppendMessageOperation * coreOp = MCO_NATIVE_INSTANCE->appendMessageOperation([folder mco_mcString],
+ [messageData mco_mcData],
+ (MessageFlag) flags);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPCopyMessagesOperation *)copyMessagesOperationWithFolder:(NSString *)folder
+ uids:(MCOIndexSet *)uids
+ destFolder:(NSString *)destFolder
+{
+ IMAPCopyMessagesOperation * coreOp = MCO_NATIVE_INSTANCE->copyMessagesOperation([folder mco_mcString],
+ MCO_FROM_OBJC(IndexSet, uids),
+ [destFolder mco_mcString]);
+ return MCO_TO_OBJC(coreOp);
+}
+
+
+- (MCOIMAPOperation *) expungeOperation:(NSString *)folder
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->expungeOperation([folder mco_mcString]);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPFetchMessagesOperation *) fetchMessagesByUIDOperationWithFolder:(NSString *)folder
+ requestKind:(MCOIMAPMessagesRequestKind)requestKind
+ uids:(MCOIndexSet *)uids
+{
+ IMAPFetchMessagesOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessagesByUIDOperation([folder mco_mcString],
+ (IMAPMessagesRequestKind) requestKind,
+ MCO_FROM_OBJC(IndexSet, uids));
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchMessagesOperation *) fetchMessagesByNumberOperationWithFolder:(NSString *)folder
+ requestKind:(MCOIMAPMessagesRequestKind)requestKind
+ numbers:(MCOIndexSet *)numbers
+{
+ IMAPFetchMessagesOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessagesByNumberOperation([folder mco_mcString],
+ (IMAPMessagesRequestKind) requestKind,
+ MCO_FROM_OBJC(IndexSet, numbers));
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchMessagesOperation *) syncMessagesByUIDWithFolder:(NSString *)folder
+ requestKind:(MCOIMAPMessagesRequestKind)requestKind
+ uids:(MCOIndexSet *)uids
+ modSeq:(uint64_t)modSeq
+{
+ IMAPFetchMessagesOperation * coreOp = MCO_NATIVE_INSTANCE->syncMessagesByUID([folder mco_mcString],
+ (IMAPMessagesRequestKind) requestKind,
+ MCO_FROM_OBJC(IndexSet, uids),
+ modSeq);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+ urgent:(BOOL)urgent
+{
+ IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageByUIDOperation([folder mco_mcString], uid, urgent);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+{
+ return [self fetchMessageByUIDOperationWithFolder:folder uid:uid urgent:NO];
+}
+
+- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+ partID:(NSString *)partID
+ encoding:(MCOEncoding)encoding
+ urgent:(BOOL)urgent
+{
+ IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageAttachmentByUIDOperation([folder mco_mcString],
+ uid,
+ [partID mco_mcString],
+ (Encoding) encoding,
+ urgent);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder
+ uid:(uint32_t)uid
+ partID:(NSString *)partID
+ encoding:(MCOEncoding)encoding
+{
+ return [self fetchMessageAttachmentByUIDOperationWithFolder:folder uid:uid partID:partID encoding:encoding urgent:NO];
+}
+
+- (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder
+ uids:(MCOIndexSet *)uids
+ kind:(MCOIMAPStoreFlagsRequestKind)kind
+ flags:(MCOMessageFlag)flags
+{
+ IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeFlagsOperation([folder mco_mcString],
+ MCO_FROM_OBJC(IndexSet, uids),
+ (IMAPStoreFlagsRequestKind) kind,
+ (MessageFlag) flags);
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPOperation *) storeLabelsOperationWithFolder:(NSString *)folder
+ uids:(MCOIndexSet *)uids
+ kind:(MCOIMAPStoreFlagsRequestKind)kind
+ labels:(NSArray *)labels
+{
+ IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeLabelsOperation([folder mco_mcString],
+ MCO_FROM_OBJC(IndexSet, uids),
+ (IMAPStoreFlagsRequestKind) kind,
+ MCO_FROM_OBJC(Array, labels));
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPSearchOperation *) searchOperationWithFolder:(NSString *)folder
+ kind:(MCOIMAPSearchKind)kind
+ searchString:(NSString *)searchString
+{
+ IMAPSearchOperation * coreOp = MCO_NATIVE_INSTANCE->searchOperation([folder mco_mcString],
+ (IMAPSearchKind) kind,
+ [searchString mco_mcString]);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPSearchOperation *) searchExpressionOperationWithFolder:(NSString *)folder
+ expression:(MCOIMAPSearchExpression *)expression
+{
+ IMAPSearchOperation * coreOp = MCO_NATIVE_INSTANCE->searchOperation([folder mco_mcString],
+ MCO_FROM_OBJC(IMAPSearchExpression, expression));
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPIdleOperation *) idleOperationWithFolder:(NSString *)folder
+ lastKnownUID:(uint32_t)lastKnownUID
+{
+ IMAPIdleOperation * coreOp = MCO_NATIVE_INSTANCE->idleOperation([folder mco_mcString], lastKnownUID);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPFetchNamespaceOperation *) fetchNamespaceOperation
+{
+ IMAPFetchNamespaceOperation * coreOp = MCO_NATIVE_INSTANCE->fetchNamespaceOperation();
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPIdentityOperation *) identityOperationWithVendor:(NSString *)vendor
+ name:(NSString *)name
+ version:(NSString *)version
+{
+ IMAPIdentityOperation * coreOp = MCO_NATIVE_INSTANCE->identityOperation([vendor mco_mcString],
+ [name mco_mcString],
+ [version mco_mcString]);
+ return MCO_TO_OBJC(coreOp);
+}
+
+- (MCOIMAPOperation *)checkAccountOperation
+{
+ IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->checkAccountOperation();
+ return [[[MCOIMAPOperation alloc] initWithMCOperation:coreOp] autorelease];
+}
+
+- (MCOIMAPCapabilityOperation *) capabilityOperation
+{
+ IMAPCapabilityOperation * coreOp = MCO_NATIVE_INSTANCE->capabilityOperation();
+ return MCO_TO_OBJC(coreOp);
}
@end