Skip to content

Commit

Permalink
refactor: Use top level statements + file scoped namespaces
Browse files Browse the repository at this point in the history
  • Loading branch information
tparviainen committed Dec 10, 2023
1 parent 9e03c40 commit c4fac36
Show file tree
Hide file tree
Showing 7 changed files with 481 additions and 494 deletions.
215 changes: 107 additions & 108 deletions src/ClashOfClans.App/Examples/ClansExamples.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,147 +5,146 @@
using System.Linq;
using System.Threading.Tasks;

namespace ClashOfClans.App.Examples
namespace ClashOfClans.App.Examples;

public class ClansExamples
{
public class ClansExamples
private readonly string _token;
private readonly string _clanTag;

public ClansExamples(string token, string clanTag)
{
private readonly string token;
private readonly string clanTag;
_token = token;
_clanTag = clanTag;
}

public ClansExamples(string token, string clanTag)
/// <summary>
/// Search all clans by name and/or filtering the results using various criteria.
/// </summary>
public async Task SearchClans()
{
var query = new QueryClans
{
this.token = token;
this.clanTag = clanTag;
}
Name = "Phoenix",
MinMembers = 40,
MinClanLevel = 5,
Limit = 10
};

/// <summary>
/// Search all clans by name and/or filtering the results using various criteria.
/// </summary>
public async Task SearchClans()
var coc = new ClashOfClansClient(_token);
var clans = (ClanList)await coc.Clans.SearchClansAsync(query);

foreach (var clan in clans)
{
var query = new QueryClans
{
Name = "Phoenix",
MinMembers = 40,
MinClanLevel = 5,
Limit = 10
};
Console.WriteLine($"{clan.Tag}/{clan.Name} has {clan.Members} members and is level {clan.ClanLevel} clan");
}
}

var coc = new ClashOfClansClient(token);
var clans = (ClanList)await coc.Clans.SearchClansAsync(query);
/// <summary>
/// Get information about a single clan by clan tag.
/// </summary>
public async Task GetClanInformation()
{
var coc = new ClashOfClansClient(_token);
var clan = await coc.Clans.GetClanAsync(_clanTag);
Console.WriteLine($"Clan '{clan.Name}' is a level {clan.ClanLevel} clan and has {clan.Members} members");
}

foreach (var clan in clans)
{
Console.WriteLine($"{clan.Tag}/{clan.Name} has {clan.Members} members and is level {clan.ClanLevel} clan");
}
}
/// <summary>
/// List clan members
/// </summary>
public async Task ListClanMembers()
{
var coc = new ClashOfClansClient(_token);
var clanMembers = (ClanMemberList)await coc.Clans.GetClanMembersAsync(_clanTag);

/// <summary>
/// Get information about a single clan by clan tag.
/// </summary>
public async Task GetClanInformation()
foreach (var member in clanMembers)
{
var coc = new ClashOfClansClient(token);
var clan = await coc.Clans.GetClanAsync(clanTag);
Console.WriteLine($"Clan '{clan.Name}' is a level {clan.ClanLevel} clan and has {clan.Members} members");
Console.WriteLine($"{member.ClanRank}. {member.Name}, {member.Trophies} \uD83C\uDFC6, {member.League.Name}");
}
}

