All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nl.pvanassen.steam.store.inventory.SteamInventoryService Maven / Gradle / Ivy

Go to download

A Java API to access the Steam community market through the HTTP interface. This may be against the TOS so be careful using it!

There is a newer version: 3.0.8
Show newest version
/**
 *
 */
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