Ejemplo n.º 1
0
 private static string ResolveOptionalParameter(string name, string value, WopiUrlSettings urlSettings)
 {
     if (urlSettings.TryGetValue(value, out var param))
     {
         return(name + "=" + Uri.EscapeDataString(param) + "&");
     }
     return(null);
 }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Creates a new instance of WOPI URL generator class.
 /// </summary>
 /// <param name="discoverer">Provider of WOPI discovery data.</param>
 /// <param name="urlSettings">Additional settings influencing behavior of the WOPI client.</param>
 public WopiUrlBuilder(IDiscoverer discoverer, WopiUrlSettings urlSettings = null)
 {
     _wopiDiscoverer = discoverer;
     UrlSettings     = urlSettings;
 }