Files
WotBlitzStatisticsBlazor/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendMockService.cs
T

110 lines
3.2 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
2021-05-15 19:47:48 +02:00
using System.Globalization;
using System.Threading.Tasks;
using Bogus;
using Bogus.Extensions;
using WotBlitzStatisticsPro.Blazor.GraphQl;
namespace WotBlitzStatisticsPro.Blazor.Services
{
public class GraphQlBackendMockService: IGraphQlBackendService
{
2021-05-21 13:41:46 +02:00
private readonly bool _needToWait;
public GraphQlBackendMockService()
{
_needToWait = true;
}
public GraphQlBackendMockService(bool needToWait)
{
_needToWait = needToWait;
}
2021-05-15 19:47:48 +02:00
public async Task<IReadOnlyList<IFindPlayers_Players>?> FindPlayers(string accountNick, RealmType realmType)
{
var result = new List<IFindPlayers_Players>();
2021-05-15 19:47:48 +02:00
var faker = new Faker(FakerLanguage(GetLanguage()));
var random = faker.Random.Number(10, 80);
for (int i = 0; i < random; i++)
{
result.Add(new FindPlayers_Players_AccountsSearchResponseItem(
faker.Random.Long(100000, 999999),
2021-05-15 22:23:49 +02:00
faker.Internet.UserName(),
faker.Hacker.Abbreviation().OrNull(faker, 0.6f),
faker.Date.Past(),
faker.Random.Number(10, 20000),
faker.Random.Number(30, 90)));
}
2021-05-21 13:41:46 +02:00
if (_needToWait)
{
await Task.Delay(1000);
}
return result;
}
2021-05-15 19:47:48 +02:00
public async Task<IReadOnlyList<IFindClans_Clans>?> FindClans(string clanNameOrTag, RealmType realmType)
{
var result = new List<IFindClans_Clans>();
2021-05-15 19:47:48 +02:00
var faker = new Faker(FakerLanguage(GetLanguage()));
var random = faker.Random.Number(10, 80);
for (int i = 0; i < random; i++)
{
result.Add(new FindClans_Clans_ClanSearchResponseItem(
faker.Random.Long(100000, 999999),
2021-05-16 22:43:49 +02:00
Convert.ToInt32((faker.Date.Past() - new DateTime(1970, 1, 1)).TotalSeconds),
faker.Random.Number(1, 50),
faker.Lorem.Word(),
2021-05-17 13:37:32 +02:00
faker.Hacker.Abbreviation()));
}
2021-05-21 13:41:46 +02:00
if (_needToWait)
{
await Task.Delay(1000);
}
return result;
}
2021-05-28 15:27:36 +02:00
public Task<IPlayer_AccountInfo> GetPlayerInfo(long accountId, RealmType realmType)
{
throw new NotImplementedException();
}
private string FakerLanguage(RequestLanguage language)
{
switch (language)
{
case RequestLanguage.Ru:
return "ru";
case RequestLanguage.De:
return "de";
default:
return "en";
}
}
2021-05-15 19:47:48 +02:00
private RequestLanguage GetLanguage()
{
var culture = CultureInfo.CurrentCulture;
switch (culture.Name)
{
case "ru-RU":
return RequestLanguage.Ru;
case "de-DE":
return RequestLanguage.De;
default:
return RequestLanguage.En;
}
}
}
}