48 lines
No EOL
2.2 KiB
C#
48 lines
No EOL
2.2 KiB
C#
using Iceshrimp.Backend.Core.Configuration;
|
|
using J = System.Text.Json.Serialization.JsonPropertyNameAttribute;
|
|
|
|
namespace Iceshrimp.Backend.Controllers.Mastodon.Schemas;
|
|
|
|
public class InstanceInfoV2Response(Config config)
|
|
{
|
|
[J("version")] public string Version => $"4.2.1 (compatible; Iceshrimp.NET/{config.Instance.Version})";
|
|
[J("source_url")] public string SourceUrl => "https://iceshrimp.dev/iceshrimp/iceshrimp.net";
|
|
[J("domain")] public string AccountDomain => config.Instance.AccountDomain;
|
|
[J("title")] public string InstanceName => config.Instance.AccountDomain;
|
|
[J("description")] public string Description => $"{config.Instance.AccountDomain} on Iceshrimp.NET";
|
|
|
|
[J("registrations")] public InstanceRegistrations Registrations => new(config.Security);
|
|
[J("configuration")] public InstanceConfigurationV2 Configuration => new(config.Instance);
|
|
|
|
[J("usage")] public required InstanceUsage Usage { get; set; }
|
|
|
|
//TODO: add the rest
|
|
}
|
|
|
|
public class InstanceConfigurationV2(Config.InstanceSection config)
|
|
{
|
|
[J("accounts")] public InstanceAccountsConfiguration Accounts => new();
|
|
[J("statuses")] public InstanceStatusesConfiguration Statuses => new(config.CharacterLimit);
|
|
[J("media_attachments")] public InstanceMediaConfiguration Media => new();
|
|
[J("polls")] public InstancePollConfiguration Polls => new();
|
|
[J("reactions")] public InstanceReactionConfiguration Reactions => new();
|
|
[J("urls")] public InstanceUrls Urls => new(config);
|
|
}
|
|
|
|
public class InstanceRegistrations(Config.SecuritySection config)
|
|
{
|
|
[J("enabled")] public bool Enabled => config.Registrations > Enums.Registrations.Closed;
|
|
[J("approval_required")] public bool ApprovalRequired => config.Registrations < Enums.Registrations.Open;
|
|
[J("message")] public string? Message => null;
|
|
[J("url")] public string? Url => null;
|
|
}
|
|
|
|
public class InstanceUsage
|
|
{
|
|
[J("users")] public required InstanceUsersUsage Users { get; set; }
|
|
}
|
|
|
|
public class InstanceUsersUsage
|
|
{
|
|
[J("active_month")] public required long ActiveMonth { get; set; }
|
|
} |