Add image generation

This commit is contained in:
2025-07-15 02:42:16 +02:00
parent 9cfbdc21d0
commit 480a38baac
17 changed files with 635 additions and 12 deletions

View File

@@ -0,0 +1,30 @@
using HomeApi.Models.Response;
using Refit;
namespace HomeApi.Integration.Client;
public interface IResRobotClient
{
[Get("/v2.1/departureBoard")]
Task<TrafikLabsApiResponse> GetDepartureBoardAsync(
[AliasAs("accessId")] string accessId,
[AliasAs("id")] string stopId,
[AliasAs("direction")] string direction = null,
[AliasAs("date")] string date = null, // Format: YYYY-MM-DD
[AliasAs("time")] string time = null, // Format: HH:MM
[AliasAs("duration")] int? duration = null,
[AliasAs("maxJourneys")] int? maxJourneys = null,
[AliasAs("operators")] string operators = null, // Example: "275,287"
[AliasAs("products")] int? products = null,
[AliasAs("passlist")] int? passlist = 0,
[AliasAs("lang")] string language = "sv",
[AliasAs("format")] string format = "json"
);
[Get("/v2.1/location.name")]
Task<LocationNameResponse> GetLocationsByNameAsync(
[AliasAs("input")] string input,
[AliasAs("format")] string format = "json",
[AliasAs("accessId")] string accessId = "YOUR_API_KEY"
);
}

View File

@@ -0,0 +1,46 @@
using HomeApi.Extensions;
using HomeApi.Integration.Client;
using HomeApi.Models;
using HomeApi.Models.Configuration;
using Microsoft.Extensions.Options;
namespace HomeApi.Integration;
public interface IDepartureBoardService
{
Task<List<TimeTable>?> GetDepartureBoard();
}
public class DepartureBoardService(IResRobotClient departureBoardApi, IOptions<ApiConfiguration> options) : IDepartureBoardService
{
private readonly ApiConfiguration _apiConfig = options.Value;
public async Task<List<TimeTable>?> GetDepartureBoard()
{
var locationResponse = await departureBoardApi.GetLocationsByNameAsync(
input: _apiConfig.DefaultStation,
format: "json",
accessId: _apiConfig.Keys.ResRobot
);
var id = locationResponse.StopLocationOrCoordLocation.FirstOrDefault()?.StopLocation?.ExtId;
if (id == null)
return null;
var result = await departureBoardApi.GetDepartureBoardAsync(
accessId: _apiConfig.Keys.ResRobot,
stopId: id,
direction: null,
date: DateTime.Now.ToString("yyyy-MM-dd"),
time: DateTime.Now.ToString("HH:mm"),
duration: 60,
maxJourneys: 10,
passlist: 1,
language: "sv",
format: "json"
);
return result.ToContract();
}
}