diff options
author | Nikolay Morev <kolyuchiy@gmail.com> | 2016-04-06 09:45:42 +0400 |
---|---|---|
committer | HoĆ V. DINH <dinh.viet.hoa@gmail.com> | 2016-04-05 22:45:42 -0700 |
commit | f6129b13dda6f5f927568600a4e7dbea03939731 (patch) | |
tree | 199fbee36eb258ad0447f30d8aae3756410710ba /src/objc | |
parent | 36d342d911e0cf2cad6a008ecc9b5ce401c9029e (diff) |
Expose SMTP response and response code to Objective-C API
* Expose SMTP response and response code to Objective-C API
Diffstat (limited to 'src/objc')
-rw-r--r-- | src/objc/abstract/MCOConstants.h | 5 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPLoginOperation.mm | 3 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPNoopOperation.mm | 3 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPOperation+Private.h | 2 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPOperation.mm | 21 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPSendOperation.mm | 3 |
6 files changed, 33 insertions, 4 deletions
diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index cc422ed9..05e6f00f 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -423,6 +423,11 @@ typedef NS_ENUM(NSInteger, MCOErrorCode) { MCOErrorCodeCount, }; +/** Error userInfo key for SMTP operations response string */ +#define MCOSMTPResponseKey @"MCOSMTPResponseKey" +/** Error userInfo key for SMTP operations response code */ +#define MCOSMTPResponseCodeKey @"MCOSMTPResponseCodeKey" + /** Here's the list of connection log types.*/ typedef NS_ENUM(NSInteger, MCOConnectionLogType) { /** Received data.*/ diff --git a/src/objc/smtp/MCOSMTPLoginOperation.mm b/src/objc/smtp/MCOSMTPLoginOperation.mm index f84163da..2e947f17 100644 --- a/src/objc/smtp/MCOSMTPLoginOperation.mm +++ b/src/objc/smtp/MCOSMTPLoginOperation.mm @@ -12,6 +12,7 @@ #import "MCOUtils.h" #import "MCOOperation+Private.h" +#import "MCOSMTPOperation+Private.h" typedef void (^CompletionType)(NSError *error); @@ -56,7 +57,7 @@ typedef void (^CompletionType)(NSError *error); if (_completionBlock == NULL) return; - NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()]; + NSError * error = [self _errorFromNativeOperation]; _completionBlock(error); [_completionBlock release]; _completionBlock = NULL; diff --git a/src/objc/smtp/MCOSMTPNoopOperation.mm b/src/objc/smtp/MCOSMTPNoopOperation.mm index aedb45bc..256029c9 100644 --- a/src/objc/smtp/MCOSMTPNoopOperation.mm +++ b/src/objc/smtp/MCOSMTPNoopOperation.mm @@ -12,6 +12,7 @@ #import "MCOUtils.h" #import "MCOOperation+Private.h" +#import "MCOSMTPOperation+Private.h" typedef void (^CompletionType)(NSError *error); @@ -56,7 +57,7 @@ typedef void (^CompletionType)(NSError *error); if (_completionBlock == NULL) return; - NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()]; + NSError * error = [self _errorFromNativeOperation]; _completionBlock(error); [_completionBlock release]; _completionBlock = NULL; diff --git a/src/objc/smtp/MCOSMTPOperation+Private.h b/src/objc/smtp/MCOSMTPOperation+Private.h index a3cb0cb5..03397c79 100644 --- a/src/objc/smtp/MCOSMTPOperation+Private.h +++ b/src/objc/smtp/MCOSMTPOperation+Private.h @@ -16,6 +16,8 @@ @property (nonatomic, retain) MCOSMTPSession * session; +- (NSError *) _errorFromNativeOperation; + @end #endif diff --git a/src/objc/smtp/MCOSMTPOperation.mm b/src/objc/smtp/MCOSMTPOperation.mm index 9d96613f..3ff939c6 100644 --- a/src/objc/smtp/MCOSMTPOperation.mm +++ b/src/objc/smtp/MCOSMTPOperation.mm @@ -39,7 +39,7 @@ typedef void (^CompletionType)(NSError *error); if (_completionBlock == NULL) return; - NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()]; + NSError * error = [self _errorFromNativeOperation]; _completionBlock(error); [_completionBlock release]; _completionBlock = NULL; @@ -56,4 +56,23 @@ typedef void (^CompletionType)(NSError *error); return _session; } +- (NSError *) _errorFromNativeOperation +{ + nativeType * op = MCO_NATIVE_INSTANCE; + NSError * error = [NSError mco_errorWithErrorCode:op->error()]; + if (error != nil) { + if (op->lastSMTPResponse() != NULL || op->lastSMTPResponseCode() != 0) { + NSMutableDictionary * userInfo = [[error userInfo] mutableCopy]; + if (op->lastSMTPResponse() != NULL) { + userInfo[MCOSMTPResponseKey] = MCO_TO_OBJC(op->lastSMTPResponse()); + } + if (op->lastSMTPResponseCode() != 0) { + userInfo[MCOSMTPResponseCodeKey] = @(op->lastSMTPResponseCode()); + } + error = [NSError errorWithDomain:[error domain] code:[error code] userInfo:userInfo]; + } + } + return error; +} + @end diff --git a/src/objc/smtp/MCOSMTPSendOperation.mm b/src/objc/smtp/MCOSMTPSendOperation.mm index e02550da..ae108814 100644 --- a/src/objc/smtp/MCOSMTPSendOperation.mm +++ b/src/objc/smtp/MCOSMTPSendOperation.mm @@ -12,6 +12,7 @@ #import "MCOUtils.h" #import "MCOOperation+Private.h" +#import "MCOSMTPOperation+Private.h" #define nativeType mailcore::SMTPOperation @@ -99,7 +100,7 @@ private: if (_completionBlock == NULL) return; - NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()]; + NSError * error = [self _errorFromNativeOperation]; _completionBlock(error); [_completionBlock release]; _completionBlock = NULL; |