Added support for gain tracking over specified timeframes

This commit is contained in:
Kalakoi committed 2026-10-14 21:27:46 -04:00
1 parent e3de32c4a5
commit b157e949dc
12 files changed
+220

No files matched your search

@@ -0,0 +1,9 @@
namespace osrs_toolbox
{
public class ActivityGainData
{
public string metric { get; set; }
public GainData rank { get; set; }
public GainData score { get; set; }
}
}
@@ -0,0 +1,10 @@
namespace osrs_toolbox
{
public class BossGainData
{
public string metric { get; set; }
public GainData ehb { get; set; }
public GainData rank { get; set; }
public GainData kills { get; set; }
}
}
@@ -0,0 +1,9 @@
namespace osrs_toolbox
{
public class ComputedGainData
{
public string metric { get; set; }
public GainData value { get; set; }
public GainData rank { get; set; }
}
}
@@ -0,0 +1,9 @@
namespace osrs_toolbox
{
public class GainData
{
public double gained { get; set; }
public double start { get; set; }
public double end { get; set; }
}
}
@@ -0,0 +1,22 @@
namespace osrs_toolbox
{
public class PlayerActivityGains
{
public ActivityGainData league_points { get; set; }
public ActivityGainData bounty_hunter_hunter { get; set; }
public ActivityGainData bounty_hunter_rogue { get; set; }
public ActivityGainData clue_scrolls_all { get; set; }
public ActivityGainData clue_scrolls_beginner { get; set; }
public ActivityGainData clue_scrolls_easy { get; set; }
public ActivityGainData clue_scrolls_medium { get; set; }
public ActivityGainData clue_scrolls_hard { get; set; }
public ActivityGainData clue_scrolls_elite { get; set; }
public ActivityGainData clue_scrolls_master { get; set; }
public ActivityGainData last_man_standing { get; set; }
public ActivityGainData pvp_arena { get; set; }
public ActivityGainData soul_wars_zeal { get; set; }
public ActivityGainData guardians_of_the_rift { get; set; }
public ActivityGainData colosseum_glory { get; set; }
public ActivityGainData collections_logged { get; set; }
}
}
@@ -0,0 +1,77 @@
namespace osrs_toolbox
{
public class PlayerBossGains
{
public BossGainData abyssal_sire { get; set; }
public BossGainData alchemical_hydra { get; set; }
public BossGainData amoxliatl { get; set; }
public BossGainData araxxor { get; set; }
public BossGainData artio { get; set; }
public BossGainData barrows_chests { get; set; }
public BossGainData brutus { get; set; }
public BossGainData bryophyta { get; set; }
public BossGainData callisto { get; set; }
public BossGainData calvarion { get; set; }
public BossGainData cerberus { get; set; }
public BossGainData chambers_of_xeric { get; set; }
public BossGainData chambers_of_xeric_challenge_mode { get; set; }
public BossGainData chaos_elemental { get; set; }
public BossGainData chaos_fanatic { get; set; }
public BossGainData commander_zilyana { get; set; }
public BossGainData corporeal_beast { get; set; }
public BossGainData crazy_archaeologist { get; set; }
public BossGainData dagannoth_prime { get; set; }
public BossGainData dagannoth_rex { get; set; }
public BossGainData dagannoth_supreme { get; set; }
public BossGainData deranged_archaeologist { get; set; }
public BossGainData doom_of_mokhaiotl { get; set; }
public BossGainData duke_sucellus { get; set; }
public BossGainData general_graardor { get; set; }
public BossGainData giant_mole { get; set; }
public BossGainData grotesque_guardians { get; set; }
public BossGainData hespori { get; set; }
public BossGainData kalphite_queen { get; set; }
public BossGainData king_black_dragon { get; set; }
public BossGainData kraken { get; set; }
public BossGainData kreearra { get; set; }
public BossGainData kril_tsutsaroth { get; set; }
public BossGainData lunar_chests { get; set; }
public BossGainData mad_angel { get; set; }
public BossGainData maggot_king { get; set; }
public BossGainData mimic { get; set; }
public BossGainData nex { get; set; }
public BossGainData nightmare { get; set; }
public BossGainData phosanis_nightmare { get; set; }
public BossGainData obor { get; set; }
public BossGainData phantom_muspah { get; set; }
public BossGainData sarachnis { get; set; }
public BossGainData scorpia { get; set; }
public BossGainData scurrius { get; set; }
public BossGainData shellbane_gryphon { get; set; }
public BossGainData skotizo { get; set; }
public BossGainData sol_heredit { get; set; }
public BossGainData spindel { get; set; }
public BossGainData tempoross { get; set; }
public BossGainData the_gauntlet { get; set; }
public BossGainData the_corrupted_gauntlet { get; set; }
public BossGainData the_hueycoatl { get; set; }
public BossGainData the_leviathan { get; set; }
public BossGainData the_royal_titans { get; set; }
public BossGainData the_whisperer { get; set; }
public BossGainData theatre_of_blood { get; set; }
public BossGainData theatre_of_blood_hard_mode { get; set; }
public BossGainData thermonuclear_smoke_devil { get; set; }
public BossGainData tombs_of_amascut { get; set; }
public BossGainData tombs_of_amascut_expert { get; set; }
public BossGainData tzkal_zuk { get; set; }
public BossGainData tztok_jad { get; set; }
public BossGainData vardorvis { get; set; }
public BossGainData venenatis { get; set; }
public BossGainData vetion { get; set; }
public BossGainData vorkath { get; set; }
public BossGainData wintertodt { get; set; }
public BossGainData yama { get; set; }
public BossGainData zalcano { get; set; }
public BossGainData zulrah { get; set; }
}
}
@@ -0,0 +1,8 @@
namespace osrs_toolbox
{
public class PlayerComputedGains
{
public ComputedGainData ehp { get; set; }
public ComputedGainData ehb { get; set; }
}
}
@@ -0,0 +1,9 @@
namespace osrs_toolbox
{
public class PlayerGains
{
public DateTime startsAt { get; set; }
public DateTime endsAt { get; set; }
public PlayerGainsData data { get; set; }
}
}
@@ -0,0 +1,10 @@
namespace osrs_toolbox
{
public class PlayerGainsData
{
public PlayerSkillGains skills { get; set; }
public PlayerBossGains bosses { get; set; }
public PlayerActivityGains activities { get; set; }
public PlayerComputedGains computed { get; set; }
}
}
@@ -0,0 +1,31 @@
namespace osrs_toolbox
{
public class PlayerSkillGains
{
public SkillGainData overall { get; set; }
public SkillGainData attack { get; set; }
public SkillGainData defence { get; set; }
public SkillGainData strength { get; set; }
public SkillGainData hitpoints { get; set; }
public SkillGainData ranged { get; set; }
public SkillGainData prayer { get; set; }
public SkillGainData magic { get; set; }
public SkillGainData cooking { get; set; }
public SkillGainData woodcutting { get; set; }
public SkillGainData fletching { get; set; }
public SkillGainData fishing { get; set; }
public SkillGainData firemaking { get; set; }
public SkillGainData crafting { get; set; }
public SkillGainData smithing { get; set; }
public SkillGainData mining { get; set; }
public SkillGainData herblore { get; set; }
public SkillGainData agility { get; set; }
public SkillGainData thieving { get; set; }
public SkillGainData slayer { get; set; }
public SkillGainData farming { get; set; }
public SkillGainData runecrafting { get; set; }
public SkillGainData hunter { get; set; }
public SkillGainData construction { get; set; }
public SkillGainData sailing { get; set; }
}
}
@@ -0,0 +1,11 @@
namespace osrs_toolbox
{
public class SkillGainData
{
public string metric { get; set; }
public GainData experience { get; set; }
public GainData ehp { get; set; }
public GainData rank { get; set; }
public GainData level { get; set; }
}
}
@@ -8,6 +8,7 @@ namespace osrs_toolbox
private static string CompetitionEndpoint = @"https://api.wiseoldman.net/v2/competitions/"; private static string CompetitionEndpoint = @"https://api.wiseoldman.net/v2/competitions/";
private static string GroupEndpoint = @"https://api.wiseoldman.net/v2/groups/"; private static string GroupEndpoint = @"https://api.wiseoldman.net/v2/groups/";
private static string PlayerEndpoint = @"https://api.wiseoldman.net/v2/players/"; private static string PlayerEndpoint = @"https://api.wiseoldman.net/v2/players/";
private static string PlayerGainsEndpoint = @"https://api.wiseoldman.net/v2/players/{0}/gained?startDate={1}&endDate={2}";
public static Player GetPlayer(string Username) public static Player GetPlayer(string Username)
{ {
@@ -23,6 +24,20 @@ namespace osrs_toolbox
return p; return p;
} }
public static PlayerGains GetPlayerGains(string Username, DateTime StartDate, DateTime EndDate)
{
string res = RestServices.GetResponse(new Uri(string.Format(PlayerGainsEndpoint, Username, StartDate.ToString(), EndDate.ToString())), string.Empty);
PlayerGains pg = JsonSerializer.Deserialize<PlayerGains>(res);
return pg;
}
public static async Task<PlayerGains> GetPlayerGainsAsync(string Username, DateTime StartDate, DateTime EndDate)
{
string res = await RestServices.GetResponseAsync(new Uri(string.Format(PlayerGainsEndpoint, Username, StartDate.ToString(), EndDate.ToString())), string.Empty).ConfigureAwait(false);
PlayerGains pg = JsonSerializer.Deserialize<PlayerGains>(res);
return pg;
}
public static Group GetGroup(int ID) public static Group GetGroup(int ID)
{ {
string res = RestServices.GetResponse(new Uri(GroupEndpoint + ID.ToString()), string.Empty); string res = RestServices.GetResponse(new Uri(GroupEndpoint + ID.ToString()), string.Empty);