using Oqtane.Models; using System.Threading.Tasks; using System.Net.Http; using System.Linq; using System.Collections.Generic; using Oqtane.Documentation; using Oqtane.Shared; using System.Net; namespace Oqtane.Services { [PrivateApi("Don't show in the documentation, as everything should use the Interface")] public class UrlMappingService : ServiceBase, IUrlMappingService { public UrlMappingService(HttpClient http, SiteState siteState) : base(http, siteState) { } private string Apiurl => CreateApiUrl("UrlMapping"); public async Task> GetUrlMappingsAsync(int siteId, bool isMapped) { List urlMappings = await GetJsonAsync>($"{Apiurl}?siteid={siteId}&ismapped={isMapped}"); return urlMappings.OrderByDescending(item => item.RequestedOn).ToList(); } public async Task GetUrlMappingAsync(int urlMappingId) { return await GetJsonAsync($"{Apiurl}/{urlMappingId}"); } public async Task GetUrlMappingAsync(int siteId, string url) { return await GetJsonAsync($"{Apiurl}/url/{siteId}?url={WebUtility.UrlEncode(url)}"); } public async Task AddUrlMappingAsync(UrlMapping role) { return await PostJsonAsync(Apiurl, role); } public async Task UpdateUrlMappingAsync(UrlMapping role) { return await PutJsonAsync($"{Apiurl}/{role.UrlMappingId}", role); } public async Task DeleteUrlMappingAsync(int urlMappingId) { await DeleteAsync($"{Apiurl}/{urlMappingId}"); } } }