diff options
author | 2013-04-28 17:37:52 -0600 | |
---|---|---|
committer | 2013-04-28 17:37:52 -0600 | |
commit | d9da8ea6e22361a35c0bf94237c8c16d5021a3b4 (patch) | |
tree | e5e68ac9a9906d128c2179b82cd8b60c8a64c721 /src/objc/provider | |
parent | 10c9d0abf0e8009277fb2006cffb76b8a26865c7 (diff) |
Providers API
Diffstat (limited to 'src/objc/provider')
-rw-r--r-- | src/objc/provider/MCOMailProvider.h | 32 | ||||
-rw-r--r-- | src/objc/provider/MCOMailProvider.mm | 113 | ||||
-rw-r--r-- | src/objc/provider/MCOMailProvidersManager.h | 23 | ||||
-rw-r--r-- | src/objc/provider/MCOMailProvidersManager.mm | 69 | ||||
-rw-r--r-- | src/objc/provider/MCONetService.h | 29 | ||||
-rw-r--r-- | src/objc/provider/MCONetService.mm | 90 |
6 files changed, 356 insertions, 0 deletions
diff --git a/src/objc/provider/MCOMailProvider.h b/src/objc/provider/MCOMailProvider.h new file mode 100644 index 00000000..6a5ed9b4 --- /dev/null +++ b/src/objc/provider/MCOMailProvider.h @@ -0,0 +1,32 @@ +// +// MCOMailProvider.h +// mailcore2 +// +// Created by Robert Widmann on 4/28/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface MCOMailProvider : NSObject + +@property (nonatomic, copy) NSString * identifier; + +- (id) initWithInfo:(NSDictionary *)info; + +- (NSArray *) imapServices; +- (NSArray *) smtpServices; +- (NSArray *) popServices; + +- (BOOL) matchEmail:(NSString *)email; +- (BOOL) matchMX:(NSString *)hostname; + +- (NSString *) sentMailFolderPath; +- (NSString *) starredFolderPath; +- (NSString *) allMailFolderPath; +- (NSString *) trashFolderPath; +- (NSString *) draftsFolderPath; +- (NSString *) spamFolderPath; +- (NSString *) importantFolderPath; + +@end diff --git a/src/objc/provider/MCOMailProvider.mm b/src/objc/provider/MCOMailProvider.mm new file mode 100644 index 00000000..4eb5f9fb --- /dev/null +++ b/src/objc/provider/MCOMailProvider.mm @@ -0,0 +1,113 @@ +// +// MCOMailProvider.m +// mailcore2 +// +// Created by Robert Widmann on 4/28/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMailProvider.h" +#include "MCMailProvider.h" + +#import "NSDictionary+MCO.h" +#import "NSArray+MCO.h" +#import "NSString+MCO.h" + +@implementation MCOMailProvider { + mailcore::MailProvider * _provider; +} + +- (mailcore::Object *) mco_mcObject +{ + return _provider; +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::MailProvider * provider = (mailcore::MailProvider *) object; + return [[self alloc] initWithProvider:provider]; +} + +- (id) initWithInfo:(NSDictionary *)info +{ + self = [super init]; + + _provider = new mailcore::MailProvider([info mco_mcHashMap]); + + return self; +} + +- (id) initWithProvider:(mailcore::MailProvider *)provider +{ + self = [super init]; + + _provider = provider; + + return self; +} + +- (NSArray *) imapServices +{ + return [NSArray mco_arrayWithMCArray:_provider->imapServices()]; +} + +- (NSArray *) smtpServices +{ + return [NSArray mco_arrayWithMCArray:_provider->smtpServices()]; +} + +- (NSArray *) popServices +{ + return [NSArray mco_arrayWithMCArray:_provider->popServices()]; +} + +- (BOOL) matchEmail:(NSString *)email +{ + return _provider->matchEmail(email.mco_mcString); +} + +- (BOOL) matchMX:(NSString *)hostname +{ + return _provider->matchMX(hostname.mco_mcString); +} + +- (NSString *) sentMailFolderPath +{ + return [NSString mco_stringWithMCString:_provider->sentMailFolderPath()]; +} + +- (NSString *) starredFolderPath +{ + return [NSString mco_stringWithMCString:_provider->starredFolderPath()]; +} + +- (NSString *) allMailFolderPath +{ + return [NSString mco_stringWithMCString:_provider->allMailFolderPath()]; +} + +- (NSString *) trashFolderPath +{ + return [NSString mco_stringWithMCString:_provider->trashFolderPath()]; +} + +- (NSString *) draftsFolderPath +{ + return [NSString mco_stringWithMCString:_provider->draftsFolderPath()]; +} + +- (NSString *) spamFolderPath +{ + return [NSString mco_stringWithMCString:_provider->spamFolderPath()]; +} + +- (NSString *) importantFolderPath +{ + return [NSString mco_stringWithMCString:_provider->spamFolderPath()]; +} + +- (BOOL) isMainFolder:(NSString *)folderPath prefix:(NSString *)prefix { + return _provider->isMainFolder(folderPath.mco_mcString, prefix.mco_mcString); +} + +@end diff --git a/src/objc/provider/MCOMailProvidersManager.h b/src/objc/provider/MCOMailProvidersManager.h new file mode 100644 index 00000000..55b5e6af --- /dev/null +++ b/src/objc/provider/MCOMailProvidersManager.h @@ -0,0 +1,23 @@ +// +// MCOMailProvidersManager.h +// mailcore2 +// +// Created by Robert Widmann on 4/28/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@class MCOMailProvider; + +@interface MCOMailProvidersManager : NSObject + ++ (MCOMailProvidersManager *) sharedManager; + +- (MCOMailProvider *) providerForEmail:(NSString *)email; +- (MCOMailProvider *) providerForMX:(NSString *)hostname; +- (MCOMailProvider *) providerForIdentifier:(NSString *)identifier; +- (void) registerProviders:(NSDictionary *)providers; +- (void) registerProvidersFilename:(NSString *)filename; + +@end diff --git a/src/objc/provider/MCOMailProvidersManager.mm b/src/objc/provider/MCOMailProvidersManager.mm new file mode 100644 index 00000000..f7b11cb9 --- /dev/null +++ b/src/objc/provider/MCOMailProvidersManager.mm @@ -0,0 +1,69 @@ +// +// MCOMailProvidersManager.m +// mailcore2 +// +// Created by Robert Widmann on 4/28/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMailProvidersManager.h" +#include "MCMailProvidersManager.h" +#import "MCOMailProvider.h" + +#import "NSString+MCO.h" +#import "NSDictionary+MCO.h" +#import "NSObject+MCO.h" + +@implementation MCOMailProvidersManager + ++ (MCOMailProvidersManager *) sharedManager +{ + static MCOMailProvidersManager *sharedInstance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[self alloc] init]; \ + }); + return sharedInstance; +} + +- (id) init +{ + NSString * filename; + + self = [super init]; + + filename = [[NSBundle bundleForClass:[self class]] pathForResource:@"providers" ofType:@"json"]; + [self registerProvidersFilename:filename]; + + return self; +} + +- (void) registerProviders:(NSDictionary *)providers +{ + mailcore::MailProvidersManager::sharedManager()->registerProviders(providers.mco_mcHashMap); +} + +- (void) registerProvidersFilename:(NSString *)filename +{ + mailcore::MailProvidersManager::sharedManager()->registerProvidersFilename(filename.mco_mcString); +} + +- (MCOMailProvider *) providerForEmail:(NSString *)email +{ + mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForEmail(email.mco_mcString); + return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider]; +} + +- (MCOMailProvider *) providerForMX:(NSString *)hostname +{ + mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForMX(hostname.mco_mcString); + return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider]; +} + +- (MCOMailProvider *) providerForIdentifier:(NSString *)identifier +{ + mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForIdentifier(identifier.mco_mcString); + return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider]; +} + +@end diff --git a/src/objc/provider/MCONetService.h b/src/objc/provider/MCONetService.h new file mode 100644 index 00000000..e1e02141 --- /dev/null +++ b/src/objc/provider/MCONetService.h @@ -0,0 +1,29 @@ +// +// MCONetService.h +// mailcore2 +// +// Created by Robert Widmann on 4/28/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <Foundation/Foundation.h> + +typedef enum { + MCONetServiceConnectionTypeClear = 1 << 0, + MCONetServiceConnectionTypeStartTLS = 1 << 1, + MCONetServiceConnectionTypeTLS = 1 << 2, + MCONetServiceConnectionTypeMask = (MCONetServiceConnectionTypeClear | MCONetServiceConnectionTypeStartTLS | MCONetServiceConnectionTypeTLS) +} MCONetServiceConnectionType; + +@interface MCONetService : NSObject + +@property (nonatomic, copy) NSString * hostname; +@property (nonatomic, assign) unsigned int port; +@property (nonatomic, assign) MCONetServiceConnectionType connectionType; + ++ (MCONetService *) netServiceWithInfo:(NSDictionary *)info; + +- (id) initWithInfo:(NSDictionary *)info; +- (NSDictionary *) info; + +@end diff --git a/src/objc/provider/MCONetService.mm b/src/objc/provider/MCONetService.mm new file mode 100644 index 00000000..eb2ad6f5 --- /dev/null +++ b/src/objc/provider/MCONetService.mm @@ -0,0 +1,90 @@ +// +// MCONetService.m +// mailcore2 +// +// Created by Robert Widmann on 4/28/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCONetService.h" +#include "MCNetService.h" + +#import "NSDictionary+MCO.h" +#import "NSString+MCO.h" + +@implementation MCONetService { + mailcore::NetService * _netService; +} + +- (mailcore::Object *) mco_mcObject +{ + return _netService; +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::NetService * netService = (mailcore::NetService *) object; + return [[self alloc] initWithNetService:netService]; +} + ++ (MCONetService *) netServiceWithInfo:(NSDictionary *)info +{ + return [[[MCONetService alloc] initWithInfo:info] autorelease]; +} + +- (id) initWithInfo:(NSDictionary *)info +{ + self = [super init]; + + _netService = new mailcore::NetService(info.mco_mcHashMap); + + return self; +} + +- (id) initWithNetService:(mailcore::NetService *)netService +{ + self = [super init]; + + _netService = netService; + + return self; +} + +- (void) setHostname:(NSString *)hostname { + _netService->setHostname(hostname.mco_mcString); +} + +- (NSString *) hostname { + return [NSString mco_stringWithMCString:_netService->hostname()]; +} + +- (void) setPort:(unsigned int)port { + _netService->setPort(port); +} + +- (unsigned int) port { + return _netService->port(); +} + +- (MCONetServiceConnectionType) connectionType { + return (MCONetServiceConnectionType) _netService->connectionType(); +} + +- (NSDictionary *) info +{ + return [NSDictionary mco_dictionaryWithMCHashMap:_netService->info()]; +} + +- (NSString*)hostnameWithEmail:(NSString*)email +{ + NSString *result = nil; + NSArray *components = [email componentsSeparatedByString:@"@"]; + if (components.count == 0) { + return self.hostname; + } else { + result = [self.hostname stringByReplacingOccurrencesOfString:@"{domain}" withString:[components lastObject]]; + } + return [NSString mco_stringWithMCString:_netService->normalizedHostnameWithEmail(email.mco_mcString)]; +} + +@end |