Beispiel #1
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="wopiFileUrl">URL of a file.</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 wopiFileUrl, WopiActionEnum action, WopiUrlSettings urlSettings = null)
        {
            var combinedUrlSettings = new WopiUrlSettings(urlSettings.Merge(UrlSettings));
            var template            = await _wopiDiscoverer.GetUrlTemplateAsync(extension, action);

            if (!string.IsNullOrEmpty(template))
            {
                // 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
                url += "&WOPISrc=" + Uri.EscapeDataString(wopiFileUrl);

                return(url);
            }
            return(null);
        }
Beispiel #2
0
 public WopiUrlGeneratorTests()
 {
     _discoverer = A.Fake <IDiscoverer>();
     A.CallTo(() => _discoverer.GetUrlTemplateAsync("xlsx", WopiActionEnum.Edit)).ReturnsLazily(() => "http://owaserver/x/_layouts/xlviewerinternal.aspx?edit=1&<ui=UI_LLCC&><rs=DC_LLCC&>");
     A.CallTo(() => _discoverer.GetUrlTemplateAsync("docx", WopiActionEnum.View)).ReturnsLazily(() => "http://owaserver/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>");
 }