/// <summary>
/// Retrieve clan's clan war log
/// </summary>
public async Task RetrieveClansClanWarLog()
{
var coc = new ClashOfClansClient(_token);
var clan = await coc.Clans.GetClanAsync(_clanTag);

/// <summary>
/// List clan members
/// </summary>
public async Task ListClanMembers()
if (clan.IsWarLogPublic)
{
var coc = new ClashOfClansClient(token);
var clanMembers = (ClanMemberList)await coc.Clans.GetClanMembersAsync(clanTag);
var warLog = await coc.Clans.GetClanWarLogAsync(_clanTag);

foreach (var member in clanMembers)
foreach (var war in warLog.Items.Where(w => w.Result != null))
{
Console.WriteLine($"{member.ClanRank}. {member.Name}, {member.Trophies} \uD83C\uDFC6, {member.League.Name}");
Console.WriteLine($"{war.Result.ToString()![0]}: {Statistics(war.Clan)} vs {Statistics(war.Opponent)}");
}
}

/// <summary>
/// Retrieve clan's clan war log
/// </summary>
public async Task RetrieveClansClanWarLog()
{
var coc = new ClashOfClansClient(token);
var clan = await coc.Clans.GetClanAsync(clanTag);

if (clan.IsWarLogPublic)
{
var warLog = await coc.Clans.GetClanWarLogAsync(clanTag);
static string Statistics(WarClan warClan) => $"{warClan.Name} [{warClan.Stars}\u2605/{warClan.DestructionPercentage}%]";
}

foreach (var war in warLog.Items.Where(w => w.Result != null))
{
Console.WriteLine($"{war.Result.ToString()![0]}: {Statistics(war.Clan)} vs {Statistics(war.Opponent)}");
}
}
/// <summary>
/// Retrieve information about clan's current clan war
/// </summary>
public async Task RetrieveInformationAboutClansCurrentClanWar()
{
var coc = new ClashOfClansClient(_token);
var clanWar = await coc.Clans.GetCurrentWarAsync(_clanTag);

static string Statistics(WarClan warClan) => $"{warClan.Name} [{warClan.Stars}\u2605/{warClan.DestructionPercentage}%]";
}
Console.WriteLine($"State: {clanWar.State}, {Statistics(clanWar.Clan)} vs {Statistics(clanWar.Opponent)}");

/// <summary>
/// Retrieve information about clan's current clan war
/// </summary>
public async Task RetrieveInformationAboutClansCurrentClanWar()
{
var coc = new ClashOfClansClient(token);
var clanWar = await coc.Clans.GetCurrentWarAsync(clanTag);
static string Statistics(WarClan warClan) => $"{warClan.Name} {warClan.Attacks}/{warClan.Stars}\u2605/{warClan.DestructionPercentage:0.00}%";
}

Console.WriteLine($"State: {clanWar.State}, {Statistics(clanWar.Clan)} vs {Statistics(clanWar.Opponent)}");
/// <summary>
/// Retrieve information about clan's current clan war league (CWL) group and wars
/// </summary>
public async Task RetrieveInformationAboutClansCurrentClanWarLeagueGroup()
{
var coc = new ClashOfClansClient(_token);
var clanWarLeagueGroup = await coc.Clans.GetClanWarLeagueGroupAsync(_clanTag);

static string Statistics(WarClan warClan) => $"{warClan.Name} {warClan.Attacks}/{warClan.Stars}\u2605/{warClan.DestructionPercentage:0.00}%";
}
Console.WriteLine($"Season: {clanWarLeagueGroup.Season}, State: {clanWarLeagueGroup.State}");

/// <summary>
/// Retrieve information about clan's current clan war league (CWL) group and wars
/// </summary>
public async Task RetrieveInformationAboutClansCurrentClanWarLeagueGroup()
// Retrieve information about individual clan war league (CWL) war
for (int i = 0; i < clanWarLeagueGroup.Rounds.Count; i++)
{
var coc = new ClashOfClansClient(token);
var clanWarLeagueGroup = await coc.Clans.GetClanWarLeagueGroupAsync(clanTag);

Console.WriteLine($"Season: {clanWarLeagueGroup.Season}, State: {clanWarLeagueGroup.State}");
var round = clanWarLeagueGroup.Rounds[i];
Console.WriteLine($"Round {i + 1}.");

// Retrieve information about individual clan war league (CWL) war
for (int i = 0; i < clanWarLeagueGroup.Rounds.Count; i++)
var clanWarLeagueRequests = new List<Task<ClanWarLeagueWar>>();
foreach (var warTag in round.WarTags.Where(wt => wt != "#0"))
{
var round = clanWarLeagueGroup.Rounds[i];
Console.WriteLine($"Round {i + 1}.");

var clanWarLeagueRequests = new List<Task<ClanWarLeagueWar>>();
foreach (var warTag in round.WarTags.Where(wt => wt != "#0"))
{
clanWarLeagueRequests.Add(coc.Clans.GetClanWarLeagueWarAsync(warTag));
}

var clanWarLeagueWars = await Task.WhenAll(clanWarLeagueRequests);
foreach (var clanWarLeagueWar in clanWarLeagueWars)
{
Console.WriteLine($" {clanWarLeagueWar.StartTime.ToLocalTime()}: {Statistics(clanWarLeagueWar.Clan)} vs {Statistics(clanWarLeagueWar.Opponent)}");
}
clanWarLeagueRequests.Add(coc.Clans.GetClanWarLeagueWarAsync(warTag));
}

static string Statistics(ClanWarLeagueWarClan clan) => $"{clan.Name} [{clan.Stars}\u2605/{clan.DestructionPercentage:0.00}%/{clan.Attacks}]";
var clanWarLeagueWars = await Task.WhenAll(clanWarLeagueRequests);
foreach (var clanWarLeagueWar in clanWarLeagueWars)
{
Console.WriteLine($" {clanWarLeagueWar.StartTime.ToLocalTime()}: {Statistics(clanWarLeagueWar.Clan)} vs {Statistics(clanWarLeagueWar.Opponent)}");
}
}

/// <summary>
/// Retrieve clan's capital raid seasons
/// </summary>
public async Task RetrieveClansCapitalRaidSeasons()
static string Statistics(ClanWarLeagueWarClan clan) => $"{clan.Name} [{clan.Stars}\u2605/{clan.DestructionPercentage:0.00}%/{clan.Attacks}]";
}

