aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/provider/MCOMailProvidersManager.mm
blob: 6b31bc4e4c2a426dbc5c0e65fa00409247cc29f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//
//  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;
}

- (instancetype) init
{
    NSString * filename;
    
    self = [super init];
    
    filename = [[NSBundle bundleForClass:[self class]] pathForResource:@"providers" ofType:@"json"];
    if (filename) {
        mailcore::MailProvidersManager::sharedManager()->registerProvidersWithFilename(filename.mco_mcString);
    }
    
    return self;
}

- (MCOMailProvider *) providerForEmail:(NSString *)email
{
    mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForEmail(email.mco_mcString);
    return MCO_TO_OBJC(provider);
}

- (MCOMailProvider *) providerForMX:(NSString *)hostname
{
    mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForMX(hostname.mco_mcString);
    return MCO_TO_OBJC(provider);
}

- (MCOMailProvider *) providerForIdentifier:(NSString *)identifier
{
    mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForIdentifier(identifier.mco_mcString);
    return MCO_TO_OBJC(provider);
}

- (void) registerProvidersWithFilename:(NSString *)filename
{
    mailcore::MailProvidersManager::sharedManager()->registerProvidersWithFilename(filename.mco_mcString);
}

@end