Example #1
0
        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);
        }
Example #2
0
        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);
        }