26 lines
1.1 KiB
C#
26 lines
1.1 KiB
C#
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<DLSiteClient> logger) : ApiClient(http, logger), IDLSiteClient
|
|
{
|
|
public async Task<VoiceWorkDetailCollection> 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<ProductInfoCollection>(url, cancellationToken: cancellationToken);
|
|
|
|
return DLSiteToDomainMapper.Map(productInfoCollection);
|
|
}
|
|
} |