using System; using System.Net.Http; using System.Threading.Tasks; using Flurl; using Sony.Filtr.Contracts.Abstractions; namespace Sony.Filtr.Core.FastlyCache { public class FastlyCacheManager : ICDNCacheManager { const string BaseUrl = "https://api.fastly.com/"; const string ServiceId = "5wa5bzYpvweBXgOWGQMZ5n"; const string ApiKey = "5b46b3a4ef1e0407ef47e92be7b99916"; public FastlyCacheManager() { } public async Task PurgeUrlAsync(string url, bool softPurge = false) { var httpClient = new HttpClient(); //httpClient.BaseAddress = new Uri("https://api.fastly.com/"); var requestMessage = new HttpRequestMessage(new HttpMethod("PURGE"), url); requestMessage.Headers.Add("Fastly-Key", ApiKey); if (softPurge) { requestMessage.Headers.Add("Fastly-Soft-Purge", "1"); } var response = await httpClient.SendAsync(requestMessage); response.EnsureSuccessStatusCode(); } public async Task PurgeKeyAsync(string key, bool softPurge = false) { var httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(BaseUrl); var url = new Url(BaseUrl); url.AppendPathSegments("service", ServiceId, "purge", key); var requestMessage = new HttpRequestMessage(HttpMethod.Post, url); requestMessage.Headers.Add("Fastly-Key", ApiKey); if (softPurge) { requestMessage.Headers.Add("Fastly-Soft-Purge", "1"); } var response = await httpClient.SendAsync(requestMessage); response.EnsureSuccessStatusCode(); } public Task PurgeTopListEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("toplist"); } public Task PurgePlaylistEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("playlist"); } public Task PurgePlaylistCategoryEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("playlistCategory"); } public Task PurgePromotedTracksEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("playlist"); } public Task PurgeReleaseEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("release"); } public Task PurgeSearchEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("search"); } public Task PurgeRegionsEndpointsAsync() { return Task.CompletedTask; //await PurgeKeyAsync("regions"); } } }