Implement story mode player counts endpoint (#400)

This commit is contained in:
Josh 2022-08-04 14:07:52 -05:00 committed by GitHub
parent 2ab1e72037
commit 6c989e7923
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 6 deletions

View file

@ -90,6 +90,31 @@ public class SlotsController : ControllerBase
return this.Ok(LbpSerializer.TaggedStringElement("slots", serialized, "total", serializedSlots.Count));
}
[HttpGet("slots/developer")]
public async Task<IActionResult> StoryPlayers()
{
User? user = await this.database.UserFromGameRequest(this.Request);
if (user == null) return this.StatusCode(403, "");
GameToken? token = await this.database.GameTokenFromRequest(this.Request);
if (token == null) return this.StatusCode(403, "");
List<int> activeSlotIds = RoomHelper.Rooms.Where(r => r.Slot.SlotType == SlotType.Developer).Select(r => r.Slot.SlotId).ToList();
List<string> serializedSlots = new();
foreach (int id in activeSlotIds)
{
int placeholderSlotId = await SlotHelper.GetPlaceholderSlotId(this.database, id, SlotType.Developer);
Slot slot = await this.database.Slots.FirstAsync(s => s.SlotId == placeholderSlotId);
serializedSlots.Add(slot.SerializeDevSlot(false));
}
string serialized = serializedSlots.Aggregate(string.Empty, (current, slot) => current + slot);
return this.Ok(LbpSerializer.StringElement("slots", serialized));
}
[HttpGet("s/developer/{id:int}")]
public async Task<IActionResult> SDev(int id)
{