mirror of
https://github.com/DrMboga/WotBlitzStatisticsBlazor.git
synced 2026-10-21 02:17:20 +02:00
feat: Passing Wargaming Token for Gather application mutation
This commit is contained in:
1 parent
0b5da2f7c6
commit
c9f933235c
8 files changed
+50
-17
No files matched your search
@@ -1,4 +1,5 @@
|
||||
using System.Threading.Tasks;
|
||||
using HotChocolate;
|
||||
using HotChocolate.AspNetCore.Authorization;
|
||||
using HotChocolate.Types;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
@@ -40,10 +41,15 @@ namespace WotBlitzStatisticsPro.GraphQl.Mutation
|
||||
/// <param name="realmType">Account region</param>
|
||||
/// <param name="accountId">AccountId</param>
|
||||
/// <param name="requestLanguage">Request language</param>
|
||||
/// <param name="wgToken">Wargaming authentication token</param>
|
||||
/// <returns></returns>
|
||||
public Task<AccountInfoResponse> GatherAccountInformation(RealmType realmType, long accountId, RequestLanguage requestLanguage)
|
||||
public Task<AccountInfoResponse> GatherAccountInformation(
|
||||
RealmType realmType,
|
||||
long accountId,
|
||||
RequestLanguage requestLanguage,
|
||||
[GlobalState("WgToken")] string wgToken)
|
||||
{
|
||||
return _wargamingAccounts.GatherAndSaveAccountInformation(realmType, accountId, requestLanguage);
|
||||
return _wargamingAccounts.GatherAndSaveAccountInformation(realmType, accountId, requestLanguage, wgToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,7 +94,16 @@ namespace WotBlitzStatisticsPro.GraphQl
|
||||
.AddHttpRequestInterceptor(
|
||||
(context, executor, builder, ct) =>
|
||||
{
|
||||
// your code
|
||||
// Get WgAccessToken from header and push it into context
|
||||
if (context.Request.Headers.ContainsKey("WargamingToken"))
|
||||
{
|
||||
var token = context.Request.Headers["WargamingToken"];
|
||||
if (token.Count == 1)
|
||||
{
|
||||
builder.SetProperty("WgToken", token[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return ValueTask.CompletedTask;
|
||||
})
|
||||
;
|
||||
|
||||
+3
-1
@@ -4,15 +4,17 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.OperationContex
|
||||
{
|
||||
public class AccountRequest
|
||||
{
|
||||
public AccountRequest(long accountId, RealmType realmType, RequestLanguage requestLanguage)
|
||||
public AccountRequest(long accountId, RealmType realmType, RequestLanguage requestLanguage, string? authenticationToken = null)
|
||||
{
|
||||
AccountId = accountId;
|
||||
RealmType = realmType;
|
||||
RequestLanguage = requestLanguage;
|
||||
AuthenticationToken = authenticationToken;
|
||||
}
|
||||
|
||||
public long AccountId { get; }
|
||||
public RealmType RealmType { get; }
|
||||
public RequestLanguage RequestLanguage { get; }
|
||||
public string? AuthenticationToken { get; }
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -29,7 +29,7 @@ namespace WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations
|
||||
public async Task Invoke(IOperationContext context, Func<IOperationContext, Task>? next)
|
||||
{
|
||||
var accountInfo = await
|
||||
_wargamingApi.GetPlayerAccountInfo(context.Request.AccountId, context.Request.RealmType, context.Request.RequestLanguage);
|
||||
_wargamingApi.GetPlayerAccountInfo(context.Request.AccountId, context.Request.RealmType, context.Request.RequestLanguage, context.Request.AuthenticationToken);
|
||||
|
||||
if (accountInfo == null)
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace WotBlitzStatisticsPro.Logic
|
||||
{
|
||||
Task<AccountInfoResponse> GatherAccountInformation(RealmType realm, long accountId, RequestLanguage requestLanguage);
|
||||
|
||||
Task<AccountInfoResponse> GatherAndSaveAccountInformation(RealmType realm, long accountId, RequestLanguage requestLanguage);
|
||||
Task<AccountInfoResponse> GatherAndSaveAccountInformation(RealmType realm, long accountId, RequestLanguage requestLanguage, string wargamingToken);
|
||||
|
||||
Task<AccountInfoHistoryResponse> GetAccountInfoHistory(RealmType realm, long accountId, DateTime startDate,
|
||||
RequestLanguage requestLanguage);
|
||||
|
||||
@@ -20,7 +20,9 @@ namespace WotBlitzStatisticsPro.Logic
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<AccountInfoResponse> GatherAccountInformation(RealmType realm, long accountId,
|
||||
public async Task<AccountInfoResponse> GatherAccountInformation(
|
||||
RealmType realm,
|
||||
long accountId,
|
||||
RequestLanguage requestLanguage)
|
||||
{
|
||||
var contextData = new AccountInformationPipelineContextData();
|
||||
@@ -56,13 +58,17 @@ namespace WotBlitzStatisticsPro.Logic
|
||||
return contextData?.Response ?? new AccountInfoResponse();
|
||||
}
|
||||
|
||||
public async Task<AccountInfoResponse> GatherAndSaveAccountInformation(RealmType realm, long accountId, RequestLanguage requestLanguage)
|
||||
public async Task<AccountInfoResponse> GatherAndSaveAccountInformation(
|
||||
RealmType realm,
|
||||
long accountId,
|
||||
RequestLanguage requestLanguage,
|
||||
string wargamingToken)
|
||||
{
|
||||
var contextData = new AccountInformationPipelineContextData();
|
||||
try
|
||||
{
|
||||
|
||||
var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage));
|
||||
var context = new OperationContext(new AccountRequest(accountId, realm, requestLanguage, wargamingToken));
|
||||
context.AddOrReplace(contextData);
|
||||
var pipeline = new Pipeline<IOperationContext>(_operationFactory);
|
||||
|
||||
|
||||
@@ -17,7 +17,8 @@ namespace WotBlitzStatisticsPro.WgApiClient
|
||||
|
||||
Task<WotAccountInfo?> GetPlayerAccountInfo(long accountId,
|
||||
RealmType realmType = RealmType.Ru,
|
||||
RequestLanguage language = RequestLanguage.En);
|
||||
RequestLanguage language = RequestLanguage.En,
|
||||
string? authenticationToken = null);
|
||||
|
||||
Task<ClanAccountInfo?> GetPlayerClanInfo(long accountId,
|
||||
RealmType realmType = RealmType.Ru,
|
||||
|
||||
@@ -94,15 +94,24 @@ namespace WotBlitzStatisticsPro.WgApiClient
|
||||
|
||||
|
||||
|
||||
public async Task<WotAccountInfo?> GetPlayerAccountInfo(long accountId,
|
||||
public async Task<WotAccountInfo?> GetPlayerAccountInfo(
|
||||
long accountId,
|
||||
RealmType realmType = RealmType.Ru,
|
||||
RequestLanguage language = RequestLanguage.En)
|
||||
RequestLanguage language = RequestLanguage.En,
|
||||
string? authenticationToken = null)
|
||||
{
|
||||
var account = await GetFromBlitzApi<Dictionary<string, WotAccountInfo>>(
|
||||
realmType,
|
||||
language,
|
||||
"account/info/",
|
||||
$"account_id={accountId}").ConfigureAwait(false);
|
||||
var account = authenticationToken == null
|
||||
? await GetFromBlitzApi<Dictionary<string, WotAccountInfo>>(
|
||||
realmType,
|
||||
language,
|
||||
"account/info/",
|
||||
$"account_id={accountId}").ConfigureAwait(false)
|
||||
: await GetFromBlitzApi<Dictionary<string, WotAccountInfo>>(
|
||||
realmType,
|
||||
language,
|
||||
"account/info/",
|
||||
$"account_id={accountId}",
|
||||
$"access_token={authenticationToken}").ConfigureAwait(false);
|
||||
return account?[accountId.ToString()];
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user