Skip to content

Commit 8e9f4a0

Browse files
committed
Expose role-perms and other things over /instance
1 parent 57ffa18 commit 8e9f4a0

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

Refresh.Interfaces.APIv3/Endpoints/DataTypes/Response/ApiInstanceResponse.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,18 @@ public class ApiInstanceResponse : IApiResponse
4747

4848
public required bool MaintenanceModeEnabled { get; set; }
4949
public required string? GrafanaDashboardUrl { get; set; }
50+
public required string? ServerStatusUrl { get; set; }
5051

5152
public required string WebsiteLogoUrl { get; set; }
5253
public required string? WebsiteDefaultTheme { get; set; }
5354

5455
public required ApiContactInfoResponse ContactInfo { get; set; }
5556

5657
public required ApiContestResponse? ActiveContest { get; set; }
58+
59+
public required ApiRolePermissionsResponse NormalUserPermissions { get; set; }
60+
public required ApiRolePermissionsResponse TrustedUserPermissions { get; set; }
61+
62+
public required bool IsPresenceServerEnabled { get; set; }
63+
// TODO: similar attribute for CWLib integration
5764
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using Refresh.Core.Configuration;
2+
3+
namespace Refresh.Interfaces.APIv3.Endpoints.DataTypes.Response;
4+
5+
[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
6+
public class ApiRolePermissionsResponse : IApiResponse
7+
{
8+
public required ConfigAssetFlags BlockedAssetFlags { get; set; }
9+
public required bool ReadOnlyMode { get; set; }
10+
public required ApiTimedLevelLimitResponse? TimedLevelUploadLimits { get; set; }
11+
public required int UserFilesizeQuota { get; set; }
12+
13+
public static ApiRolePermissionsResponse FromOld(RolePermissions old)
14+
{
15+
return new()
16+
{
17+
BlockedAssetFlags = old.BlockedAssetFlags,
18+
ReadOnlyMode = old.ReadOnlyMode,
19+
TimedLevelUploadLimits = old.TimedLevelUploadLimits.Enabled ? new ApiTimedLevelLimitResponse()
20+
{
21+
TimeSpanHours = old.TimedLevelUploadLimits.TimeSpanHours,
22+
LevelQuota = old.TimedLevelUploadLimits.LevelQuota,
23+
} : null,
24+
UserFilesizeQuota = old.UserFilesizeQuota,
25+
};
26+
}
27+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Refresh.Interfaces.APIv3.Endpoints.DataTypes.Response;
2+
3+
[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
4+
public class ApiTimedLevelLimitResponse : IApiResponse
5+
{
6+
public required int TimeSpanHours { get; set; }
7+
public required int LevelQuota { get; set; }
8+
}

Refresh.Interfaces.APIv3/Endpoints/InstanceApiEndpoints.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ public ApiResponse<ApiInstanceResponse> GetInstanceInformation(RequestContext co
7272
GrafanaDashboardUrl = integrationConfig.GrafanaDashboardUrl,
7373
WebsiteLogoUrl = integrationConfig.WebsiteLogoUrl,
7474
WebsiteDefaultTheme = integrationConfig.WebsiteDefaultTheme,
75+
IsPresenceServerEnabled = integrationConfig.PresenceEnabled,
76+
ServerStatusUrl = integrationConfig.ServerStatusUrl,
77+
78+
NormalUserPermissions = ApiRolePermissionsResponse.FromOld(gameConfig.NormalUserPermissions),
79+
TrustedUserPermissions = ApiRolePermissionsResponse.FromOld(gameConfig.TrustedUserPermissions),
7580

7681
ContactInfo = new ApiContactInfoResponse
7782
{

0 commit comments

Comments
 (0)