mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-26 07:29:00 -07:00
Radicade Public Code
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RadicadeServer.DB;
|
||||
using RadicadeServer.Extensions;
|
||||
using RadicadeServer.RecNet.Board;
|
||||
|
||||
namespace RadicadeServer.API.Board.V2
|
||||
{
|
||||
[Route("api/communityboard/v2")]
|
||||
public class CommunityBoardV2 : Controller
|
||||
{
|
||||
private readonly RecDBContext db;
|
||||
|
||||
public CommunityBoardV2(RecDBContext context)
|
||||
{
|
||||
db = context;
|
||||
}
|
||||
|
||||
[HttpGet("current")]
|
||||
public async Task<ActionResult<CommunityBoard>> GetCurrentCommunityBoard()
|
||||
{
|
||||
var config = await db.ServerConfig.FirstOrDefaultAsync(x => x.Key == "CommunityBoard");
|
||||
var board = config?.Value?.FromJson<CommunityBoard>() ?? CreateDefaultBoard();
|
||||
NormalizeBoard(board);
|
||||
return Ok(board);
|
||||
}
|
||||
|
||||
private static CommunityBoard CreateDefaultBoard()
|
||||
{
|
||||
return new CommunityBoard
|
||||
{
|
||||
FeaturedPlayer = new FeaturedPlayer
|
||||
{
|
||||
Id = 0,
|
||||
TitleOverride = string.Empty,
|
||||
UrlOverride = string.Empty
|
||||
},
|
||||
FeaturedRoomGroup = new FeaturedRoomGroup
|
||||
{
|
||||
FeaturedRoomGroupId = 0,
|
||||
Name = string.Empty,
|
||||
Rooms = new List<FeaturedRoom>()
|
||||
},
|
||||
CurrentAnnouncement = new BoardAnnouncement
|
||||
{
|
||||
Message = string.Empty,
|
||||
MoreInfoUrl = string.Empty
|
||||
},
|
||||
InstagramImages = new List<InstagramImage>(),
|
||||
Videos = new List<BoardVideo>()
|
||||
};
|
||||
}
|
||||
|
||||
private static void NormalizeBoard(CommunityBoard board)
|
||||
{
|
||||
board.FeaturedPlayer ??= new FeaturedPlayer
|
||||
{
|
||||
Id = 0,
|
||||
TitleOverride = string.Empty,
|
||||
UrlOverride = string.Empty
|
||||
};
|
||||
board.FeaturedRoomGroup ??= new FeaturedRoomGroup
|
||||
{
|
||||
FeaturedRoomGroupId = 0,
|
||||
Name = string.Empty,
|
||||
Rooms = new List<FeaturedRoom>()
|
||||
};
|
||||
board.FeaturedRoomGroup.Rooms ??= new List<FeaturedRoom>();
|
||||
board.CurrentAnnouncement ??= new BoardAnnouncement
|
||||
{
|
||||
Message = string.Empty,
|
||||
MoreInfoUrl = string.Empty
|
||||
};
|
||||
board.InstagramImages ??= new List<InstagramImage>();
|
||||
board.Videos ??= new List<BoardVideo>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var video in board.Videos)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(video.SourceUrl) && !string.IsNullOrWhiteSpace(video.BlobName))
|
||||
video.SourceUrl = $"{DBConfig.ServerUrl}/cdn/video/{video.BlobName.TrimStart('/')}";
|
||||
}
|
||||
|
||||
var playable = board.Videos
|
||||
.Where(video => !string.IsNullOrWhiteSpace(video.SourceUrl) || !string.IsNullOrWhiteSpace(video.BlobName))
|
||||
.ToList();
|
||||
board.Videos = playable;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user