LANCommander/LANCommander.SDK/Clients/MetadataClient.cs
Pat Hartl 819cb28d17 Packager app improvements, metadata endpoints
- Add ability to connect to server
- Add uploading of finished package to server
- Add metadata lookup when connected to server
- Fix layout when specifying action
- Hide finish button at generate step
2026-06-03 19:43:45 -05:00

57 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using LANCommander.SDK.Factories;
using LANCommander.SDK.Models;
using Game = LANCommander.SDK.Models.Manifest.Game;
namespace LANCommander.SDK.Services;
public class MetadataClient(ApiRequestFactory apiRequestFactory)
{
public async Task<IEnumerable<string>> GetProvidersAsync()
{
return await apiRequestFactory
.Create()
.UseAuthenticationToken()
.UseVersioning()
.UseRoute("/api/Metadata/Providers")
.GetAsync<IEnumerable<string>>();
}
public async Task<IEnumerable<MetadataSubProvider>> GetSubProvidersAsync(string provider)
{
return await apiRequestFactory
.Create()
.UseAuthenticationToken()
.UseVersioning()
.UseRoute($"/api/Metadata/{provider}/SubProviders")
.GetAsync<IEnumerable<MetadataSubProvider>>();
}
public async Task<MetadataSearchResultsCollection> SearchAsync(
string provider, string query, string? subProvider = null, int limit = 10, int offset = 0)
{
var route = $"/api/Metadata/{provider}/Search?query={Uri.EscapeDataString(query)}&limit={limit}&offset={offset}";
if (!string.IsNullOrWhiteSpace(subProvider))
route += $"&subProvider={Uri.EscapeDataString(subProvider)}";
return await apiRequestFactory
.Create()
.UseAuthenticationToken()
.UseVersioning()
.UseRoute(route)
.GetAsync<MetadataSearchResultsCollection>();
}
public async Task<Game> GetGameAsync(string provider, string gameId)
{
return await apiRequestFactory
.Create()
.UseAuthenticationToken()
.UseVersioning()
.UseRoute($"/api/Metadata/{provider}/{Uri.EscapeDataString(gameId)}")
.GetAsync<Game>();
}
}