public async Task <IApiResponse> Get([FromQuery] string url) { if (url is null) { return(new ErrorResponse { Error = "No url found in query." }); } // adds http to url if not present url = new UriBuilder(url).Uri.ToString(); IApiResponse result; async Task <IApiResponse> websiteInfoGetter() => await UrlSolverService.GetWebsiteInfo(url); // heroku likely won't keep the app awake above 30 minutes result = await Cache.GetOrAdd($"websiteInfo-{url}", websiteInfoGetter, TimeSpan.FromMinutes(30)); if (result is null) { return(new ErrorResponse { Error = "Couldn't get website info. Try again later." }); } return(result); }
public async Task UrlSolverServiceTest() { var websiteUrl = @"https://tiny.pl/h2xvk"; var websiteInfo = (UrlSolverResponse)await UrlSolverService.GetWebsiteInfo(websiteUrl); Assert.Equal("https://www.youtube.com/watch?v=dQw4w9WgXcQ", websiteInfo.Url); Assert.Equal("Rick Astley - Never Gonna Give You Up (Video) - YouTube", websiteInfo.Title); }