Skip to content

Commit c4bdd7c

Browse files
author
Justin
committed
Fixed broken JSON deserialization for games that treat Linux Requirements as an array.
1 parent cd17957 commit c4bdd7c

4 files changed

Lines changed: 32 additions & 80 deletions

File tree

src/SteamWebAPI2.sln

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.25420.1
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.26430.13
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SteamWebAPI2.Net45", "SteamWebAPI2.Net45\SteamWebAPI2.Net45.csproj", "{F5BE3B4F-5F56-45CB-9EEB-2BC017AC8EB5}"
77
EndProject
88
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SteamWebAPI2.Tests", "SteamWebAPI2.Tests\SteamWebAPI2.Tests.csproj", "{F4FE4936-40E5-4AB7-8DAD-CA0B46CCDCAF}"
99
EndProject
10-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SteamWebAPI2", "SteamWebAPI2\SteamWebAPI2.xproj", "{A4D36673-FACF-48B5-9041-1A5F48D4AB34}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SteamWebAPI2", "SteamWebAPI2\SteamWebAPI2.csproj", "{080CE01B-DD59-4F60-951C-95F47DF644D9}"
1111
EndProject
1212
Global
1313
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -53,22 +53,22 @@ Global
5353
{F4FE4936-40E5-4AB7-8DAD-CA0B46CCDCAF}.Release|x64.Build.0 = Release|Any CPU
5454
{F4FE4936-40E5-4AB7-8DAD-CA0B46CCDCAF}.Release|x86.ActiveCfg = Release|Any CPU
5555
{F4FE4936-40E5-4AB7-8DAD-CA0B46CCDCAF}.Release|x86.Build.0 = Release|Any CPU
56-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|Any CPU.Build.0 = Debug|Any CPU
58-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|ARM.ActiveCfg = Debug|Any CPU
59-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|ARM.Build.0 = Debug|Any CPU
60-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|x64.ActiveCfg = Debug|Any CPU
61-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|x64.Build.0 = Debug|Any CPU
62-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|x86.ActiveCfg = Debug|Any CPU
63-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Debug|x86.Build.0 = Debug|Any CPU
64-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|Any CPU.ActiveCfg = Release|Any CPU
65-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|Any CPU.Build.0 = Release|Any CPU
66-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|ARM.ActiveCfg = Release|Any CPU
67-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|ARM.Build.0 = Release|Any CPU
68-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|x64.ActiveCfg = Release|Any CPU
69-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|x64.Build.0 = Release|Any CPU
70-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|x86.ActiveCfg = Release|Any CPU
71-
{A4D36673-FACF-48B5-9041-1A5F48D4AB34}.Release|x86.Build.0 = Release|Any CPU
56+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
58+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|ARM.ActiveCfg = Debug|Any CPU
59+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|ARM.Build.0 = Debug|Any CPU
60+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|x64.ActiveCfg = Debug|Any CPU
61+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|x64.Build.0 = Debug|Any CPU
62+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|x86.ActiveCfg = Debug|Any CPU
63+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Debug|x86.Build.0 = Debug|Any CPU
64+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
65+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|Any CPU.Build.0 = Release|Any CPU
66+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|ARM.ActiveCfg = Release|Any CPU
67+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|ARM.Build.0 = Release|Any CPU
68+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|x64.ActiveCfg = Release|Any CPU
69+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|x64.Build.0 = Release|Any CPU
70+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|x86.ActiveCfg = Release|Any CPU
71+
{080CE01B-DD59-4F60-951C-95F47DF644D9}.Release|x86.Build.0 = Release|Any CPU
7272
EndGlobalSection
7373
GlobalSection(SolutionProperties) = preSolution
7474
HideSolutionNode = FALSE

src/SteamWebAPI2/Utilities/JsonConverters/StoreAppDetailsContainerJsonConverter.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,20 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
3131

3232
foreach (var x in o)
3333
{
34-
// Edit by Jir : Previously returning Data; should return the correct object AppDetailsContainer instead. Sorry for ugly code
35-
var data = x.Value["data"].ToObject<Data>();
36-
var success = x.Value["success"].ToObject<bool>();
37-
AppDetailsContainer appDetailsContainer = new AppDetailsContainer { Data = data, Success = success };
38-
return appDetailsContainer;
34+
var dataToken = x.Value["data"];
35+
36+
// For some reason, some games treat this as an array? For example, App ID 380 has an empty array here. I don't know how to simultaneously serialize this to an object and an array, so just ignore the weird arrays.
37+
var linuxRequirementsToken = dataToken["linux_requirements"];
38+
if (linuxRequirementsToken != null && linuxRequirementsToken.Type == JTokenType.Array)
39+
{
40+
dataToken["linux_requirements"] = null;
41+
}
3942

40-
// return data;
43+
var dataObject = dataToken.ToObject<Data>();
44+
var successValue = x.Value["success"].ToObject<bool>();
45+
46+
AppDetailsContainer appDetailsContainer = new AppDetailsContainer { Data = dataObject, Success = successValue };
47+
return appDetailsContainer;
4148
}
4249

4350
return null;

src/SteamWebAPI2/backup/SteamWebAPI2.xproj

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/SteamWebAPI2/backup/project.json

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)