42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using BritishHorseRacingApi.Models;
|
|||
|
|
using SwiftyMessageHub.Core;
|
||
|
|
using System;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.Text;
|
||
|
|
using System.Threading;
|
||
|
|
using System.Threading.Tasks;
|
||
|
|
|
||
|
|
namespace AutoBet.DataRecorded.PreRaceRunnerCollector
|
||
|
|
{
|
||
|
|
public class PreRaceRunnerCollectorController : MessageController
|
||
|
|
{
|
||
|
|
public static SemaphoreSlim semaphore = new SemaphoreSlim(1);
|
||
|
|
[MessageRoute]
|
||
|
|
public async Task CollectPreRaceData(PreRaceRunnerCollectDetails details)
|
||
|
|
{
|
||
|
|
var client = new BritishHorseRacingApi.ApiClient();
|
||
|
|
var date = details.DateToCollect;
|
||
|
|
Console.WriteLine($"Preparing to load runners for race id {details.RaceId}");
|
||
|
|
await semaphore.WaitAsync();
|
||
|
|
try
|
||
|
|
{
|
||
|
|
Console.WriteLine($"Loading runners for race id {details.RaceId}");
|
||
|
|
var runners = await client.GetRaceRunners(date.Year, details.RaceId);
|
||
|
|
foreach (var runner in runners.Data)
|
||
|
|
{
|
||
|
|
Console.WriteLine($"Loaded runner {runner.RacehorseName} id {details.RaceId}");
|
||
|
|
await CurrentContext.Hub.SendMessage(runner);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
catch(Exception ex)
|
||
|
|
{
|
||
|
|
throw;
|
||
|
|
}
|
||
|
|
finally
|
||
|
|
{
|
||
|
|
semaphore.Release();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|