// 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); }
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 }); }