예제 #1
0
        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());
            }
        }
예제 #2
0
 public NeDesignsService(IRctObjectRepository rctObjectRepo, HttpClient httpClient, ILogger <NeDesignsService> logger)
 {
     _rctObjectRepo = rctObjectRepo;
     _httpClient    = httpClient;
     _logger        = logger;
 }