aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc
diff options
context:
space:
mode:
authorGravatar Nikolay Morev <kolyuchiy@gmail.com>2016-04-06 09:45:42 +0400
committerGravatar HoĆ  V. DINH <dinh.viet.hoa@gmail.com>2016-04-05 22:45:42 -0700
commitf6129b13dda6f5f927568600a4e7dbea03939731 (patch)
tree199fbee36eb258ad0447f30d8aae3756410710ba /src/objc
parent36d342d911e0cf2cad6a008ecc9b5ce401c9029e (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.h5
-rw-r--r--src/objc/smtp/MCOSMTPLoginOperation.mm3
-rw-r--r--src/objc/smtp/MCOSMTPNoopOperation.mm3
-rw-r--r--src/objc/smtp/MCOSMTPOperation+Private.h2
-rw-r--r--src/objc/smtp/MCOSMTPOperation.mm21
-rw-r--r--src/objc/smtp/MCOSMTPSendOperation.mm3
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;