24 lines
1.1 KiB
C#
24 lines
1.1 KiB
C#
using Portfolio.Shared.Models;
|
|
using Portfolio.Shared.Services;
|
|
|
|
namespace Portfolio.Web.Services;
|
|
|
|
internal sealed class TimelineRepository(IHttpClientFactory factory) : ITimelineRepository {
|
|
public async Task<IEnumerable<TimelineEntry>> GetTimeline(TimelineEntryType type, CancellationToken ct) {
|
|
var client = factory.CreateClient("api");
|
|
var result = await client.GetAsync($"api/timeline/{type}", ct);
|
|
if (!result.IsSuccessStatusCode) return [];
|
|
|
|
var data = await result.Content.ReadFromJsonAsync<IEnumerable<TimelineEntry>>(ct);
|
|
return data?.OrderBy(t => t.Date) ?? Enumerable.Empty<TimelineEntry>();
|
|
}
|
|
|
|
public async Task<IEnumerable<TimelineEntry>> GetFeaturedTimeline(CancellationToken ct) {
|
|
var client = factory.CreateClient("api");
|
|
var result = await client.GetAsync("api/timeline/featured", ct);
|
|
if (!result.IsSuccessStatusCode) return [];
|
|
|
|
var data = await result.Content.ReadFromJsonAsync<IEnumerable<TimelineEntry>>(ct);
|
|
return data?.OrderBy(t => t.Date) ?? Enumerable.Empty<TimelineEntry>();
|
|
}
|
|
} |