using Microsoft.AspNetCore.Mvc; using DorkNet.Server.Services; namespace DorkNet.Server.Controllers.Discovery; /// /// discovery.{rec.net,localhost} — the watch's room-discovery surface /// (rooms tab "For You" feed). Backed by the same RoomService used /// elsewhere so what's hot here matches the main browser. /// [ApiController] public class DiscoveryController(RoomService rooms) : ControllerBase { [HttpGet("/discover/v2/rooms")] public async Task GetRooms([FromQuery] string? tag, [FromQuery] int take = 50) => Ok((await rooms.HotAsync(tag, Math.Clamp(take, 1, 100))) .Select(RoomService.ToWireRoom).ToList()); [HttpGet("/discover/v2/feed")] public async Task GetFeed([FromQuery] int take = 50) => Ok((await rooms.HotAsync(null, Math.Clamp(take, 1, 100))) .Select(RoomService.ToWireRoom).ToList()); [HttpGet("/discover/v2/featured")] public async Task GetFeatured([FromQuery] int take = 50) // Featured = tagged "featured" — same set as the watch's // primary "Featured" filter chip. => Ok((await rooms.HotAsync("featured", Math.Clamp(take, 1, 100))) .Select(RoomService.ToWireRoom).ToList()); }