public async Task <object> GetAsync( [FromServices] IRctObjectRepository rctObjectRepo, [FromServices] NeDesignsService neDesignsService, [FromRoute] string name) { var normalisedName = name.ToUpperInvariant(); var result = await rctObjectRepo.GetLegacyFromNameAsync(normalisedName); if (result != null) { var nedesignsUrl = neDesignsService.GetUrl(result.NeDesignId, result.Name); return(new { name = normalisedName, source = "nedesigns.com", download = nedesignsUrl }); } else { if (neDesignsService.HasEnoughTimePassedToQuery()) { // Spin off a search in the background but return 404 for now neDesignsService.SearchForNewObjectsAsync().Forget(); } return(new NotFoundResult()); } }
public NeDesignsService(IRctObjectRepository rctObjectRepo, HttpClient httpClient, ILogger <NeDesignsService> logger) { _rctObjectRepo = rctObjectRepo; _httpClient = httpClient; _logger = logger; }