コード例 #1
0
        public void SettingsArePresent()
        {
            // Arrange
            var settings = new WopiUrlSettings()
            {
                BusinessUser          = 1,
                UiLlcc                = new CultureInfo("en-US"),
                DcLlcc                = new CultureInfo("es-ES"),
                Embedded              = true,
                DisableAsync          = true,
                DisableBroadcast      = true,
                Fullscreen            = true,
                Recording             = true,
                ThemeId               = 1,
                DisableChat           = 1,
                Perfstats             = 1,
                HostSessionId         = Guid.NewGuid().ToString(),
                SessionContext        = Guid.NewGuid().ToString(),
                WopiSource            = "c:\\doc.docx",
                ValidatorTestCategory = "All"
            };

            // Act

            // Assert
            Assert.Equal(15, settings.Count);
        }
コード例 #2
0
		private string ResolveOptionalParameter(string name, string value, WopiUrlSettings urlSettings)
		{
			string param = null;
			if (urlSettings.TryGetValue(value, out param))
			{
				return name + "=" + Uri.EscapeDataString(param) + "&";
			}
			return null;
		}
コード例 #3
0
        public async void UrlWithAdditionalSettings(string extension, string wopiFileUrl, WopiActionEnum action, string expectedValue)
        {
            // Arrange
            var settings = new WopiUrlSettings {
                UI_LLCC = new CultureInfo("en-US")
            };
            var urlGenerator = new WopiUrlBuilder(_discoverer, settings);

            // Act
            var result = await urlGenerator.GetFileUrlAsync(extension, wopiFileUrl, action);

            // Assert
            Assert.Equal(expectedValue, result);
        }
コード例 #4
0
		/// <summary>
		/// Generates an URL for a given file and action.
		/// </summary>
		/// <param name="extension">File extension used to identify a correct URL template.</param>
		/// <param name="fileIdentifier">Identifier of a file which an object of interest.</param>
		/// <param name="accessToken">Access token that will be added to the URL.</param>
		/// <param name="action">Action used to identify a correct URL template.</param>
		/// <param name="urlSettings">Additional URL settings (if not specified, defaults passed to the class constructor will be used).</param>
		/// <returns></returns>
		public async Task<string> GetFileUrlAsync(string extension, string fileIdentifier, string accessToken, WopiActionEnum action, WopiUrlSettings urlSettings = null)
		{
			var combinedUrlSettings = new WopiUrlSettings(urlSettings.Merge(UrlSettings));
			var template = await WopiDiscoverer.GetUrlTemplateAsync(extension, action);
			if (template != null)
			{
				// Resolve optional parameters
				var url = Regex.Replace(template, @"<(?<name>\w*)=(?<value>\w*)&*>", m => ResolveOptionalParameter(m.Groups["name"].Value, m.Groups["value"].Value, combinedUrlSettings));
				url = url.TrimEnd('&');

				// Append mandatory parameters
				var fileUrl = WopiHostUrl + "/wopi/files/" + fileIdentifier;
				url += "&WOPISrc=" + Uri.EscapeDataString(fileUrl);
				url += "&access_token=" + Uri.EscapeDataString(accessToken);

				return url;
			}
			return null;
		}
コード例 #5
0
		/// <summary>
		/// Creates a new instance of WOPI URL generator class.
		/// </summary>
		/// <param name="wopiClientUrl">URL of the WOPI client (OWA/OOS/etc.)</param>
		/// <param name="wopiHostUrl">URL of the WOPI host (endpoint serving the content to WOPI client).</param>
		/// <param name="urlSettings">Additional settings influencing behavior of the WOPI client.</param>
		public WopiUrlGenerator(string wopiClientUrl, string wopiHostUrl, WopiUrlSettings urlSettings = null)
		{
			WopiClientUrl = wopiClientUrl;
			WopiHostUrl = wopiHostUrl;
			UrlSettings = urlSettings;
		}