Skip to content
This repository has been archived by the owner on Apr 8, 2024. It is now read-only.

Downgrade to .NET Standard 2.0 #120

Merged
merged 7 commits into from
Oct 13, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DragonFruit.Six.API.Demo/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
using System.Threading.Tasks;
using DragonFruit.Six.API.Data.Extensions;
using DragonFruit.Six.API.Enums;
using DragonFruit.Six.API.Helpers;
using DragonFruit.Six.API.Tests.Common;
using DragonFruit.Six.API.Utils;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

Expand Down
4 changes: 2 additions & 2 deletions DragonFruit.Six.API.Tests.Common/Dragon6DemoClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
using DragonFruit.Six.API.Developer.Extensions;
using DragonFruit.Six.API.Enums;
using DragonFruit.Six.API.Exceptions;
using DragonFruit.Six.API.Helpers;
using DragonFruit.Six.API.Utils;

namespace DragonFruit.Six.API.Tests.Common
{
Expand All @@ -35,7 +35,7 @@ protected override T ValidateAndProcess<T>(HttpResponseMessage response, HttpReq
catch (UbisoftErrorException)
{
//pretend to be ubisoft club and try again
AppId = UbisoftIdentifiers.Websites[UbisoftService.UbisoftClub];
AppId = UbisoftService.UbisoftClub.AppId();
return Perform<T>(request);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using DragonFruit.Common.Data.Extensions;
using DragonFruit.Six.API.Data.Containers;
using DragonFruit.Six.API.Data.Strings;
using DragonFruit.Six.API.Helpers;
using DragonFruit.Six.API.Utils;
using Newtonsoft.Json.Linq;

namespace DragonFruit.Six.API.Data.Deserializers
Expand All @@ -14,9 +14,12 @@ public static class AccountInfoDeserializer
{
public static IEnumerable<AccountInfo> DeserializeAccountInfo(this JObject jObject)
{
var json = JArray.FromObject(jObject[Misc.Profile]);
var accountsJson = jObject[Misc.Profile];

foreach (var jToken in json)
if (accountsJson == null)
yield break;

foreach (var jToken in JArray.FromObject(accountsJson))
{
var item = (JObject)jToken;
yield return new AccountInfo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using DragonFruit.Common.Data.Extensions;
using DragonFruit.Six.API.Data.Containers;
using DragonFruit.Six.API.Data.Strings;
using DragonFruit.Six.API.Utils;
using Newtonsoft.Json.Linq;

namespace DragonFruit.Six.API.Data.Deserializers
Expand All @@ -15,22 +16,24 @@ public static class AccountLoginInfoDeserializer
{
public static IEnumerable<AccountLoginInfo> DeserializeAccountLoginInfo(this JObject jObject)
{
var data = (JArray)jObject["applications"];
var platformLookup = Endpoints.GameIds.ToDictionary(x => x.Value, x => x.Key);
var data = jObject["applications"] as JArray;

if (data == null)
yield break;

foreach (var jToken in data)
{
var entry = (JObject)jToken;
yield return new AccountLoginInfo
{
Guid = entry.GetString(Login.Guid),
SessionCount = entry.GetUInt(Login.Sessions),
Platform = UbisoftIdentifiers.GameIds.SingleOrDefault(x => x.Value.Equals(entry.GetString(Login.PlatformId), StringComparison.OrdinalIgnoreCase)).Key,
Activity = new ActivityDateContainer
{
First = DateTimeOffset.Parse(entry.GetString(Login.FirstLogin), References.Culture),
Last = DateTimeOffset.Parse(entry.GetString(Login.LastLogin), References.Culture)
},
SessionCount = entry.GetUInt(Login.Sessions),
Platform = platformLookup[entry.GetString(Login.PlatformId)]
}
};
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,11 @@ public static class GeneralStatsDeserializer
{
public static GeneralStats DeserializeGeneralStatsFor(this JObject jObject, string guid)
{
if (jObject == null)
{
return new GeneralStats();
}
// try to get the user but if there is nothing return null
var json = jObject[Misc.Results]?[guid] as JObject;

var json = (JObject)jObject[Misc.Results][guid];
if (json == null)
return null;

var result = new GeneralStats
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ public static class OperatorStatsDeserializer
{
public static IEnumerable<OperatorStats> DeserializeOperatorStatsFor(this JObject jObject, string guid, IEnumerable<OperatorStats> data)
{
var json = (JObject)jObject[Misc.Results]![guid];
var json = jObject[Misc.Results]?[guid] as JObject;

if (json == null)
yield break;

foreach (var op in data.Select(x => x.Clone()))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,17 @@ public static class PlayerLevelStatsDeserializer
{
public static IEnumerable<PlayerLevelStats> DeserializePlayerLevelStats(this JObject jObject)
{
foreach (var element in JArray.FromObject(jObject["player_profiles"]))
var profiles = jObject["player_profiles"];

if (profiles == null)
yield break;

foreach (var profile in JArray.FromObject(profiles))
{
var result = element.ToObject<PlayerLevelStats>();
result.Guid = (string)element["profile_id"];
var result = profile.ToObject<PlayerLevelStats>();

// todo do we need a null check?
result!.Guid = (string)profile["profile_id"];
yield return result;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using DragonFruit.Common.Data.Extensions;
using DragonFruit.Six.API.Data.Strings;
using DragonFruit.Six.API.Enums;
using DragonFruit.Six.API.Utils;
using Newtonsoft.Json.Linq;

namespace DragonFruit.Six.API.Data.Deserializers
Expand All @@ -13,7 +14,10 @@ public static class SeasonStatsDeserializer
{
public static SeasonStats DeserializeSeasonStatsFor(this JObject jObject, string guid)
{
var json = (JObject)jObject[Misc.Players][guid];
var json = jObject[Misc.Players]?[guid] as JObject;

if (json == null)
return null;

return new SeasonStats
{
Expand All @@ -28,7 +32,7 @@ public static SeasonStats DeserializeSeasonStatsFor(this JObject jObject, string
Wins = json.GetUInt(Seasonal.Wins),
Losses = json.GetUInt(Seasonal.Losses),
Abandons = json.GetUInt(Seasonal.Abandons),
WL = json.GetFloat(Seasonal.Wins, 1) / Math.Clamp(json.GetFloat(Seasonal.Losses) + json.GetFloat(Seasonal.Abandons), 1, float.MaxValue),
WL = json.GetFloat(Seasonal.Wins, 1) / MathUtils.Clamp(json.GetFloat(Seasonal.Losses) + json.GetFloat(Seasonal.Abandons), 1, float.MaxValue),

Rank = json.GetUInt(Seasonal.Rank),
MaxRank = json.GetUInt(Seasonal.MaxRank),
Expand Down
12 changes: 8 additions & 4 deletions DragonFruit.Six.API/Data/Deserializers/TokenDeserializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using DragonFruit.Six.API.Data.Containers;
using DragonFruit.Six.API.Data.Strings;
using DragonFruit.Six.API.Data.Tokens;
using DragonFruit.Six.API.Helpers;
using DragonFruit.Six.API.Utils;
using Newtonsoft.Json.Linq;

namespace DragonFruit.Six.API.Data.Deserializers
Expand All @@ -15,14 +15,18 @@ public static class TokenDeserializer
public static UbisoftToken DeserializeToken(this JObject jObject)
{
var token = jObject.ToObject<UbisoftToken>();

if (token == null)
return null;

token.Account = new AccountInfo
{
Platform = PlatformParser.PlatformEnumFor(jObject.GetString(Accounts.PlatformIdentifier, "uplay")),
PlayerName = jObject.GetString(Accounts.Name),
Identifiers = new UserIdentifierContainer
{
Platform = jObject.GetString(Accounts.ProfileIdentifier)
},
Platform = PlatformParser.PlatformEnumFor(jObject.GetString(Accounts.PlatformIdentifier, "uplay")),
PlayerName = jObject.GetString(Accounts.Name),
}
};

return token;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ public static class WeaponStatsDeserializer
{
public static IEnumerable<WeaponStats> DeserializeWeaponStatsFor(this JObject jObject, string guid)
{
var json = (JObject)jObject[Misc.Results][guid];
var json = jObject[Misc.Results]?[guid] as JObject;

if (json == null)
yield break;

foreach (var index in References.WeaponClasses.Keys)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static AccountLoginInfo GetLoginInfo<T>(this T client, AccountInfo accoun

public static IEnumerable<AccountLoginInfo> GetLoginInfo<T>(this T client, IEnumerable<AccountInfo> accounts) where T : Dragon6Client
{
var data = client.Perform<JObject>(new AccountLoginInfoRequest(Endpoints.GameIds.Select(x => x.Value), accounts));
var data = client.Perform<JObject>(new AccountLoginInfoRequest(accounts));
return data.DeserializeAccountLoginInfo();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace DragonFruit.Six.API.Data.Extensions
{
public static class GeneralStatsExtentions
{
public static GeneralStats GetStats<T>(this T client, AccountInfo account) where T : Dragon6Client
public static GeneralStats GetStats<T>(this T client, AccountInfo account) where T : Dragon6Client
=> GetStats(client, new[] { account }).First();

public static IEnumerable<GeneralStats> GetStats<T>(this T client, IEnumerable<AccountInfo> accounts) where T : Dragon6Client
Expand Down
8 changes: 4 additions & 4 deletions DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using DragonFruit.Common.Data.Parameters;
using DragonFruit.Six.API.Data.Requests.Base;
using DragonFruit.Six.API.Enums;
using DragonFruit.Six.API.Helpers;
using DragonFruit.Six.API.Utils;

namespace DragonFruit.Six.API.Data.Requests
{
Expand Down Expand Up @@ -43,12 +43,12 @@ public AccountInfoRequest(Platform platform, LookupMethod lookupMethod, IEnumera
public string PlatformValue => PlatformParser.PlatformIdentifierFor(Platform);

[QueryParameter("nameOnPlatform")]
public string PlayerNames => LookupMethod == LookupMethod.Name ? string.Join(',', LookupQuery) : null;
public string PlayerNames => LookupMethod == LookupMethod.Name ? string.Join(",", LookupQuery) : null;

[QueryParameter("idOnPlatform")]
public string PlatformIds => LookupMethod == LookupMethod.PlatformId ? string.Join(',', LookupQuery) : null;
public string PlatformIds => LookupMethod == LookupMethod.PlatformId ? string.Join(",", LookupQuery) : null;

[QueryParameter("userId")]
public string UbisoftIds => LookupMethod == LookupMethod.UserId ? string.Join(',', LookupQuery) : null;
public string UbisoftIds => LookupMethod == LookupMethod.UserId ? string.Join(",", LookupQuery) : null;
}
}
31 changes: 9 additions & 22 deletions DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,21 @@
using System.Linq;
using DragonFruit.Common.Data.Parameters;
using DragonFruit.Six.API.Data.Requests.Base;
using DragonFruit.Six.API.Utils;

namespace DragonFruit.Six.API.Data.Requests
{
public sealed class AccountLoginInfoRequest : UbiApiRequest
public class AccountLoginInfoRequest : UbiApiRequest
{
public AccountLoginInfoRequest()
public AccountLoginInfoRequest(AccountInfo profile)
: this(new[] { profile })
{
}

public AccountLoginInfoRequest(string appId, AccountInfo profileId)
: this(new[] { appId }, new[] { profileId })
public AccountLoginInfoRequest(IEnumerable<AccountInfo> profiles)
{
}

public AccountLoginInfoRequest(string appId, IEnumerable<AccountInfo> profileIds)
: this(new[] { appId }, profileIds)
{
}

public AccountLoginInfoRequest(IEnumerable<string> appIds, AccountInfo profileId)
: this(appIds, new[] { profileId })
{
}

public AccountLoginInfoRequest(IEnumerable<string> appIds, IEnumerable<AccountInfo> profileIds)
{
AppIds = appIds;
Accounts = profileIds;
Accounts = profiles;
AppIds = UbisoftIdentifiers.GameIds.Values;
}

public override string Path => $"{Endpoints.IdServer}/applications";
Expand All @@ -42,9 +29,9 @@ public AccountLoginInfoRequest(IEnumerable<string> appIds, IEnumerable<AccountIn
public IEnumerable<AccountInfo> Accounts { get; set; }

[QueryParameter("applicationIds")]
public string AppIdString => string.Join(',', AppIds);
public string AppIdString => string.Join(",", AppIds);

[QueryParameter("profileIds")]
public string ProfileIdString => string.Join(',', Accounts.Select(x => x.Identifiers.Profile));
public string ProfileIdString => string.Join(",", Accounts.Select(x => x.Identifiers.Profile));
}
}
5 changes: 2 additions & 3 deletions DragonFruit.Six.API/Data/Requests/Base/BasicStatsRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// Licensed under Apache-2. Please refer to the LICENSE file for more info

using System.Collections.Generic;
using System.Linq;
using DragonFruit.Common.Data.Parameters;

namespace DragonFruit.Six.API.Data.Requests.Base
Expand All @@ -12,7 +11,7 @@ namespace DragonFruit.Six.API.Data.Requests.Base
/// </summary>
public class BasicStatsRequest : PlatformSpecificRequest
{
public override string Path => Endpoints.Stats[Accounts.First().Platform];
public override string Path => Platform.StatsEndpoint();

public BasicStatsRequest(AccountInfo account)
: base(new[] { account })
Expand All @@ -30,6 +29,6 @@ public BasicStatsRequest(IEnumerable<AccountInfo> accounts)
public override string AccountIdString => base.AccountIdString;

[QueryParameter("statistics")]
public string CompiledStats => string.Join(',', Stats);
public string CompiledStats => string.Join(",", Stats);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ protected PlatformSpecificRequest(IEnumerable<AccountInfo> accounts)

public IEnumerable<string> AccountIds => Accounts.Select(x => x.Identifiers.Profile);

public virtual string AccountIdString => string.Join(',', AccountIds);
public virtual string AccountIdString => string.Join(",", AccountIds);
}
}
4 changes: 2 additions & 2 deletions DragonFruit.Six.API/Data/Requests/PlayerLevelStatsRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace DragonFruit.Six.API.Data.Requests
{
public sealed class PlayerLevelStatsRequest : PlatformSpecificRequest
{
public override string Path => Endpoints.ProfileInfo[Platform];
public override string Path => Platform.ProfileStatsEndpoint();

protected override bool RequireAuth => true;

Expand All @@ -25,6 +25,6 @@ public PlayerLevelStatsRequest(IEnumerable<AccountInfo> accounts)
}

[QueryParameter("profile_ids")]
public string CompiledAccounts => string.Join(',', Accounts.Select(x => x.Identifiers.Profile));
public string CompiledAccounts => string.Join(",", Accounts.Select(x => x.Identifiers.Profile));
}
}
4 changes: 2 additions & 2 deletions DragonFruit.Six.API/Data/Requests/SeasonStatsRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace DragonFruit.Six.API.Data.Requests
{
public sealed class SeasonStatsRequest : PlatformSpecificRequest
{
public override string Path => Endpoints.RankedStats[Platform];
public override string Path => Platform.SeasonalStatsEndpoint();

public SeasonStatsRequest(IEnumerable<AccountInfo> accounts)
: base(accounts)
Expand Down Expand Up @@ -42,6 +42,6 @@ public SeasonStatsRequest(IEnumerable<AccountInfo> accounts, int seasonId, strin
public string Region { get; set; } = "EMEA";

[QueryParameter("profile_ids")]
public string CompiledAccounts => string.Join(',', Accounts.Select(x => x.Identifiers.Profile));
public string CompiledAccounts => string.Join(",", Accounts.Select(x => x.Identifiers.Profile));
}
}
4 changes: 2 additions & 2 deletions DragonFruit.Six.API/Dragon6Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
using DragonFruit.Six.API.Data.Tokens;
using DragonFruit.Six.API.Enums;
using DragonFruit.Six.API.Exceptions;
using DragonFruit.Six.API.Helpers;
using DragonFruit.Six.API.Utils;

namespace DragonFruit.Six.API
{
Expand Down Expand Up @@ -41,7 +41,7 @@ protected Dragon6Client(string userAgent, string appId)
protected Dragon6Client()
{
Serializer = new ApiJsonSerializer(References.Culture);
AppId = UbisoftIdentifiers.Websites[UbisoftService.RainbowSix];
AppId = UbisoftService.RainbowSix.AppId();

if (string.IsNullOrEmpty(UserAgent))
{
Expand Down
Loading