aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Robert Widmann <devteam.codafi@gmail.com>2013-12-29 17:31:22 -0800
committerGravatar Robert Widmann <devteam.codafi@gmail.com>2013-12-29 17:31:22 -0800
commit4a3761659ad94f2c447725c9dcc763241c8a7b2c (patch)
tree94a37f805c8568908e08d326468782d556c87c5a
parent5a7ca5021f63169eac3510e5cac4d9c8757bcef7 (diff)
Implement X-GM-RAW interfaces
-rw-r--r--src/core/abstract/MCMessageConstants.h1
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc8
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h1
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc4
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.h11
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm5
6 files changed, 30 insertions, 0 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h
index 59b65f5b..7cad4f5a 100644
--- a/src/core/abstract/MCMessageConstants.h
+++ b/src/core/abstract/MCMessageConstants.h
@@ -192,6 +192,7 @@ namespace mailcore {
IMAPSearchKindSizeLarger,
IMAPSearchKindSizeSmaller,
IMAPSearchKindGmailThreadID,
+ IMAPSearchKindGmailRAW,
IMAPSearchKindOr,
IMAPSearchKindAnd,
};
diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc
index e05ea1e4..5437ffa5 100644
--- a/src/core/imap/MCIMAPSearchExpression.cc
+++ b/src/core/imap/MCIMAPSearchExpression.cc
@@ -313,6 +313,14 @@ IMAPSearchExpression * IMAPSearchExpression::searchGmailThreadID(uint64_t number
return (IMAPSearchExpression *) expr->autorelease();
}
+IMAPSearchExpression * IMAPSearchExpression::searchGmailRAW(String * searchExpr)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindGmailRAW;
+ expr->mValue = searchExpr;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
IMAPSearchExpression * IMAPSearchExpression::searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right)
{
IMAPSearchExpression * expr = new IMAPSearchExpression();
diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h
index 35b326b8..b757e8b3 100644
--- a/src/core/imap/MCIMAPSearchExpression.h
+++ b/src/core/imap/MCIMAPSearchExpression.h
@@ -54,6 +54,7 @@ namespace mailcore {
static IMAPSearchExpression * searchSizeLarger(uint32_t size);
static IMAPSearchExpression * searchSizeSmaller(uint32_t size);
static IMAPSearchExpression * searchGmailThreadID(uint64_t number);
+ static IMAPSearchExpression * searchGmailRAW(String * expr);
static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right);
static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right);
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc
index fd76497f..093d6fd7 100755
--- a/src/core/imap/MCIMAPSession.cc
+++ b/src/core/imap/MCIMAPSession.cc
@@ -2791,6 +2791,10 @@ static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpr
{
return mailimap_search_key_new_smaller( (uint32_t) expression->longNumber());
}
+ case IMAPSearchKindGmailRAW:
+ {
+ return mailimap_search_key_new_xgmraw(strdup(expression->value()->UTF8Characters()));
+ }
case IMAPSearchKindOr:
{
return mailimap_search_key_new_or(searchKeyFromSearchExpression(expression->leftExpression()), searchKeyFromSearchExpression(expression->rightExpression()));
diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h
index a52936de..fa9865fc 100644
--- a/src/objc/imap/MCOIMAPSearchExpression.h
+++ b/src/objc/imap/MCOIMAPSearchExpression.h
@@ -288,6 +288,17 @@
+ (MCOIMAPSearchExpression *) searchGmailThreadID:(uint64_t)number;
/**
+ Creates a search expression that gets emails that match a gmail RAW search
+ expression.
+
+ Example:
+
+ MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchGmailRAW:@"has:attachment in:unread"]
+ */
++ (MCOIMAPSearchExpression *) searchGmailRAW:(NSString *)expr;
+
+
+/**
Creates a search expression that's a disjunction of two search expressions.
Example:
diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm
index 0e79237a..af4044a4 100644
--- a/src/objc/imap/MCOIMAPSearchExpression.mm
+++ b/src/objc/imap/MCOIMAPSearchExpression.mm
@@ -200,6 +200,11 @@
return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailThreadID(number));
}
++ (MCOIMAPSearchExpression *) searchGmailRAW:(NSString *)expr
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailRAW([expr mco_mcString]));
+}
+
+ (MCOIMAPSearchExpression *) searchAnd:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other
{
mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchAnd(expression->_nativeExpr, other->_nativeExpr);