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

nl.pvanassen.steam.store.marketpage.MarketPageHandle 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.marketpage;

import nl.pvanassen.steam.http.DefaultHandle;
import org.cyberneko.html.parsers.DOMParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import javax.xml.xpath.XPathExpressionException;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.util.List;

class MarketPageHandle extends DefaultHandle {
    private final Logger logger = LoggerFactory.getLogger(getClass());
    private MarketPage outstandings;
    private boolean error;

    /**
     * {@inheritDoc}
     *
     * @see nl.pvanassen.steam.http.DefaultHandle#handle(java.io.InputStream)
     */
    @Override
    public void handle(InputStream stream) throws IOException {
        DOMParser parser = new DOMParser();
        try {
            parser.parse(new InputSource(stream));
            Document document = parser.getDocument();
            int wallet = Wallet.getWallet(document);
            List items = Outstandings.getOutstandingItems(document);
            int numberOfItems = items.size();
            int amount = items.stream().mapToInt(item -> item.getPrice()).sum();
            List buyOrders = BuyOrder.getBuyOrders(document);
            outstandings = new MarketPage(wallet, numberOfItems, amount, items, buyOrders);
        }
        catch (ParseException | RuntimeException e) {
            logger.error("Error getting outstanding items", e);
            error = true;
        }
        catch (SAXException | XPathExpressionException e) {
            logger.error("Error getting outstanding items", e);
            error = true;
        }
    }
    
    /**
     * {@inheritDoc}
     *
     * @see nl.pvanassen.steam.http.DefaultHandle#handleError(java.io.InputStream)
     */
    @Override
    public void handleError(InputStream stream) {
        logger.error("Error getting outstanding items, error unknown");
        error = true;
    }
    
    @Override
    public void handleException(Exception exception) {
        super.handleException(exception);
        error = true;
    }

    MarketPage getOutstandings() {
        return outstandings;
    }
    
    boolean isError() {
        return error;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy