about summary refs log tree commit diff
path: root/OsuFederatedBeatmapApi/Controllers/BeatmapRepositoryController.cs
blob: 6a1149d77469e888ca11bcb8dbd43bbb4369fa0c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using Microsoft.AspNetCore.Mvc;
using OsuFederatedBeatmapApi.Events.State;
using OsuFederatedBeatmapApi.Services;

namespace OsuFederatedBeatmapApi.Controllers;

[ApiController]
[Route("/")]
public class BeatmapRepositoryController(ILogger<BeatmapRepositoryController> logger, FederatedBeatmapApiBotAccountDataService ads) : ControllerBase {
    [HttpGet("/beatmapset/all/info")]
    public async IAsyncEnumerable<BeatmapSetInfo> GetAllInfo() {
        await ads.LoadAccountDataAsync();

        foreach (var repo in ads.ListedRepositories) {
            var states = repo.GetFullStateAsync();
            await foreach (var state in states) {
                if (state?.TypedContent is BeatmapSetInfo info) yield return info;
            }
        }
    }

    [HttpGet("/beatmapset/{id:int}/info")]
    public async Task<BeatmapSetInfo?> Get(int id) {
        await ads.LoadAccountDataAsync();

        foreach (var repo in ads.ListedRepositories) {
            var states = await repo.GetStateAsync<BeatmapSetInfo>("gay.rory.beatmap_api.beatmap_set_info", id.ToString());
            return states as BeatmapSetInfo;
        }

        return null;
    }
}