Files
2026-10-16 23:33:13 -07:00

55 lines
1.6 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using RadicadeServer.API.Avatars.V2;
using RadicadeServer.DB;
using RadicadeServer.Extensions;
namespace RadicadeServer.API.Avatars;
[Route("outfits")]
[Authorize]
public class OutfitsAPI(RecDBContext db) : Controller
{
[HttpGet("me")]
public async Task<IActionResult> GetCurrentOutfit()
{
if (User.GetUserId() == null) return Unauthorized();
var avatarApi = new AvatarV2(db) { ControllerContext = ControllerContext };
var avatar = await avatarApi.GetLocalAvatar();
if (avatar == null) return NotFound();
return Ok(new CurrentOutfitResponse
{
LegacyData = new LegacyOutfitData
{
SelectionsV1 = avatar.OutfitSelections,
HairColor = avatar.HairColor,
SkinColor = avatar.SkinColor,
FaceFeatures = avatar.FaceFeatures
}
});
}
}
public sealed class CurrentOutfitResponse
{
public long DataVersion { get; init; }
public LegacyOutfitData LegacyData { get; init; } = new();
public string? CustomizationSettings { get; init; }
public object[] Selections { get; init; } = [];
public int Slot { get; init; }
public string? Name { get; init; }
public int Accessibility { get; init; }
public string? ThumbnailFileName { get; init; }
}
public sealed class LegacyOutfitData
{
public string? SelectionsV1 { get; init; }
public string? SelectionsV2 { get; init; }
public string? FaceFeatures { get; init; }
public string? SkinColor { get; init; }
public string? HairColor { get; init; }
}