public static byte[] Encode(ImapSearchCriteria criteria) { return (new SearchCriteriaEncoder()).EncodeCriteria(criteria); }
private byte[] EncodeCriteria(ImapSearchCriteria criteria) { Enqueue(new[] {criteria}); Enqueue(Octets.CRLF); Send(); try { var innerStream = Stream.InnerStream as MemoryStream; innerStream.Close(); var ret = new ByteString(innerStream.ToArray()); return ret.Substring(0, ret.Length - 2 /*CRLF*/).ByteArray; } finally { Stream.Close(); } }
// OR <search-key1> <search-key2> // Messages that match either search key. public ImapSearchCriteria Or(ImapSearchCriteria searchingCriteria) { return this | searchingCriteria; }
private static IEnumerable<ImapCapability> MergeRequiredCapabilities(ImapSearchCriteria x, ImapSearchCriteria y) { var requiredCapabilities = new List<ImapCapability>(x.requiredCapabilities); foreach (var cap in y.requiredCapabilities) { if (!requiredCapabilities.Contains(cap)) requiredCapabilities.Add(cap); } return requiredCapabilities; }
// AND public ImapSearchCriteria And(ImapSearchCriteria searchingCriteria) { return this & searchingCriteria; }
public static ImapSearchCriteria Or(ImapSearchCriteria x, ImapSearchCriteria y) { return x | y; }
public static ImapSearchCriteria Not(ImapSearchCriteria c) { return !c; }
public static ImapSearchCriteria And(ImapSearchCriteria x, ImapSearchCriteria y) { return x & y; }
private static void TraverseCriteriaAssertion(ImapSearchCriteria criteria, params ImapString[] expected) { var index = 0; criteria.Traverse(delegate(ImapString val) { Assert.Less(index, expected.Length); Assert.IsInstanceOfType(expected[index].GetType(), val); Assert.AreEqual((string)expected[index], (string)val); index++; }); }