zotan.pw-web/Controllers/Travelynx/Travelynx.cs

32 lines
942 B
C#
Raw Normal View History

2022-11-20 03:06:41 +01:00
using LinqToDB;
using Microsoft.AspNetCore.Mvc;
2022-11-26 13:23:58 +01:00
using zotanpw.Backend.database;
using zotanpw.Backend.database.Tables;
2022-11-20 03:06:41 +01:00
2022-11-26 13:23:58 +01:00
namespace zotanpw.Controllers.Travelynx;
2022-11-20 03:06:41 +01:00
2022-11-20 17:00:51 +01:00
[ApiController, Route("/travelynx")]
2022-11-20 03:06:41 +01:00
public class Travelynx : Controller {
private static readonly string TravelynxSecret = System.IO.File.ReadAllLines(".bearer_token")[0];
[HttpPost]
2022-11-26 13:23:58 +01:00
public TravelynxInfo Update([FromBody] TravelynxWebhookRequest rq) {
2022-11-20 03:06:41 +01:00
var token = Request.Headers.Authorization;
if (token == TravelynxSecret) {
var db = new Database.DbConn();
2022-11-20 17:00:51 +01:00
if (!db.TravelynxInfo.Any())
2022-11-20 03:06:41 +01:00
db.InsertWithIdentity(new TravelynxInfo { CheckedIn = false });
var status = db.TravelynxInfo.First();
2022-11-20 22:26:21 +01:00
status.CheckedIn = rq.Status!.CheckedIn;
2022-11-20 03:06:41 +01:00
status.Train = $"{rq.Status.Train?.Type} {rq.Status.Train?.No}";
status.Destination = rq.Status.ToStation?.Name;
db.Update(status);
return status;
}
Response.StatusCode = 403;
return null!;
}
}