#region Copyright // /************************************************************************ // Copyright (c) 2016 Jamie Rees // File: BaseUrlHelper.cs // Created By: Jamie Rees // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // ************************************************************************/ #endregion using System.IO; using System.Text; using Nancy; using Nancy.ViewEngines.Razor; using PlexRequests.Core; using PlexRequests.Core.SettingModels; using PlexRequests.Helpers; namespace PlexRequests.UI.Helpers { public static class BaseUrlHelper { static BaseUrlHelper() { Locator = ServiceLocator.Instance; Cache = Locator.Resolve(); } private static ICacheProvider Cache { get; } private static ServiceLocator Locator { get; } public static IHtmlString LoadAssets(this HtmlHelpers helper) { var sb = new StringBuilder(); var assetLocation = GetBaseUrl(); var content = GetContentUrl(assetLocation); var settings = GetSettings(); if (string.IsNullOrEmpty(settings.ThemeName)) { settings.ThemeName = Themes.PlexTheme; } sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); sb.AppendLine($""); return helper.Raw(sb.ToString()); } public static IHtmlString LoadSearchAssets(this HtmlHelpers helper) { var sb = new StringBuilder(); var assetLocation = GetBaseUrl(); var content = GetContentUrl(assetLocation); sb.AppendLine($""); return helper.Raw(sb.ToString()); } public static IHtmlString LoadRequestAssets(this HtmlHelpers helper) { var sb = new StringBuilder(); var assetLocation = GetBaseUrl(); var content = GetContentUrl(assetLocation); sb.AppendLine($""); return helper.Raw(sb.ToString()); } public static IHtmlString LoadTableAssets(this HtmlHelpers helper) { var sb = new StringBuilder(); var assetLocation = GetBaseUrl(); var content = GetContentUrl(assetLocation); sb.AppendLine($""); sb.AppendLine($""); return helper.Raw(sb.ToString()); } public static IHtmlString GetSidebarUrl(this HtmlHelpers helper, NancyContext context, string url, string title) { var returnString = string.Empty; var content = GetLinkUrl(GetBaseUrl()); if (!string.IsNullOrEmpty(content)) { url = $"/{content}{url}"; } if (context.Request.Path == url) { returnString = $"{title}"; } else { returnString = $"{title}"; } return helper.Raw(returnString); } public static IHtmlString GetNavbarUrl(this HtmlHelpers helper, NancyContext context, string url, string title, string fontIcon) { var returnString = string.Empty; var content = GetLinkUrl(GetBaseUrl()); if (!string.IsNullOrEmpty(content)) { url = $"/{content}{url}"; } if (context.Request.Path == url) { returnString = $"
  • {title}
  • "; } else { returnString = $"
  • {title}
  • "; } return helper.Raw(returnString); } public static IHtmlString GetBaseUrl(this HtmlHelpers helper) { return helper.Raw(GetBaseUrl()); } private static string GetBaseUrl() { return GetSettings().BaseUrl; } private static PlexRequestSettings GetSettings() { var returnValue = Cache.GetOrSet(CacheKeys.GetPlexRequestSettings, () => { var settings = Locator.Resolve>().GetSettings(); return settings; }); return returnValue; } private static string GetLinkUrl(string assetLocation) { return string.IsNullOrEmpty(assetLocation) ? string.Empty : $"{assetLocation}"; } private static string GetContentUrl(string assetLocation) { return string.IsNullOrEmpty(assetLocation) ? string.Empty : $"/{assetLocation}"; } } }