public static bool TryParse(string s, out ConnectedDomain connectedDomain)
        {
            connectedDomain = null;
            int num = s.IndexOf(ConnectedDomain.Separator);

            if (-1 == num)
            {
                return(false);
            }
            string text = s.Substring(0, num);
            int    num2 = s.IndexOf(ConnectedDomain.Separator, num + 1);

            if (-1 == num2)
            {
                return(false);
            }
            string text2 = s.Substring(num + 1, num2 - num - 1);
            int    num3  = s.IndexOf(ConnectedDomain.Separator, num2 + 1);

            if (-1 == num3 || num3 - num2 < 4)
            {
                return(false);
            }
            string g = s.Substring(num2 + 1, num3 - num2 - 1);
            Guid   guid;

            if (!GuidHelper.TryParseGuid(g, out guid))
            {
                return(false);
            }
            int num4 = 1;
            int num5 = s.IndexOf(ConnectedDomain.Separator, num3 + 1);

            if (-1 != num5)
            {
                string s2 = s.Substring(num3 + 1, num5 - num3 - 1);
                if (!int.TryParse(s2, out num4) || num4 < 1 || num4 > 100)
                {
                    return(false);
                }
            }
            else
            {
                num5 = num3;
            }
            string       address = s.Substring(num5 + 1, s.Length - num5 - 1);
            AddressSpace addressSpace;

            if (!AddressSpace.TryParse(address, out addressSpace, false))
            {
                return(false);
            }
            addressSpace.Cost = num4;
            connectedDomain   = new ConnectedDomain(text, text2, guid, addressSpace);
            return(true);
        }
        internal static bool ValidateAddress(string address)
        {
            if (string.IsNullOrEmpty(address))
            {
                return(false);
            }
            SmtpAddress smtpAddress = new SmtpAddress(address);

            if (!smtpAddress.IsValidAddress)
            {
                return(false);
            }
            Guid empty = Guid.Empty;

            return(GuidHelper.TryParseGuid(smtpAddress.Local, out empty) && string.Equals(smtpAddress.Domain, "umgateway.exchangelabs.com", StringComparison.OrdinalIgnoreCase));
        }
Example #3
0
        public static PublicFolderInformation Deserialize(string input)
        {
            if (string.IsNullOrWhiteSpace(input))
            {
                return(new PublicFolderInformation(1, 1, string.Empty));
            }
            int num  = 0;
            int num2 = input.IndexOf(PublicFolderInformation.Separator);

            if (num2 == -1 || !int.TryParse(input.Substring(0, num2), out num) || num > 1)
            {
                return(new PublicFolderInformation(num, 1, input));
            }
            int    num3 = 0;
            string text = input.Substring(num2 + 1);
            int    num4 = text.IndexOf(PublicFolderInformation.Separator);

            if (num4 == -1 || !int.TryParse(text.Substring(0, num4), out num3))
            {
                return(new PublicFolderInformation(num, 1, input));
            }
            text = text.Substring(num4 + 1);
            int  num5 = text.IndexOf(PublicFolderInformation.Separator);
            byte b    = 0;

            PublicFolderInformation.HierarchyType hierarchyType;
            if (num5 == -1 || !byte.TryParse(text.Substring(0, num5), out b) || !Enum.IsDefined(typeof(PublicFolderInformation.HierarchyType), b) || (hierarchyType = (PublicFolderInformation.HierarchyType)b) == PublicFolderInformation.HierarchyType.Unknown)
            {
                return(new PublicFolderInformation(num, num3, input));
            }
            int num6 = 0;

            text = text.Substring(num5 + 1);
            int num7 = text.IndexOf(PublicFolderInformation.Separator);

            if (num7 == -1 || !int.TryParse(text.Substring(0, num7), out num6) || num6 <= 0 || text.Length < num7 + 1 + num6)
            {
                return(new PublicFolderInformation(num, num3, input));
            }
            string text2 = text.Substring(num7 + 1, num6);

            if (string.IsNullOrWhiteSpace(text2))
            {
                return(new PublicFolderInformation(num, num3, input));
            }
            switch (hierarchyType)
            {
            case PublicFolderInformation.HierarchyType.MailboxGuid:
            case PublicFolderInformation.HierarchyType.InTransitMailboxGuid:
            {
                Guid empty = Guid.Empty;
                if (GuidHelper.TryParseGuid(text2, out empty))
                {
                    return(new PublicFolderInformation(num, num3, hierarchyType, empty, input));
                }
                return(new PublicFolderInformation(num, num3, input));
            }

            default:
                throw new InvalidOperationException("Unknown HierarchyType! How did we get here if parsing was successful?");
            }
        }