
nl.pvanassen.steam.store.inventory.SteamInventoryService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of steam-api Show documentation
Show all versions of steam-api Show documentation
A Java API to access the Steam community market through the HTTP interface. This may be against the TOS so be careful using it!
/**
*
*/
package nl.pvanassen.steam.store.inventory;
import com.google.common.collect.ImmutableList;
import nl.pvanassen.steam.error.SteamException;
import nl.pvanassen.steam.http.Http;
import nl.pvanassen.steam.store.common.InventoryItem;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
* @author Paul van Assen
*/
public class SteamInventoryService implements InventoryService {
private final Logger logger = LoggerFactory.getLogger(getClass());
private final ObjectMapper objectMapper = new ObjectMapper();
private final Set appIds;
private final Http http;
private final String username;
/**
* @param http For mocking
* @param username Username for referals
* @param appIds The known app ids
*/
public SteamInventoryService(Http http, String username, Set appIds) {
this.http = http;
this.username = username;
this.appIds = appIds;
}
/**
* {@inheritDoc}
*
* @see nl.pvanassen.steam.store.inventory.InventoryService#getInventory()
*/
@Override
public List getInventory() {
return getInventory(username);
}
@Override
public List getInventory(int appId) {
return getInventory(username, appId);
}
@Override
public List getInventory(String username) {
List inventoryItems = new LinkedList<>();
for (int appId : appIds) {
inventoryItems.addAll(getInventory(username, appId));
}
return ImmutableList.copyOf(inventoryItems);
}
@Override
public List getInventory(String username, int appId) {
List inventoryItems = new LinkedList<>();
int contextId = 2;
if (appId == 753) {
contextId = 6;
}
logger.info("Getting inventory for app id " + appId);
InventoryHandle handle = new InventoryHandle(objectMapper, contextId, inventoryItems);
http.get("http://steamcommunity.com/id/" + username + "/inventory/json/" + appId + "/" + contextId + "/", handle, false, false);
if (handle.isError()) {
logger.error("Error fetching inventory data");
throw new SteamException("Error fetching inventory data");
}
return ImmutableList.copyOf(inventoryItems);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy