using JSMR.Application.Integrations.DLSite.Models; using JSMR.Application.Integrations.Ports; using JSMR.Infrastructure.Http; using JSMR.Infrastructure.Integrations.DLSite.Mapping; using JSMR.Infrastructure.Integrations.DLSite.Models; using Microsoft.Extensions.Logging; namespace JSMR.Infrastructure.Integrations.DLSite; public class DLSiteClient(HttpClient http, ILogger logger) : ApiClient(http, logger), IDLSiteClient { public async Task GetVoiceWorkDetailsAsync(string[] productIds, CancellationToken cancellationToken = default) { string[] validProductIds = [.. productIds.Where(x => !string.IsNullOrWhiteSpace(x)).Distinct()]; if (validProductIds.Length == 0) return []; string productIdCollection = string.Join(",", validProductIds); string url = $"maniax/product/info/ajax?product_id={productIdCollection}&cdn_cache_min=1"; ProductInfoCollection productInfoCollection = await GetJsonAsync(url, cancellationToken: cancellationToken); return DLSiteToDomainMapper.Map(productInfoCollection); } }