Thomas Fransolet 8ec099f688 OddsService WIP
2020-01-13 20:22:06 +01:00

118 lines
3.7 KiB
C#

using MyCore.DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
namespace MyCore.Services
{
public class OddService
{
private HttpClient _client = new HttpClient();
private string _servicePoint = "https://api.the-odds-api.com/v3/odds/?";
private string _apiKey = "285d0ebdb4b29415f6fef8b83729f655";
private string _url;
private string _region;
public List<League> allLeagues = new List<League>();
public class League
{
public string ApiIdentifiant { get; set; }
public League(string league) {
switch (league)
{
case "BE":
ApiIdentifiant = "soccer_belgium_first_div";
break;
case "UK":
ApiIdentifiant = "soccer_epl";
break;
case "DK":
ApiIdentifiant = "soccer_denmark_superliga";
break;
case "FR":
ApiIdentifiant = "soccer_france_ligue_one";
break;
case "DE":
ApiIdentifiant = "soccer_germany_bundesliga";
break;
case "IT":
ApiIdentifiant = "soccer_italy_serie_a";
break;
case "NE":
ApiIdentifiant = "soccer_netherlands_eredivisie";
break;
case "PT":
ApiIdentifiant = "soccer_portugal_primeira_liga";
break;
case "RU":
ApiIdentifiant = "soccer_russia_premier_league";
break;
case "ES":
ApiIdentifiant = "soccer_spain_la_liga";
break;
case "CH":
ApiIdentifiant = "soccer_switzerland_superleague";
break;
case "TR":
ApiIdentifiant = "soccer_turkey_super_league";
break;
default:
ApiIdentifiant = "soccer_epl";
break;
}
}
}
public class RegionOdd
{
public static string UK { get; set; } = "uk";
public static string US { get; set; } = "us";
public static string AU { get; set; } = "au";
}
public OddService(string region)
{
_region = region;
_url = $"{_servicePoint}apiKey={_apiKey}&region={_region}";
_client.BaseAddress = new Uri(_url);
}
public async Task<List<Odd>> GetOddsForLeague(League league)
{
List<Odd> oddsToReturn = new List<Odd>();
var builder = new UriBuilder(_servicePoint);
builder.Port = -1;
var query = HttpUtility.ParseQueryString(builder.Query);
query["apiKey"] = _apiKey;
query["region"] = _region;
query["sport"] = league.ApiIdentifiant;
builder.Query = query.ToString();
string url = builder.ToString();
_client.BaseAddress = new Uri(url);
var result = await _client.GetAsync(url);
Console.WriteLine(result.StatusCode);
return oddsToReturn;
}
public List<Odd> GetOddsForAllLeagues()
{
List<Odd> oddsToReturn = new List<Odd>();
return oddsToReturn;
}
}
}