This repository has been archived by the owner on Nov 10, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
RiotGamesClient.cs
123 lines (103 loc) · 3.83 KB
/
RiotGamesClient.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System.Diagnostics;
using Camille.Enums;
using RiotGames.LeagueOfLegends;
using RiotGames.LegendsOfRuneterra;
using RiotGames.TeamfightTactics;
using RiotGames.Valorant;
namespace RiotGames;
[DebuggerDisplay("Region = {Region} Platform = {Platform} ValPlatform = {_valPlatform}")]
public partial class RiotGamesClient : RiotGamesClientBase<IRiotGamesObject>
{
private readonly string _apiKey;
private readonly ValPlatformRoute? _valPlatform;
private LeagueOfLegendsClient? _leagueOfLegends;
private LegendsOfRuneterraClient? _legendsOfRuneterra;
private TeamfightTacticsClient? _teamfightTactics;
private ValorantClient? _valorant;
/// <summary>
/// Using this constructor is useful for when you only need region-specific API. If you're only using /riot endpoints
/// then use the region closest to you.
/// </summary>
public RiotGamesClient(string apiKey, RegionalRoute region, ValPlatformRoute? valPlatform = null) : base(apiKey,
region)
{
_apiKey = apiKey;
_valPlatform = valPlatform;
}
/// <summary>
/// This will set the region to the one for the platform, which might not be closest to you. For the best performance
/// on those endpoints, use the regional constructor.
/// </summary>
public RiotGamesClient(string apiKey, PlatformRoute platform, RegionalRoute? region = null,
ValPlatformRoute? valPlatform = null) : base(apiKey, platform, region)
{
_apiKey = apiKey;
_valPlatform = valPlatform;
}
[Obsolete("Use the ValorantClient directly instead.", true)]
public RiotGamesClient(string apiKey, ValPlatformRoute valPlatform) : base(apiKey, valPlatform)
{
_apiKey = apiKey;
_valPlatform = valPlatform;
}
public LeagueOfLegendsClient LeagueOfLegends
{
get
{
if (_leagueOfLegends != null) return _leagueOfLegends;
if (Region == null)
throw new RiotGamesRouteException("region");
_leagueOfLegends = Platform == null
? new LeagueOfLegendsClient(_apiKey, (RegionalRoute) Region)
: new LeagueOfLegendsClient(_apiKey, (PlatformRoute) Platform);
return _leagueOfLegends;
}
}
public LegendsOfRuneterraClient LegendsOfRuneterra
{
get
{
if (_legendsOfRuneterra == null)
{
if (Region == null)
throw new RiotGamesRouteException("region");
_legendsOfRuneterra = new LegendsOfRuneterraClient(_apiKey, (RegionalRoute) Region);
}
return _legendsOfRuneterra;
}
}
public TeamfightTacticsClient TeamfightTactics
{
get
{
if (_teamfightTactics == null)
{
if (Region == null)
throw new RiotGamesRouteException("region");
_teamfightTactics = Platform == null ? new TeamfightTacticsClient(_apiKey, (RegionalRoute) Region) : new TeamfightTacticsClient(_apiKey, (PlatformRoute) Platform);
}
return _teamfightTactics;
}
}
public ValorantClient Valorant
{
get
{
if (_valorant == null)
{
if (_valPlatform == null)
throw new RiotGamesRouteException("val-platform");
_valorant = new ValorantClient(_apiKey, (ValPlatformRoute) _valPlatform);
}
return _valorant;
}
}
public override void Dispose()
{
base.Dispose();
_leagueOfLegends?.Dispose();
_legendsOfRuneterra?.Dispose();
_teamfightTactics?.Dispose();
_valorant?.Dispose();
}
}