/// <summary> /// Initializes a new instance of the <see cref="ClientExtension"/> class. /// </summary> /// <param name="type">Extension type</param> /// <param name="scope">Extension install scope</param> /// <param name="manifestStream">Manifest stream, can be null</param> /// <param name="marketplaceAssetID">The asset ID for Office Marketplace</param> /// <param name="marketplaceContentMarket">The content market for Office Marketplace</param> /// <param name="isAvailable">Whether extension is available</param> /// <param name="isMandatory">Whether extension is mandatory</param> /// <param name="isEnabledByDefault">Whether extension is enabled by default</param> /// <param name="providedTo">Who the extension is provided for (e.g. "entire org" or "specific users")</param> /// <param name="specificUsers">List of users extension is provided for, can be null</param> /// <param name="appStatus">App status</param> /// <param name="etoken">Etoken</param> public ClientExtension( ExtensionType type, ExtensionInstallScope scope, Stream manifestStream, string marketplaceAssetID, string marketplaceContentMarket, bool isAvailable, bool isMandatory, bool isEnabledByDefault, ClientExtensionProvidedTo providedTo, StringList specificUsers, string appStatus, string etoken) : this() { this.Type = type; this.Scope = scope; this.ManifestStream = manifestStream; this.MarketplaceAssetID = marketplaceAssetID; this.MarketplaceContentMarket = marketplaceContentMarket; this.IsAvailable = isAvailable; this.IsMandatory = isMandatory; this.IsEnabledByDefault = isEnabledByDefault; this.ProvidedTo = providedTo; this.SpecificUsers = specificUsers; this.AppStatus = appStatus; this.Etoken = etoken; }
public SchemaParser(SafeXmlDocument xmlDoc, ExtensionInstallScope extensionInstallScope) { this.xmlDoc = xmlDoc; this.extensionInstallScope = extensionInstallScope; this.namespaceManager = new XmlNamespaceManager(xmlDoc.NameTable); this.namespaceManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); this.namespaceManager.AddNamespace(this.GetOweNamespacePrefix(), this.GetOweNamespaceUri()); this.xpathPrefix = "//" + this.GetOweNamespacePrefix() + ":"; this.oweNameSpacePrefixWithSemiColon = this.GetOweNamespacePrefix() + ":"; }
private static Uri ValidateUrl(ExtensionInstallScope extensionScope, string name, string url) { Uri uri; if (!Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out uri)) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonInvalidUrlValue(name, url))); } if (uri.IsAbsoluteUri) { if (!string.Equals(uri.Scheme, "https", StringComparison.OrdinalIgnoreCase)) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonUnsupportedUrlScheme(name, url))); } } else if (ExtensionInstallScope.Default != extensionScope) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonUrlMustBeAbsolute(name, url))); } return(uri); }
// Token: 0x06000A7C RID: 2684 RVA: 0x0002904C File Offset: 0x0002724C internal static SchemaParser GetSchemaParser(SafeXmlDocument xmlDoc, ExtensionInstallScope scope) { string text; string schemaVersion; if (!ExtensionDataHelper.TryGetOfficeAppSchemaInfo(xmlDoc, "http://schemas.microsoft.com/office/appforoffice/", out text, out schemaVersion)) { throw new OwaExtensionOperationException(Strings.ErrorReasonManifestSchemaUnknown); } string a; if ((a = text) != null) { if (a == "http://schemas.microsoft.com/office/appforoffice/1.0") { return(new SchemaParser1_0(xmlDoc, scope)); } if (a == "http://schemas.microsoft.com/office/appforoffice/1.1") { return(new SchemaParser1_1(xmlDoc, scope)); } } throw new OwaExtensionOperationException(Strings.ErrorReasonManifestVersionNotSupported(schemaVersion, ExchangeSetupContext.InstalledVersion)); }
public SchemaParser1_1(SafeXmlDocument xmlDoc, ExtensionInstallScope extensionInstallScope) : base(xmlDoc, extensionInstallScope) { }
internal static void ExtensionGetPostAction(bool isOrgScope, DataRow inputRow, DataTable dataTable, DataObjectStore store) { foreach (object obj in dataTable.Rows) { DataRow dataRow = (DataRow)obj; ExtensionType extensionType = (ExtensionType)dataRow["Type"]; if (ExtensionType.MarketPlace == extensionType) { dataRow["IsMarketplaceExtension"] = true; string text = string.Format("{0}?app={1}&ver={2}&clid={3}&p1={4}&p2={5}&p3={6}&p4={7}&p5={8}&Scope={9}&CallBackURL={10}&DeployId={11}", new object[] { ExtensionUtility.MarketplaceLandingPageUrl, ExtensionUtility.Application, ExtensionUtility.Version, Util.GetLCIDInDecimal(), ExtensionUtility.ClientFullVersion, ExtensionUtility.ClickContext, ExtensionUtility.DefaultInputForQueryString, ExtensionUtility.EndNodeTargetCode, dataRow["MarketplaceContentmarket"] + "\\" + dataRow["MarketplaceAssetID"], isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope, isOrgScope ? ExtensionUtility.UrlEncodedOfficeCallBackUrlForOrg : ExtensionUtility.UrlEncodedOfficeCallBackUrl, ExtensionUtility.DeploymentId }); string myAppsPageLink = string.Format("{0}?app={1}&ver={2}&clid={3}&p1={4}&p2={5}&p3={6}&p4={7}&p5={8}&Scope={9}&CallBackURL={10}&DeployId={11}", new object[] { ExtensionUtility.MyAppsPageUrl, ExtensionUtility.Application, ExtensionUtility.Version, Util.GetLCIDInDecimal(), ExtensionUtility.ClientFullVersion, ExtensionUtility.ClickContext, ExtensionUtility.DefaultInputForQueryString, ExtensionUtility.EndNodeTargetCode, dataRow["MarketplaceContentmarket"] + "\\" + dataRow["MarketplaceAssetID"], isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope, isOrgScope ? ExtensionUtility.UrlEncodedOfficeCallBackUrlForOrg : ExtensionUtility.UrlEncodedOfficeCallBackUrl, ExtensionUtility.DeploymentId }); string directCallbackLink = string.Format("{0}&Scope={1}&lc={2}&clientToken={3}&AssetId={4}", new object[] { isOrgScope?ExtensionUtility.OfficeCallBackUrlForOrg: ExtensionUtility.OfficeCallBackUrl, isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope, dataRow["MarketplaceContentmarket"], dataRow["Etoken"], dataRow["MarketplaceAssetID"] }); dataRow["DetailsUrl"] = text; dataRow["ReviewUrl"] = string.Format("{0}?app={1}&ver={2}&clid={3}&p1={4}&p2={5}&p3={6}&p4={7}&p5={8}&Scope={9}&CallBackURL={10}&DeployId={11}", new object[] { ExtensionUtility.MarketplaceLandingPageUrl, ExtensionUtility.Application, ExtensionUtility.Version, Util.GetLCIDInDecimal(), ExtensionUtility.ClientFullVersion, ExtensionUtility.ClickContext, ExtensionUtility.DefaultInputForQueryString, ExtensionUtility.ReviewsTargetCode, dataRow["MarketplaceContentMarket"] + "\\" + dataRow["MarketplaceAssetID"], isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope, isOrgScope ? ExtensionUtility.UrlEncodedOfficeCallBackUrlForOrg : ExtensionUtility.UrlEncodedOfficeCallBackUrl, ExtensionUtility.DeploymentId }); string text2 = (dataRow["AppStatus"] != null && !DBNull.Value.Equals(dataRow["AppStatus"])) ? ((string)dataRow["AppStatus"]) : string.Empty; if (!string.IsNullOrWhiteSpace(text2)) { dataRow["ShowNotification"] = true; ExtensionUtility.SetErrorDescriptionAndNotificationLink(text2, dataRow, text, directCallbackLink, myAppsPageLink); } string value = (dataRow["LicenseType"] != null && !DBNull.Value.Equals(dataRow["LicenseType"])) ? ((string)dataRow["LicenseType"]) : string.Empty; if (Microsoft.Exchange.Management.Extension.LicenseType.Trial.ToString().Equals(value, StringComparison.OrdinalIgnoreCase)) { dataRow["ShowTrialReminder"] = true; dataRow["TrialReminderActionLinkUrl"] = text; dataRow["ShowTrialReminderActionLink"] = true; } } ExtensionInstallScope extensionInstallScope = (ExtensionInstallScope)dataRow["Scope"]; if (isOrgScope) { dataRow["ExtensionCanBeUninstalled"] = (extensionInstallScope == ExtensionInstallScope.Organization); dataRow["ShowEnableDisable"] = true; } else { dataRow["ExtensionCanBeUninstalled"] = (extensionInstallScope == ExtensionInstallScope.User); DefaultStateForUser?defaultStateForUser = dataRow["DefaultStateForUser"] as DefaultStateForUser?; if (defaultStateForUser != null && defaultStateForUser.Value == DefaultStateForUser.AlwaysEnabled) { dataRow["ExtensionCanNotBeUninstalledMessage"] = OwaOptionStrings.ExtensionCanNotBeDisabledNorUninstalled; dataRow["ShowEnableDisable"] = false; } else { dataRow["ExtensionCanNotBeUninstalledMessage"] = OwaOptionStrings.ExtensionCanNotBeUninstalled; dataRow["ShowEnableDisable"] = true; } if (extensionInstallScope == ExtensionInstallScope.Organization) { dataRow["ShowNotificationLink"] = false; dataRow["ShowTrialReminderActionLink"] = false; } } if (dataRow["IconURL"].IsNullValue()) { string themeResource = ThemeResource.GetThemeResource(ExtensionUtility.pagesSection.Theme, "extensiondefaulticon.png"); dataRow["IconURL"] = new Uri(themeResource); } } }