1
0
mirror of https://github.com/chylex/Discord-History-Tracker.git synced 2025-08-18 22:24:53 +02:00
Files
.github
.idea
app
.idea
Desktop
Resources
Server
Data
Database
Download
Endpoints
Responses
BaseEndpoint.cs
GetAttachmentEndpoint.cs
GetMessagesEndpoint.cs
GetTrackingScriptEndpoint.cs
TrackChannelEndpoint.cs
TrackMessagesEndpoint.cs
TrackUsersEndpoint.cs
Service
Server.csproj
Utils
.gitignore
Directory.Build.props
DiscordHistoryTracker.sln
Version.cs
build.bat
build.sh
empty.dht
global.json
tools
web
.gitattributes
.gitignore
LICENSE.md
README.md
Discord-History-Tracker/app/Server/Endpoints/GetMessagesEndpoint.cs
2023-12-23 19:59:09 +01:00

35 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using DHT.Server.Data.Filters;
using DHT.Server.Database;
using DHT.Utils.Http;
using Microsoft.AspNetCore.Http;
using GetMessagesJsonContext = DHT.Server.Endpoints.Responses.GetMessagesJsonContext;
namespace DHT.Server.Endpoints;
sealed class GetMessagesEndpoint : BaseEndpoint {
public GetMessagesEndpoint(IDatabaseFile db) : base(db) {}
protected override Task<IHttpOutput> Respond(HttpContext ctx) {
HashSet<ulong> messageIdSet;
try {
var messageIds = ctx.Request.Query["id"];
messageIdSet = messageIds.Select(ulong.Parse!).ToHashSet();
} catch (Exception) {
throw new HttpException(HttpStatusCode.BadRequest, "Invalid message ids.");
}
var messageFilter = new MessageFilter {
MessageIds = messageIdSet
};
var messages = Db.GetMessages(messageFilter).ToDictionary(static message => message.Id, static message => message.Text);
var response = new HttpOutput.Json<Dictionary<ulong, string>>(messages, GetMessagesJsonContext.Default.DictionaryUInt64String);
return Task.FromResult<IHttpOutput>(response);
}
}