diff --git a/WotBlitzStatisticsPro.GraphQl/Query/WargamingAuthQuery.cs b/WotBlitzStatisticsPro.GraphQl/Query/WargamingAuthQuery.cs
new file mode 100644
index 0000000..7c6ca5e
--- /dev/null
+++ b/WotBlitzStatisticsPro.GraphQl/Query/WargamingAuthQuery.cs
@@ -0,0 +1,28 @@
+using HotChocolate.Types;
+using System.Threading.Tasks;
+using WotBlitzStatisticsPro.Common.Model;
+using WotBlitzStatisticsPro.WgApiClient;
+
+namespace WotBlitzStatisticsPro.GraphQl.Query
+{
+ [ExtendObjectType(Name = "Query")]
+ public class WargamingAuthQuery
+ {
+ private readonly IWargamingAuthenticationClient _wargamingAuthenticationClient;
+
+ public WargamingAuthQuery(IWargamingAuthenticationClient wargamingAuthenticationClient)
+ {
+ _wargamingAuthenticationClient = wargamingAuthenticationClient;
+ }
+
+ ///
+ /// Returns authentication URL accourding Realm
+ ///
+ /// Wargaming Realm.
+ ///
+ public string LoginUrl(RealmType realmType)
+ {
+ return _wargamingAuthenticationClient.LoginUrl(realmType);
+ }
+ }
+}
diff --git a/WotBlitzStatisticsPro.GraphQl/Startup.cs b/WotBlitzStatisticsPro.GraphQl/Startup.cs
index b1731c9..17a7541 100644
--- a/WotBlitzStatisticsPro.GraphQl/Startup.cs
+++ b/WotBlitzStatisticsPro.GraphQl/Startup.cs
@@ -90,6 +90,7 @@ namespace WotBlitzStatisticsPro.GraphQl
.AddType()
.AddType()
.AddType()
+ .AddType()
.AddMutationType(d => d.Name("Mutation"))
.AddType()
.AddType()
diff --git a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
index dee84f1..fed0a66 100644
--- a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
+++ b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
@@ -29,6 +29,7 @@ namespace WotBlitzStatisticsPro.Logic
services.AddHttpClient();
services.AddHttpClient();
services.AddHttpClient();
+ services.AddHttpClient();
services.AddTransient();
services.AddTransient();
services.AddTransient();
diff --git a/WotBlitzStatisticsPro.WgApiClient/IWargamingAuthenticationClient.cs b/WotBlitzStatisticsPro.WgApiClient/IWargamingAuthenticationClient.cs
new file mode 100644
index 0000000..5f1c51a
--- /dev/null
+++ b/WotBlitzStatisticsPro.WgApiClient/IWargamingAuthenticationClient.cs
@@ -0,0 +1,10 @@
+using System.Threading.Tasks;
+using WotBlitzStatisticsPro.Common.Model;
+
+namespace WotBlitzStatisticsPro.WgApiClient
+{
+ public interface IWargamingAuthenticationClient
+ {
+ string LoginUrl(RealmType realm);
+ }
+}
diff --git a/WotBlitzStatisticsPro.WgApiClient/WagramingApiClientBase.cs b/WotBlitzStatisticsPro.WgApiClient/WagramingApiClientBase.cs
index e917fe9..25c52d6 100644
--- a/WotBlitzStatisticsPro.WgApiClient/WagramingApiClientBase.cs
+++ b/WotBlitzStatisticsPro.WgApiClient/WagramingApiClientBase.cs
@@ -47,7 +47,7 @@ namespace WotBlitzStatisticsPro.WgApiClient
string method,
params string[] queryParameters) where T: class
{
- string uri = GetUri(realmType, language, method, queryParameters);
+ string uri = GetBlitzUri(realmType, language, method, queryParameters);
_httpClient.DefaultRequestHeaders.Accept.Clear();
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
@@ -75,7 +75,23 @@ namespace WotBlitzStatisticsPro.WgApiClient
}
}
- private string GetUri(RealmType realmType, RequestLanguage language, string method, string[] queryParameters)
+ protected string GetWotUri(RealmType realmType, string method, string[]? queryParameters)
+ {
+ var uri = new StringBuilder($"{_wotApiUrls[realmType]}{method}");
+ uri.Append("?application_id=")
+ .Append(_wargamingApiSettings.ApplicationId);
+ if (queryParameters != null)
+ {
+ foreach (var param in queryParameters)
+ {
+ uri.Append("&")
+ .Append(param);
+ }
+ }
+ return uri.ToString();
+ }
+
+ private string GetBlitzUri(RealmType realmType, RequestLanguage language, string method, string[] queryParameters)
{
var uri = new StringBuilder($"{_blitzApiUrls[realmType]}{method}");
uri.Append("?application_id=")
diff --git a/WotBlitzStatisticsPro.WgApiClient/WargamingApiClient.cs b/WotBlitzStatisticsPro.WgApiClient/WargamingApiClient.cs
index 2e2ab6f..02bd27d 100644
--- a/WotBlitzStatisticsPro.WgApiClient/WargamingApiClient.cs
+++ b/WotBlitzStatisticsPro.WgApiClient/WargamingApiClient.cs
@@ -12,7 +12,8 @@ namespace WotBlitzStatisticsPro.WgApiClient
public class WargamingApiClient : WagramingApiClientBase,
IWargamingApiClient,
IWargamingDictionariesApiClient,
- IWargamingTanksApiClient
+ IWargamingTanksApiClient,
+ IWargamingAuthenticationClient
{
public WargamingApiClient(
HttpClient httpClient,
@@ -206,6 +207,13 @@ namespace WotBlitzStatisticsPro.WgApiClient
$"account_id={accountId}").ConfigureAwait(false);
return tanks?[accountId.ToString()] ?? new List();
}
+ #endregion
+
+ #region Authentication
+ public string LoginUrl(RealmType realm)
+ {
+ return GetWotUri(realm, "auth/login/", null);
+ }
#endregion
}