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/TrackUsersEndpoint.cs

40 lines
1.1 KiB
C#

using System.Net;
using System.Text.Json;
using System.Threading.Tasks;
using DHT.Server.Data;
using DHT.Server.Database;
using DHT.Utils.Http;
using Microsoft.AspNetCore.Http;
namespace DHT.Server.Endpoints;
sealed class TrackUsersEndpoint : BaseEndpoint {
public TrackUsersEndpoint(IDatabaseFile db) : base(db) {}
protected override async Task<IHttpOutput> Respond(HttpContext ctx) {
var root = await ReadJson(ctx);
if (root.ValueKind != JsonValueKind.Array) {
throw new HttpException(HttpStatusCode.BadRequest, "Expected root element to be an array.");
}
var users = new User[root.GetArrayLength()];
int i = 0;
foreach (JsonElement user in root.EnumerateArray()) {
users[i++] = ReadUser(user, "user");
}
Db.AddUsers(users);
return HttpOutput.None;
}
private static User ReadUser(JsonElement json, string path) => new() {
Id = json.RequireSnowflake("id", path),
Name = json.RequireString("name", path),
AvatarUrl = json.HasKey("avatar") ? json.RequireString("avatar", path) : null,
Discriminator = json.HasKey("discriminator") ? json.RequireString("discriminator", path) : null
};
}