Files
Print_server/Inspectron.Epson/PrintServer/JobStatusReporters/JamesStatusReporter.cs
2026-02-04 11:39:14 +01:00

43 lines
1.4 KiB
C#

using Inspectron.Epson.PrintServer.ConfigurationSources;
using Inspectron.Epson.Queue;
using Microsoft.Extensions.Logging;
using System.Net.Http.Json;
namespace Inspectron.Epson.PrintServer.JobStatusReporters;
public class JamesStatusReporter : IJobStatusReporter
{
private readonly HttpClient _httpClient;
private readonly EpsonPrintServiceConfiguration _configuration;
private readonly ILogger _logger;
public JamesStatusReporter(HttpClient httpClient, EpsonPrintServiceConfiguration configuration, ILogger logger)
{
_httpClient = httpClient;
_configuration = configuration;
_logger = logger;
}
public async Task ReportStatusAsync(PrintJob job, PrintJobStatus status)
{
try
{
var url = $"{_configuration.ApiUrl?.TrimEnd('/')}/api/printerServer/job-update";
using var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Headers.Add("X-Printer-Server-Key", _configuration.ApiKey);
request.Content = JsonContent.Create(new
{
jobId = job.JobId,
status = (int)status
});
var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to report status {Status} for job {JobId}", status, job.JobId);
}
}
}