예제 #1
0
        public static ImapToken Create(ImapTokenType type, ByteArrayBuilder builder)
        {
            string value;

            if (type == ImapTokenType.Flag)
            {
                foreach (var token in CommonMessageFlagTokens)
                {
                    value = (string)token.Value;

                    if (builder.Equals(value, true))
                    {
                        return(token);
                    }
                }
            }
            else if (builder.Equals("NIL", true))
            {
                foreach (var token in NilTokens)
                {
                    value = (string)token.Value;

                    if (builder.Equals(value))
                    {
                        return(token);
                    }
                }

                var nil = new ImapToken(ImapTokenType.Nil, builder.ToString());
                NilTokens.Add(nil);

                return(nil);
            }
            else
            {
                if (builder.Equals("FETCH", false))
                {
                    return(Fetch);
                }
                if (builder.Equals("BODY", false))
                {
                    return(Body);
                }
                if (builder.Equals("BODYSTRUCTURE", false))
                {
                    return(BodyStructure);
                }
                if (builder.Equals("ENVELOPE", false))
                {
                    return(Envelope);
                }
                if (builder.Equals("FLAGS", false))
                {
                    return(Flags);
                }
                if (builder.Equals("INTERNALDATE", false))
                {
                    return(InternalDate);
                }
                if (builder.Equals("MODSEQ", false))
                {
                    return(ModSeq);
                }
                if (builder.Equals("RFC822.SIZE", false))
                {
                    return(Rfc822Size);
                }
                if (builder.Equals("UID", false))
                {
                    return(Uid);
                }
                if (builder.Equals("X-GM-LABELS", false))
                {
                    return(XGMLabels);
                }
                if (builder.Equals("X-GM-MSGID", false))
                {
                    return(XGMMsgId);
                }
                if (builder.Equals("X-GM-THRID", false))
                {
                    return(XGMThrId);
                }
            }

            value = builder.ToString();

            return(new ImapToken(type, value));
        }