blob: b1fa4f1fcec1f37f260fd1f1c55c267fe9a8cb44 (
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
34
|
using Microsoft.AspNetCore.Mvc;
using OsuFederatedBeatmapApi.Events.State;
using OsuFederatedBeatmapApi.Services;
namespace OsuFederatedBeatmapApi.Controllers;
[ApiController]
[Route("/")]
public class BeatmapRepositoryController(ILogger<BeatmapRepositoryController> logger, FederatedBeatmapApiBotAccountDataService ads, BeatmapFetcherService bfs) : 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 state = await repo.GetStateOrNullAsync<BeatmapSetInfo>("gay.rory.beatmap_api.beatmap_set_info", id.ToString());
if (state is not null) return state;
return await bfs.FetchBeatmapSetInfo(id);
}
return null;
}
}
|