feat: Logun url query implementation

This commit is contained in:
Michael Shabanov committed 2021-10-18 17:47:06 +03:00
1 parent 806268df48
commit 11486b7303
6 files changed
+67 -3

No files matched your search

@@ -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;
}
/// <summary>
/// Returns authentication URL accourding Realm
/// </summary>
/// <param name="realmType">Wargaming Realm.</param>
/// <returns></returns>
public string LoginUrl(RealmType realmType)
{
return _wargamingAuthenticationClient.LoginUrl(realmType);
}
}
}
+1
View File
@@ -90,6 +90,7 @@ namespace WotBlitzStatisticsPro.GraphQl
.AddType<AccountInfoResolver>()
.AddType<WotBlitzAchievementsQuery>()
.AddType<TankInfoResponseType>()
.AddType<WargamingAuthQuery>()
.AddMutationType(d => d.Name("Mutation"))
.AddType<WotBlitzStatisticsMutation>()
.AddType<AuthenticationMutation>()
@@ -29,6 +29,7 @@ namespace WotBlitzStatisticsPro.Logic
services.AddHttpClient<IWargamingDictionariesApiClient, WargamingApiClient>();
services.AddHttpClient<IWargamingTanksApiClient, WargamingApiClient>();
services.AddHttpClient<IWargamingAchievementsApiClient, WargamingAchievementsApiClient>();
services.AddHttpClient<IWargamingAuthenticationClient, WargamingApiClient>();
services.AddTransient<IWargamingSearch, WargamingSearch>();
services.AddTransient<IWargamingDictionaries, WargamingDictionaries>();
services.AddTransient<IWargamingAccounts, WargamingAccounts>();
@@ -0,0 +1,10 @@
using System.Threading.Tasks;
using WotBlitzStatisticsPro.Common.Model;
namespace WotBlitzStatisticsPro.WgApiClient
{
public interface IWargamingAuthenticationClient
{
string LoginUrl(RealmType realm);
}
}
@@ -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=")
@@ -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<WotAccountTanksStatistics>();
}
#endregion
#region Authentication
public string LoginUrl(RealmType realm)
{
return GetWotUri(realm, "auth/login/", null);
}
#endregion
}