diff options
Diffstat (limited to 'src/objc/imap')
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 |