Skip to content

Commit 8544805

Browse files
Added pagination to EconItems#GetSchemaItemsForTF2Async() (#105)
* Updated Next property to be of type uint? If this is too breaking a change, a consideration for `uint` with a default value of 0 would work, but 0 is still a valid value for "start" on the request. * Updated IEconItems/EconItems#GetSchemaItemsForTF2Async. added a `uint? start = null` optional property. * Modified unit tests to take the new Next/start combination. This verifies that both a) the Next property is valid on each request, and b) that passing `start` along works as intended. This replaces the original test, but could be put alongside it instead.
1 parent fa65bf0 commit 8544805

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

src/Steam.UnitTests/EconItemsTeamFortress2Tests.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,17 @@ public EconItemsTeamFortress2Tests()
2020
[Fact]
2121
public async Task GetSchemaItemsForTF2Async_Should_Succeed()
2222
{
23-
var response = await steamInterface.GetSchemaItemsForTF2Async();
24-
Assert.NotNull(response);
25-
Assert.NotNull(response.Data);
23+
uint? next = null;
24+
25+
do
26+
{
27+
var response = await steamInterface.GetSchemaItemsForTF2Async(start: next);
28+
Assert.NotNull(response);
29+
Assert.NotNull(response.Data);
30+
31+
next = response.Data.Result.Next;
32+
}
33+
while (next.HasValue);
2634
}
2735

2836
[Fact]

src/SteamWebAPI2/Interfaces/EconItems.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public async Task<ISteamWebResponse<EconItemResultModel>> GetPlayerItemsAsync(ul
8181
/// </summary>
8282
/// <param name="language"></param>
8383
/// <returns></returns>
84-
public async Task<ISteamWebResponse<SchemaItemsResultContainer>> GetSchemaItemsForTF2Async(string language = "en_us")
84+
public async Task<ISteamWebResponse<SchemaItemsResultContainer>> GetSchemaItemsForTF2Async(string language = "en_us", uint? start = null)
8585
{
8686
if (appId != (int)AppId.TeamFortress2)
8787
{
@@ -91,6 +91,7 @@ public async Task<ISteamWebResponse<SchemaItemsResultContainer>> GetSchemaItemsF
9191
List<SteamWebRequestParameter> parameters = new List<SteamWebRequestParameter>();
9292

9393
parameters.AddIfHasValue(language, "language");
94+
parameters.AddIfHasValue(start, "start");
9495

9596
var steamWebResponse = await steamWebInterface.GetAsync<SchemaItemsResultContainer>("GetSchemaItems", 1, parameters);
9697

src/SteamWebAPI2/Interfaces/IEconItems.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public interface IEconItems
88
{
99
Task<ISteamWebResponse<EconItemResultModel>> GetPlayerItemsAsync(ulong steamId);
1010

11-
Task<ISteamWebResponse<SteamWebAPI2.Models.GameEconomy.SchemaItemsResultContainer>> GetSchemaItemsForTF2Async(string language = "en_us");
11+
Task<ISteamWebResponse<SteamWebAPI2.Models.GameEconomy.SchemaItemsResultContainer>> GetSchemaItemsForTF2Async(string language = "en_us", uint? start = null);
1212

1313
Task<ISteamWebResponse<SteamWebAPI2.Models.GameEconomy.SchemaOverviewResultContainer>> GetSchemaOverviewForTF2Async(string language = "en_us");
1414

src/SteamWebAPI2/Models/GameEconomy/SchemaItemResultContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class SchemaItemsResult
1515
public IList<SchemaItem> Items { get; set; }
1616

1717
[JsonProperty("next")]
18-
public uint Next { get; set; }
18+
public uint? Next { get; set; }
1919
}
2020

2121
public class SchemaItemsResultContainer

0 commit comments

Comments
 (0)