Example #1
0
        // Token: 0x060000F6 RID: 246 RVA: 0x00004394 File Offset: 0x00002594
        internal ConnectResponse Execute(ConnectRequest connectRequest, IServerCapabilities requiredCapabilities)
        {
            ConnectResponse connectResponse = this.Execute(connectRequest);

            connectResponse.UserSmtpAddressString = base.EasConnectionSettings.EasEndpointSettings.UserSmtpAddressString;
            if (connectResponse.ConnectStatus != ConnectStatus.Success || requiredCapabilities == null)
            {
                return(connectResponse);
            }
            OptionsCommand  optionsCommand  = new OptionsCommand(base.EasConnectionSettings);
            OptionsResponse optionsResponse = optionsCommand.Execute(new OptionsRequest());

            connectResponse.OptionsResponse = optionsResponse;
            EasServerCapabilities easServerCapabilities = optionsResponse.EasServerCapabilities;

            if (easServerCapabilities.Supports(requiredCapabilities))
            {
                base.EasConnectionSettings.ExtensionCapabilities = optionsResponse.EasExtensionCapabilities;
                return(connectResponse);
            }
            IEnumerable <string> values = requiredCapabilities.NotIn(easServerCapabilities);
            string text = string.Join(", ", values);

            base.EasConnectionSettings.Log.Debug("ConnectCommand, missing capabilities: '{0}'.", new object[]
            {
                text
            });
            throw new MissingCapabilitiesException(text);
        }
Example #2
0
        protected override OptionsResponse ExtractResponse(HttpWebResponse webResponse)
        {
            base.LogInfoHeaders(webResponse.Headers);
            string responseHeader  = webResponse.GetResponseHeader("MS-ASProtocolCommands");
            string responseHeader2 = webResponse.GetResponseHeader("MS-ASProtocolVersions");
            string responseHeader3 = webResponse.GetResponseHeader("X-OLK-Extensions");

            if (string.IsNullOrWhiteSpace(responseHeader) || string.IsNullOrWhiteSpace(responseHeader2))
            {
                return(new OptionsResponse
                {
                    OptionsStatus = OptionsStatus.MissingHeaderInResponse
                });
            }
            string[] first = (from sValue in responseHeader.Split(new char[]
            {
                ','
            })
                              select sValue.Trim()).ToArray <string>();
            string[] second = (from sValue in responseHeader2.Split(new char[]
            {
                ','
            })
                               select sValue.Trim()).ToArray <string>();
            string[] capabilities = (from sValue in responseHeader3.Split(new char[]
            {
                ','
            })
                                     select sValue.Trim()).ToArray <string>();
            EasServerCapabilities    easServerCapabilities    = new EasServerCapabilities(first.Union(second));
            EasExtensionCapabilities easExtensionCapabilities = new EasExtensionCapabilities(capabilities);

            this.OptionsStatus = OptionsStatus.Success;
            return(new OptionsResponse
            {
                OptionsStatus = OptionsStatus.Success,
                EasServerCapabilities = easServerCapabilities,
                EasExtensionCapabilities = easExtensionCapabilities
            });
        }