print server with new concept
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
using Inspectron.Epson;
|
||||
|
||||
namespace EpsonPrintService;
|
||||
|
||||
/// <summary>
|
||||
/// Simple console implementation that logs discovered printers to the console
|
||||
/// </summary>
|
||||
public class ConsoleDiscoveredPrintersReceiver : IDiscoveredPrintersReceiver
|
||||
{
|
||||
public Task OnPrintersDiscoveredAsync(IReadOnlyList<DiscoveredPrinter> printers)
|
||||
{
|
||||
Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] Discovered printers changed. Found {printers.Count} printer(s):");
|
||||
|
||||
foreach (var printer in printers)
|
||||
{
|
||||
Console.WriteLine($" - {printer.IPAddress}");
|
||||
}
|
||||
|
||||
if (printers.Count == 0)
|
||||
{
|
||||
Console.WriteLine(" (no printers found)");
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using Inspectron.Epson;
|
||||
|
||||
namespace EpsonPrintService;
|
||||
|
||||
/// <summary>
|
||||
/// Interface for receiving discovered printer updates
|
||||
/// </summary>
|
||||
public interface IDiscoveredPrintersReceiver
|
||||
{
|
||||
/// <summary>
|
||||
/// Called when the list of discovered printers has changed
|
||||
/// </summary>
|
||||
/// <param name="printers">The current list of discovered printers</param>
|
||||
Task OnPrintersDiscoveredAsync(IReadOnlyList<DiscoveredPrinter> printers);
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using Inspectron.Epson;
|
||||
using Inspectron.Epson.PrintServer.ConfigurationSources;
|
||||
using System.Net.Http.Json;
|
||||
|
||||
namespace EpsonPrintService;
|
||||
|
||||
public class JamesDiscoveredPrintersReceiver: IDiscoveredPrintersReceiver
|
||||
{
|
||||
private readonly EpsonPrintServiceConfiguration _configuration;
|
||||
private readonly HttpClient _httpClient;
|
||||
|
||||
public JamesDiscoveredPrintersReceiver(EpsonPrintServiceConfiguration configuration, HttpClient httpClient)
|
||||
{
|
||||
_configuration = configuration;
|
||||
_httpClient = httpClient;
|
||||
}
|
||||
|
||||
public async Task OnPrintersDiscoveredAsync(IReadOnlyList<DiscoveredPrinter> printers)
|
||||
{
|
||||
var apiKey = _configuration.ApiKey;
|
||||
|
||||
var request = new DiscoveredPrintersRequest
|
||||
{
|
||||
Printers = printers.Select(p => new DiscoveredPrinterDto
|
||||
{
|
||||
PrinterId = p.IPAddress,
|
||||
Name = p.IPAddress,
|
||||
Address = p.IPAddress,
|
||||
Model = p.ModelName,
|
||||
IsMain = false
|
||||
}).ToList()
|
||||
};
|
||||
|
||||
using var requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://api.dev.gastrojames.ch/api/printerServer/discovered-printers");
|
||||
requestMessage.Headers.Add("X-Printer-Server-Key", apiKey);
|
||||
requestMessage.Content = JsonContent.Create(request);
|
||||
|
||||
var response = await _httpClient.SendAsync(requestMessage);
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
|
||||
private class DiscoveredPrintersRequest
|
||||
{
|
||||
public List<DiscoveredPrinterDto> Printers { get; set; } = new();
|
||||
}
|
||||
|
||||
private class DiscoveredPrinterDto
|
||||
{
|
||||
public string PrinterId { get; set; } = "";
|
||||
public string Name { get; set; } = "";
|
||||
public string Address { get; set; } = "";
|
||||
public string Model { get; set; } = "";
|
||||
public bool IsMain { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user