/// <summary>
/// Retrieve clan's capital raid seasons
/// </summary>
public async Task RetrieveClansCapitalRaidSeasons()
{
var query = new Query
{
var query = new Query
{
Limit = 1
};
var coc = new ClashOfClansClient(token);
var capitalRaidSeasons = (ClanCapitalRaidSeasons)await coc.Clans.GetCapitalRaidSeasonsAsync(clanTag, query);
Limit = 1
};
var coc = new ClashOfClansClient(_token);
var capitalRaidSeasons = (ClanCapitalRaidSeasons)await coc.Clans.GetCapitalRaidSeasonsAsync(_clanTag, query);

if (capitalRaidSeasons.SingleOrDefault() is ClanCapitalRaidSeason crs)
{
Console.WriteLine($"CapitalTotalLoot {crs.CapitalTotalLoot}, TotalAttacks {crs.TotalAttacks}");
}
if (capitalRaidSeasons.SingleOrDefault() is ClanCapitalRaidSeason crs)
{
Console.WriteLine($"CapitalTotalLoot {crs.CapitalTotalLoot}, TotalAttacks {crs.TotalAttacks}");
}
}
}
35 changes: 17 additions & 18 deletions src/ClashOfClans.App/Examples/GoldPassExamples.cs
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
using System;
using System.Threading.Tasks;

namespace ClashOfClans.App.Examples
namespace ClashOfClans.App.Examples;

public class GoldPassExamples
{
public class GoldPassExamples
{
private readonly string token;
private readonly string _token;

public GoldPassExamples(string token)
{
this.token = token;
}
public GoldPassExamples(string token)
{
_token = token;
}

/// <summary>
/// Get information about the current gold pass season.
/// </summary>
public async Task GetCurrentGoldPassSeason()
{
var coc = new ClashOfClansClient(token);
var currentGoldPassSeason = await coc.GoldPass.GetCurrentGoldPassSeasonAsync();
/// <summary>
/// Get information about the current gold pass season.
/// </summary>
public async Task GetCurrentGoldPassSeason()
{
var coc = new ClashOfClansClient(_token);
var currentGoldPassSeason = await coc.GoldPass.GetCurrentGoldPassSeasonAsync();

Console.WriteLine($"Current GoldPass season started '{currentGoldPassSeason.StartTime.ToLocalTime()}'" +
$" and ends '{currentGoldPassSeason.EndTime.ToLocalTime()}'");
}
Console.WriteLine($"Current GoldPass season started '{currentGoldPassSeason.StartTime.ToLocalTime()}'" +
$" and ends '{currentGoldPassSeason.EndTime.ToLocalTime()}'");
}
}
57 changes: 28 additions & 29 deletions src/ClashOfClans.App/Examples/LabelsExamples.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,42 @@
using System;
using System.Threading.Tasks;

namespace ClashOfClans.App.Examples
namespace ClashOfClans.App.Examples;

public class LabelsExamples
{
public class LabelsExamples
private readonly string _token;

public LabelsExamples(string token)
{
private readonly string token;
_token = token;
}

public LabelsExamples(string token)
{
this.token = token;
}
/// <summary>
/// List clan labels
/// </summary>
public async Task ListClanLabels()
{
var coc = new ClashOfClansClient(_token);
var labels = (LabelList)await coc.Labels.GetClanLabelsAsync();

/// <summary>
/// List clan labels
/// </summary>
public async Task ListClanLabels()
foreach (var label in labels)
{
var coc = new ClashOfClansClient(token);
var labels = (LabelList)await coc.Labels.GetClanLabelsAsync();

foreach (var label in labels)
{
Console.WriteLine($"Id: {label.Id}, Name: {label.Name}");
}
Console.WriteLine($"Id: {label.Id}, Name: {label.Name}");
}
}

/// <summary>
/// List player labels
/// </summary>
public async Task ListPlayerLabels()
{
var coc = new ClashOfClansClient(token);
var labels = (LabelList)await coc.Labels.GetPlayerLabelsAsync();
/// <summary>
/// List player labels
/// </summary>
public async Task ListPlayerLabels()
{
var coc = new ClashOfClansClient(_token);
var labels = (LabelList)await coc.Labels.GetPlayerLabelsAsync();

foreach (var label in labels)
{
Console.WriteLine($"Id: {label.Id}, Name: {label.Name}");
}
foreach (var label in labels)
{
Console.WriteLine($"Id: {label.Id}, Name: {label.Name}");
}
}
}
Loading

0 comments on commit c4fac36

Please sign in to comment.