diff options
-rw-r--r-- | build-mac/mailcore2.xcodeproj/project.pbxproj | 6 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSession.cc | 6 | ||||
-rw-r--r-- | src/objc/imap/MCOFetchFoldersOperation.h | 13 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSession.h | 3 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSession.mm | 10 | ||||
-rw-r--r-- | tests/main.mm | 20 |
6 files changed, 51 insertions, 7 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index 84da20d3..30940696 100644 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -174,6 +174,7 @@ C6D42C2A16AE0507002BB4F9 /* NSData+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6D42C1916AE03D6002BB4F9 /* NSData+MCO.h */; }; C6D42C2C16AE0509002BB4F9 /* NSString+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6D42C1B16AE03D6002BB4F9 /* NSString+MCO.h */; }; C6EB30DE16B5B8050091F4F1 /* MCObjC.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6EB30DC16B5B7770091F4F1 /* MCObjC.h */; }; + F87F190C16BB62B00012652F /* MCOFetchFoldersOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = F87F190B16BB62B00012652F /* MCOFetchFoldersOperation.mm */; }; F8EA941716BB1C9D0011AC6F /* MCOIMAPSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = F8EA941416BAED6E0011AC6F /* MCOIMAPSession.h */; }; /* End PBXBuildFile section */ @@ -477,6 +478,8 @@ C6D42C1B16AE03D6002BB4F9 /* NSString+MCO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MCO.h"; sourceTree = "<group>"; }; C6D42C1C16AE03D6002BB4F9 /* NSString+MCO.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSString+MCO.mm"; sourceTree = "<group>"; }; C6EB30DC16B5B7770091F4F1 /* MCObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCObjC.h; sourceTree = "<group>"; }; + F87F190816BB62690012652F /* MCOFetchFoldersOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOFetchFoldersOperation.h; sourceTree = "<group>"; }; + F87F190B16BB62B00012652F /* MCOFetchFoldersOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOFetchFoldersOperation.mm; sourceTree = "<group>"; }; F8EA941416BAED6E0011AC6F /* MCOIMAPSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOIMAPSession.h; sourceTree = "<group>"; }; /* End PBXFileReference section */ @@ -830,6 +833,8 @@ C07AD358A724B6DDD869929C /* MCOOperation+Internals.h */, C07AD98150338A79BF83CCEF /* MCOCheckAccountOperation.h */, C07AD721E48D521D6E3F4943 /* MCOCheckAccountOperation.mm */, + F87F190816BB62690012652F /* MCOFetchFoldersOperation.h */, + F87F190B16BB62B00012652F /* MCOFetchFoldersOperation.mm */, ); path = imap; sourceTree = "<group>"; @@ -997,6 +1002,7 @@ C07ADABEC4F5BD428DD5D169 /* MCOOperation.mm in Sources */, C07ADA0FE807DC9D166BBF37 /* MCOCheckAccountOperation.mm in Sources */, C07AD99B2E2054C684DB8FF6 /* NSError+MCO.mm in Sources */, + F87F190C16BB62B00012652F /* MCOFetchFoldersOperation.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index 634c1ca6..dd0b6c6c 100644 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -963,8 +963,10 @@ Array * /* IMAPFolder */ IMAPSession::fetchAllFolders(ErrorCode * pError) setDelimiter(delimiter); - String * prefix; - prefix = defaultNamespace()->mainPrefix(); + String * prefix = NULL; + if (defaultNamespace()) { + prefix = defaultNamespace()->mainPrefix(); + } if (prefix == NULL) { prefix = MCSTR(""); } diff --git a/src/objc/imap/MCOFetchFoldersOperation.h b/src/objc/imap/MCOFetchFoldersOperation.h new file mode 100644 index 00000000..67a23214 --- /dev/null +++ b/src/objc/imap/MCOFetchFoldersOperation.h @@ -0,0 +1,13 @@ +// +// MCOFetchFoldersOperation.h +// mailcore2 +// +// Created by Matt Ronge on 1/31/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <mailcore/MCOOperation.h> + +@interface MCOFetchFoldersOperation : MCOOperation + +@end diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index 233220a4..ab4a0863 100644 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -11,6 +11,7 @@ #import <mailcore/MCOOperation.h> @class MCOCheckAccountOperation; +@class MCOFetchFoldersOperation; @interface MCOIMAPSession : NSObject @property (nonatomic, strong) NSString *hostname; @@ -26,5 +27,5 @@ @property (nonatomic, strong) NSString *delimiter; - (MCOCheckAccountOperation *)checkAccount:(MCOCompletionBlock)completionBlock; - +- (MCOFetchFoldersOperation *)fetchAllFolders:(MCOCompletionBlock)completionBlock; @end diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm index 56e747a5..c01c6a87 100644 --- a/src/objc/imap/MCOIMAPSession.mm +++ b/src/objc/imap/MCOIMAPSession.mm @@ -10,6 +10,7 @@ #import "MCOOperation+Internals.h" #import "MCOObjectWrapper.h" #import "MCOCheckAccountOperation.h" +#import "MCOFetchFoldersOperation.h" #import "NSString+MCO.h" @@ -127,4 +128,13 @@ using namespace mailcore; return [op autorelease]; } + +- (MCOFetchFoldersOperation *)fetchAllFolders:(MCOCompletionBlock)completionBlock { + IMAPOperation *coreOp = self.session->fetchAllFoldersOperation(); + MCOFetchFoldersOperation *op = [[MCOFetchFoldersOperation alloc] initWithOperation:coreOp]; + op.completionBlock = completionBlock; + [op start]; + return [op autorelease]; + +} @end diff --git a/tests/main.mm b/tests/main.mm index fe1efb2e..87f44fa4 100644 --- a/tests/main.mm +++ b/tests/main.mm @@ -273,14 +273,26 @@ static void testAsyncPOP() void testObjc() { MCOIMAPSession *session = [[MCOIMAPSession alloc] init]; - session.username = @"username"; - session.password = @"password"; + session.username = @"monkeybreadr@gmail.com"; + session.password = @""; session.hostname = @"imap.gmail.com"; session.port = 993; session.connectionType = MCOConnectionTypeTLS; - [session checkAccount:^(NSError *err, MCOOperation *op, id result) { - NSLog(@"CONNECTED? %@", err); + [session checkAccount:^(NSError *err, MCOOperation *op, id response) { + if (err) { + NSLog(@"Oh crap, an error %@", err); + } else { + NSLog(@"CONNECTED"); + } + }]; + + [session fetchAllFolders:^(NSError *err, MCOOperation *op, id response) { + if (err) { + NSLog(@"Oh crap, an error %@", err); + } else { + NSLog(@"Folder %@", response); + } }]; [[NSRunLoop currentRunLoop] run]; |