aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--build-mac/mailcore2.xcodeproj/project.pbxproj6
-rw-r--r--src/core/imap/MCIMAPSession.cc6
-rw-r--r--src/objc/imap/MCOFetchFoldersOperation.h13
-rw-r--r--src/objc/imap/MCOIMAPSession.h3
-rw-r--r--src/objc/imap/MCOIMAPSession.mm10
-rw-r--r--tests/main.mm20
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];