forked from Manuel/meeting-assistant
44 lines
2.2 KiB
C#
44 lines
2.2 KiB
C#
using MeetingAssistant.Notifications;
|
|
|
|
namespace MeetingAssistant.MacOs;
|
|
|
|
public static class DesktopCommunicationEndpoints
|
|
{
|
|
public static void MapDesktopCommunication(this WebApplication app)
|
|
{
|
|
app.MapGet("/desktop/requests", (DesktopUserRequestStore requests) => Results.Ok(requests.List()));
|
|
app.MapPost("/desktop/requests/{id}/respond", async (
|
|
string id, DesktopUserRequestResponse response, DesktopUserRequestStore requests) =>
|
|
{
|
|
if (string.IsNullOrEmpty(response.Action)) return Results.BadRequest();
|
|
return await requests.RespondAsync(id, response.Action) switch
|
|
{
|
|
DesktopUserRequestRespondResult.Accepted => Results.Ok(new { status = "accepted" }),
|
|
DesktopUserRequestRespondResult.InvalidAction => Results.BadRequest(new { status = "invalid-action" }),
|
|
DesktopUserRequestRespondResult.NoLongerPending => Results.StatusCode(StatusCodes.Status410Gone),
|
|
_ => Results.Problem("The user action could not be completed.")
|
|
};
|
|
});
|
|
app.MapGet("/desktop/agent-windows", (MacOsWorkflowRulesEditorSessions sessions) =>
|
|
Results.Ok(sessions.GetAgentWindows()));
|
|
app.MapGet("/diagnostics/settings-and-logs", () =>
|
|
Results.Content(MacOsWorkflowRulesEditorPage.Html, "text/html"));
|
|
app.MapGet("/diagnostics/settings-and-logs/chat", IResult (
|
|
string? session, MacOsWorkflowRulesEditorSessions sessions) =>
|
|
{
|
|
return sessions.TryGetSession(session, out var chat)
|
|
? Results.Ok(chat.GetSnapshot())
|
|
: Results.NotFound();
|
|
});
|
|
app.MapPost("/diagnostics/settings-and-logs/chat", async Task<IResult> (
|
|
string? session, MacOsWorkflowRulesEditorChatRequest request,
|
|
MacOsWorkflowRulesEditorSessions sessions, CancellationToken cancellationToken) =>
|
|
{
|
|
if (!sessions.TryGetSession(session, out var chat)) return Results.NotFound();
|
|
return Results.Ok(await chat.SendAsync(request.Message, cancellationToken));
|
|
});
|
|
}
|
|
}
|
|
|
|
public sealed record DesktopUserRequestResponse(string? Action);
|