// Token: 0x06000B51 RID: 2897 RVA: 0x0002DA14 File Offset: 0x0002BC14 internal static Dictionary <string, ExtensionData> GetOrgExtensions(StringList requestedExtensionIds, string domain, bool shouldReturnEnabledOnly, bool isUserScope, string userId, StringList userEnabledExtensionIds, StringList userDisabledExtensionIds, out OrgExtensionTable.RequestData requestData, bool isDebug, out string orgMasterTableRawXml, bool retrieveOnly1_0 = false) { Dictionary <string, ExtensionData> dictionary = new Dictionary <string, ExtensionData>(StringComparer.OrdinalIgnoreCase); Collection <ClientExtension> clientExtensions = null; string orgRawXml = null; OrgExtensionTable.RequestData requestDataSave = new OrgExtensionTable.RequestData(); requestData = requestDataSave; OrgExtensionTable.ExecuteWebServicesAction(delegate { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); ExchangeService exchangeService = OrgExtensionTable.CreateExchangeServiceDelegate(domain, requestDataSave); if (exchangeService == null) { return; } if (OrgExtensionTable.GetClientExtensionTimeoutIsAllowed()) { exchangeService.Timeout = 30000; } requestDataSave.CreateExchangeServiceTime = stopwatch.ElapsedMilliseconds; GetClientExtensionResponse clientExtension2 = exchangeService.GetClientExtension(requestedExtensionIds, shouldReturnEnabledOnly, isUserScope, userId, userEnabledExtensionIds, userDisabledExtensionIds, isDebug); stopwatch.Stop(); requestDataSave.GetClientExtensionTime = stopwatch.ElapsedMilliseconds - requestDataSave.CreateExchangeServiceTime; requestDataSave.ExchangeServiceUri = exchangeService.Url; string text; if (exchangeService.HttpResponseHeaders.TryGetValue("request-id", out text)) { requestDataSave.EwsRequestId = text.Replace("-", string.Empty); } else { requestDataSave.EwsRequestId = "NotFound"; } clientExtensions = clientExtension2.ClientExtensions; if (isDebug && !string.IsNullOrWhiteSpace(clientExtension2.RawMasterTableXml)) { try { byte[] bytes = Convert.FromBase64String(clientExtension2.RawMasterTableXml); orgRawXml = Encoding.UTF8.GetString(bytes); } catch (FormatException innerException) { throw new OwaExtensionOperationException(innerException); } catch (ArgumentException innerException2) { throw new OwaExtensionOperationException(innerException2); } } }); if (clientExtensions != null) { foreach (ClientExtension clientExtension in clientExtensions) { try { ExtensionData extensionData = ExtensionData.CreateFromClientExtension(clientExtension); if (!retrieveOnly1_0 || !(extensionData.SchemaVersion != SchemaConstants.SchemaVersion1_0)) { ExtensionData extensionData2; if (!dictionary.TryGetValue(extensionData.ExtensionId, out extensionData2) || !(extensionData.SchemaVersion < extensionData2.SchemaVersion)) { dictionary[ExtensionDataHelper.FormatExtensionId(extensionData.ExtensionId)] = extensionData; } } } catch (OwaExtensionOperationException ex) { OrgExtensionTable.Tracer.TraceError <OwaExtensionOperationException>(0L, "skipping an org extension because it cannot be parsed. Exception: {0}", ex); ExtensionDiagnostics.Logger.LogEvent(ApplicationLogicEventLogConstants.Tuple_OrgExtensionParsingFailed, null, new object[] { "ProcessOrgExtensions", ExtensionDiagnostics.GetLoggedExceptionString(ex) }); } } } orgMasterTableRawXml = orgRawXml; return(dictionary); }