Skip to content

Commit 425cbc4

Browse files
authored
Merge pull request #44 from MihajloNesic/feature/tf2-player-items
Implement TF2 GetPlayerItems
2 parents 7f77abf + a031c61 commit 425cbc4

File tree

13 files changed

+35436
-32
lines changed

13 files changed

+35436
-32
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ mvn clean deploy -P release
234234
- [Pazus](https://github.com/Pazus)
235235
- [41zu](https://github.com/41zu)
236236
- [Joey Bleau](https://github.com/josephbleau)
237+
- [Mihajlo Nesic](https://github.com/MihajloNesic)
237238

238239
## License
239240

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,16 @@
399399
<sourceDirectory>${basedir}/src/main/resources/com/lukaspradel/steamapi/schema/resolvevanityurl</sourceDirectory>
400400
</configuration>
401401
</execution>
402+
<execution>
403+
<id>generate-getplayeritems</id>
404+
<goals>
405+
<goal>generate</goal>
406+
</goals>
407+
<configuration>
408+
<targetPackage>com.lukaspradel.steamapi.data.json.tf2.getplayeritems</targetPackage>
409+
<sourceDirectory>${basedir}/src/main/resources/com/lukaspradel/steamapi/schema/tf2/getplayeritems</sourceDirectory>
410+
</configuration>
411+
</execution>
402412
</executions>
403413
</plugin>
404414
<plugin>

src/main/java/com/lukaspradel/steamapi/webapi/core/SteamWebApiInterface.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@
1111
*/
1212
public enum SteamWebApiInterface {
1313

14-
I_STEAM_NEWS("ISteamNews"), I_PLAYER_SERVICE("IPlayerService"), I_STEAM_USER(
15-
"ISteamUser"), I_STEAM_USER_STATS("ISteamUserStats"), I_ECON_DOTA2(
16-
"IEconDOTA2_570"), I_DOTA2_MATCH("IDOTA2Match_570"), I_DOTA2_FANTASY(
17-
"IDOTA2Fantasy_570"), I_STEAM_APPS("ISteamApps");
14+
I_STEAM_NEWS("ISteamNews"),
15+
I_PLAYER_SERVICE("IPlayerService"),
16+
I_STEAM_USER("ISteamUser"),
17+
I_STEAM_USER_STATS("ISteamUserStats"),
18+
I_ECON_DOTA2("IEconDOTA2_570"),
19+
I_DOTA2_MATCH("IDOTA2Match_570"),
20+
I_DOTA2_FANTASY("IDOTA2Fantasy_570"),
21+
I_ECON_TF2("IEconItems_440"),
22+
I_STEAM_APPS("ISteamApps");
1823

1924
private final String apiInterface;
2025

@@ -89,6 +94,8 @@ public static SteamWebApiInterface getInterfaceForMethod(
8994
return I_STEAM_APPS;
9095
case RESOLVE_VANITY_URL:
9196
return I_STEAM_USER;
97+
case GET_PLAYER_ITEMS:
98+
return I_ECON_TF2;
9299
default:
93100
throw new IllegalArgumentException(
94101
"Unsupported Web API Interface method!");

src/main/java/com/lukaspradel/steamapi/webapi/core/SteamWebApiInterfaceMethod.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.lukaspradel.steamapi.data.json.dota2.gameitems.GetGameItems;
2626
import com.lukaspradel.steamapi.data.json.dota2.proplayerlist.GetProPlayerList;
2727
import com.lukaspradel.steamapi.data.json.applist.GetAppList;
28+
import com.lukaspradel.steamapi.data.json.tf2.getplayeritems.GetPlayerItems;
2829

2930

3031
/**
@@ -39,33 +40,32 @@
3940
*/
4041
public enum SteamWebApiInterfaceMethod {
4142

42-
GET_NEWS_FOR_APP("GetNewsForApp", GetNewsForApp.class), GET_GLOBAL_ACHIEVEMENT_PERCENTAGES_FOR_APP(
43-
"GetGlobalAchievementPercentagesForApp",
44-
GetGlobalAchievementPercentagesForApp.class), GET_GLOBAL_STATS_FOR_GAME(
45-
"GetGlobalStatsForGame", GetGlobalStatsForGame.class), GET_PLAYER_SUMMARIES(
46-
"GetPlayerSummaries", GetPlayerSummaries.class), GET_FRIEND_LIST(
47-
"GetFriendList", GetFriendList.class), GET_PLAYER_ACHIEVEMENTS(
48-
"GetPlayerAchievements", GetPlayerAchievements.class), GET_USER_STATS_FOR_GAME(
49-
"GetUserStatsForGame", GetUserStatsForGame.class), GET_OWNED_GAMES(
50-
"GetOwnedGames", GetOwnedGames.class), GET_RECENTLY_PLAYED_GAMES(
51-
"GetRecentlyPlayedGames", GetRecentlyPlayedGames.class), IS_PLAYING_SHARED_GAME(
52-
"IsPlayingSharedGame", IsPlayingSharedGame.class), GET_SCHEMA_FOR_GAME(
53-
"GetSchemaForGame", GetSchemaForGame.class), GET_PLAYER_BANS(
54-
"GetPlayerBans", GetPlayerBans.class), GET_HEROES(
55-
"GetHeroes",GetHeroes.class), GET_MATCH_DETAILS(
56-
"GetMatchDetails",GetMatchDetails.class), GET_MATCH_HISTORY(
57-
"GetMatchHistory",GetMatchHistory.class), GET_LEAGUE_LISTING(
58-
"GetLeagueListing",GetLeagueListing.class), GET_LIVE_LEAGUE_GAMES(
59-
"GetLiveLeagueGames",GetLiveLeagueGames.class), GET_MATCH_HISTORY_BY_SEQUENCE_NUM(
60-
"GetMatchHistoryBySequenceNum",GetMatchHistoryBySequenceNum.class), GET_TEAM_INFO_BY_TEAM_ID(
61-
"GetTeamInfoByTeamID",GetTeamInfoByTeamID.class), GET_GAME_ITEMS(
62-
"GetGameItems",GetGameItems.class), GET_PRO_PLAYER_LIST(
63-
"GetProPlayerList",GetProPlayerList.class), GET_PLAYER_OFFICIAL_INFO(
64-
"GetPlayerOfficialInfo",GetPlayerOfficialInfo.class), GET_FANTASY_PLAYER_STATS(
65-
"GetFantasyPlayerStats",GetFantasyPlayerStats.class), GET_APP_LIST(
66-
"GetAppList", GetAppList.class), RESOLVE_VANITY_URL(
67-
"ResolveVanityURL", ResolveVanityURL.class)
68-
;
43+
GET_NEWS_FOR_APP("GetNewsForApp", GetNewsForApp.class),
44+
GET_GLOBAL_ACHIEVEMENT_PERCENTAGES_FOR_APP("GetGlobalAchievementPercentagesForApp", GetGlobalAchievementPercentagesForApp.class),
45+
GET_GLOBAL_STATS_FOR_GAME("GetGlobalStatsForGame", GetGlobalStatsForGame.class),
46+
GET_PLAYER_SUMMARIES("GetPlayerSummaries", GetPlayerSummaries.class),
47+
GET_FRIEND_LIST("GetFriendList", GetFriendList.class),
48+
GET_PLAYER_ACHIEVEMENTS("GetPlayerAchievements", GetPlayerAchievements.class),
49+
GET_USER_STATS_FOR_GAME("GetUserStatsForGame", GetUserStatsForGame.class),
50+
GET_OWNED_GAMES("GetOwnedGames", GetOwnedGames.class),
51+
GET_RECENTLY_PLAYED_GAMES("GetRecentlyPlayedGames", GetRecentlyPlayedGames.class),
52+
IS_PLAYING_SHARED_GAME("IsPlayingSharedGame", IsPlayingSharedGame.class),
53+
GET_SCHEMA_FOR_GAME("GetSchemaForGame", GetSchemaForGame.class),
54+
GET_PLAYER_BANS("GetPlayerBans", GetPlayerBans.class),
55+
GET_HEROES("GetHeroes", GetHeroes.class),
56+
GET_MATCH_DETAILS("GetMatchDetails", GetMatchDetails.class),
57+
GET_MATCH_HISTORY("GetMatchHistory", GetMatchHistory.class),
58+
GET_LEAGUE_LISTING("GetLeagueListing", GetLeagueListing.class),
59+
GET_LIVE_LEAGUE_GAMES("GetLiveLeagueGames", GetLiveLeagueGames.class),
60+
GET_MATCH_HISTORY_BY_SEQUENCE_NUM("GetMatchHistoryBySequenceNum", GetMatchHistoryBySequenceNum.class),
61+
GET_TEAM_INFO_BY_TEAM_ID("GetTeamInfoByTeamID", GetTeamInfoByTeamID.class),
62+
GET_GAME_ITEMS("GetGameItems", GetGameItems.class),
63+
GET_PRO_PLAYER_LIST("GetProPlayerList", GetProPlayerList.class),
64+
GET_PLAYER_OFFICIAL_INFO("GetPlayerOfficialInfo", GetPlayerOfficialInfo.class),
65+
GET_FANTASY_PLAYER_STATS("GetFantasyPlayerStats", GetFantasyPlayerStats.class),
66+
GET_APP_LIST("GetAppList", GetAppList.class),
67+
RESOLVE_VANITY_URL("ResolveVanityURL", ResolveVanityURL.class),
68+
GET_PLAYER_ITEMS("GetPlayerItems", GetPlayerItems.class);
6969

7070
private final String interfaceMethod;
7171

src/main/java/com/lukaspradel/steamapi/webapi/core/SteamWebApiVersion.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
*/
1010
public enum SteamWebApiVersion {
1111

12-
VERSION_ONE("v0001"), VERSION_TWO("v0002");
12+
VERSION_ONE("v0001"),
13+
VERSION_TWO("v0002");
1314

1415
private final String version;
1516

@@ -84,6 +85,8 @@ public static SteamWebApiVersion getCurrentVersionForWebApiInterfaceMethod(
8485
return VERSION_TWO;
8586
case RESOLVE_VANITY_URL:
8687
return VERSION_ONE;
88+
case GET_PLAYER_ITEMS:
89+
return VERSION_ONE;
8790
default:
8891
throw new IllegalArgumentException(
8992
"Unsupported Web API Interface method!");

src/main/java/com/lukaspradel/steamapi/webapi/request/builders/SteamWebApiRequestFactory.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
import com.lukaspradel.steamapi.webapi.request.dota2.GetProPlayerListRequest.GetProPlayerListRequestBuilder;
5252
import com.lukaspradel.steamapi.webapi.request.dota2.GetTeamInfoByTeamIDRequest;
5353
import com.lukaspradel.steamapi.webapi.request.dota2.GetTeamInfoByTeamIDRequest.GetTeamInfoByTeamIDRequestBuilder;
54+
import com.lukaspradel.steamapi.webapi.request.tf2.GetPlayerItemsRequest;
55+
import com.lukaspradel.steamapi.webapi.request.tf2.GetPlayerItemsRequest.GetPlayerItemsRequestBuilder;
5456

5557
import java.util.Date;
5658
import java.util.List;
@@ -272,4 +274,8 @@ public static ResolveVanityUrlRequest createResolveVanityUrlRequest(String vanit
272274
.urlType(urlType)
273275
.buildRequest();
274276
}
277+
278+
public static GetPlayerItemsRequest createGetPlayerItemsRequest(String steamId) {
279+
return new GetPlayerItemsRequestBuilder(steamId).buildRequest();
280+
}
275281
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.lukaspradel.steamapi.webapi.request.tf2;
2+
3+
import com.lukaspradel.steamapi.webapi.core.SteamWebApiInterface;
4+
import com.lukaspradel.steamapi.webapi.core.SteamWebApiInterfaceMethod;
5+
import com.lukaspradel.steamapi.webapi.core.SteamWebApiVersion;
6+
import com.lukaspradel.steamapi.webapi.request.SteamWebApiRequest;
7+
import com.lukaspradel.steamapi.webapi.request.builders.AbstractSteamWebApiRequestBuilder;
8+
9+
/**
10+
* Steam Web API Request Team Fortress 2 inventory
11+
*
12+
* @see <a href=
13+
* "https://wiki.teamfortress.com/wiki/WebAPI/GetPlayerItems"
14+
* >https://wiki.teamfortress.com/wiki/WebAPI/GetPlayerItems</a>
15+
* @author Mihajlo Nesic
16+
*
17+
*/
18+
public class GetPlayerItemsRequest extends SteamWebApiRequest {
19+
20+
public GetPlayerItemsRequest(SteamWebApiRequestBuilder builder) {
21+
super(builder);
22+
}
23+
24+
public static class GetPlayerItemsRequestBuilder extends AbstractSteamWebApiRequestBuilder {
25+
private String steamId;
26+
27+
public static final String REQUEST_PARAM_STEAM_ID = "steamid";
28+
29+
public GetPlayerItemsRequestBuilder(String steamId) {
30+
if (steamId == null || steamId.isEmpty()) {
31+
throw new IllegalArgumentException("You must supply Steam ID!");
32+
}
33+
this.steamId = steamId;
34+
}
35+
36+
@Override
37+
protected SteamWebApiVersion getVersion() {
38+
return SteamWebApiVersion.VERSION_ONE;
39+
}
40+
41+
@Override
42+
protected SteamWebApiInterface getInterface() {
43+
return SteamWebApiInterface.I_ECON_TF2;
44+
}
45+
46+
@Override
47+
protected SteamWebApiInterfaceMethod getInterfaceMethod() {
48+
return SteamWebApiInterfaceMethod.GET_PLAYER_ITEMS;
49+
}
50+
51+
@Override
52+
public GetPlayerItemsRequest buildRequest() {
53+
addParameter(REQUEST_PARAM_STEAM_ID, steamId);
54+
return new GetPlayerItemsRequest(this);
55+
}
56+
}
57+
}

src/main/java/module-info.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@
3030
exports com.lukaspradel.steamapi.data.json.playersummaries;
3131
exports com.lukaspradel.steamapi.data.json.recentlyplayedgames;
3232
exports com.lukaspradel.steamapi.data.json.resolvevanityurl;
33+
exports com.lukaspradel.steamapi.data.json.tf2.getplayeritems;
3334
exports com.lukaspradel.steamapi.webapi.client;
3435
exports com.lukaspradel.steamapi.webapi.core;
3536
exports com.lukaspradel.steamapi.webapi.request;
3637
exports com.lukaspradel.steamapi.webapi.request.builders;
3738
exports com.lukaspradel.steamapi.webapi.request.dota2;
39+
exports com.lukaspradel.steamapi.webapi.request.tf2;
3840
}
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
{
2+
"type": "object",
3+
"javaType": "com.lukaspradel.steamapi.data.json.tf2.getplayeritems.GetPlayerItems",
4+
"properties": {
5+
"result": {
6+
"type": "object",
7+
"required": true,
8+
"properties": {
9+
"status": {
10+
"type": "integer",
11+
"required": true
12+
},
13+
"num_backpack_slots": {
14+
"type": "integer",
15+
"required": true
16+
},
17+
"items": {
18+
"type": "array",
19+
"required": true,
20+
"items": {
21+
"type": "object",
22+
"properties": {
23+
"id": {
24+
"type": "integer",
25+
"required": true
26+
},
27+
"original_id": {
28+
"type": "integer",
29+
"required": true
30+
},
31+
"defindex": {
32+
"type": "integer",
33+
"required": true
34+
},
35+
"level": {
36+
"type": "integer",
37+
"required": true
38+
},
39+
"quality": {
40+
"type": "integer",
41+
"required": true
42+
},
43+
"inventory": {
44+
"type": "integer",
45+
"required": true
46+
},
47+
"quantity": {
48+
"type": "integer",
49+
"required": true
50+
},
51+
"origin": {
52+
"type": "integer",
53+
"required": true
54+
},
55+
"flag_cannot_trade": {
56+
"type": "boolean"
57+
},
58+
"attributes": {
59+
"type": "array",
60+
"items": {
61+
"type": "object",
62+
"properties": {
63+
"defindex": {
64+
"type": "integer",
65+
"required": true
66+
},
67+
"value": {
68+
"required": true
69+
},
70+
"float_value": {
71+
"type": "number"
72+
},
73+
"account_info": {
74+
"type": "object",
75+
"properties": {
76+
"steamid": {
77+
"type": "integer",
78+
"required": true
79+
},
80+
"personaname": {
81+
"type": "string",
82+
"required": true
83+
}
84+
}
85+
},
86+
"is_output": {
87+
"type": "boolean"
88+
},
89+
"quantity": {
90+
"type": "integer"
91+
},
92+
"quality": {
93+
"type": "integer"
94+
},
95+
"match_all_attribs": {
96+
"type": "boolean"
97+
},
98+
"attributes": {
99+
"type": "array",
100+
"items": {
101+
"type": "object",
102+
"properties": {
103+
"defindex": {
104+
"type": "integer",
105+
"required": true
106+
},
107+
"value": {
108+
"type": "integer",
109+
"required": true
110+
},
111+
"float_value": {
112+
"type": "number",
113+
"required": true
114+
}
115+
}
116+
}
117+
},
118+
"itemdef": {
119+
"type": "integer"
120+
}
121+
}
122+
}
123+
},
124+
"style": {
125+
"type": "integer"
126+
},
127+
"equipped": {
128+
"type": "array",
129+
"items": {
130+
"type": "object",
131+
"properties": {
132+
"class": {
133+
"type": "integer",
134+
"required": true
135+
},
136+
"slot": {
137+
"type": "integer",
138+
"required": true
139+
}
140+
}
141+
}
142+
},
143+
"flag_cannot_craft": {
144+
"type": "boolean"
145+
},
146+
"custom_name": {
147+
"type": "string"
148+
},
149+
"custom_desc": {
150+
"type": "string"
151+
}
152+
}
153+
}
154+
}
155+
}
156+
}
157+
}
158+
}

0 commit comments

Comments
 (0)