1.1.0 • Published 6 years ago

@xfaider/node-steam-inventory v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

node-steam-inventory

npm version

A module for interacting with steam for getting users inventory

Two endpoints

Steam has two endpoints:

You can see their differences in stackoverflow. In this module you can use both of them.

Installation

npm install @xfaider/node-steam-inventory

Usage

var steamInventoryModule = require('@xfaider/node-steam-inventory');
var steamInventory = new steamInventoryModule.SteamUserInventory(options);

Constructor params

Params:

  • options[defaultGotOptions]: default options for got module for all call methods. Default: {}.

Basic usage

steamInventory.loadAndFormat({
    steamId: userSteamId
}).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});

API

Instance methods

loadFromOldEndPoint

Load steam inventory from old endpoint

steamInventory.loadFromOldEndPoint(params).then(response => {
    console.log(response);
    // `got` response`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for request
params[steamId]String|NumberEmpty stringUser steam id
params[appId]Number730 (CSGO App id)Steam application id
params[contextId]Number2Steam context id
params[gotOptions]Object{}Options for got module

loadFromOldEndPointAndFormat

Load steam inventory from old endpoint and format data

steamInventory.loadFromOldEndPointAndFormat(params).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for method loadFromOldEndPoint

loadFromNewEndPoint

Load steam inventory from new endpoint

steamInventory.loadFromNewEndPoint(params).then(response => {
    console.log(response);
    // `got` response`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for request
params[steamId]String|NumberEmpty stringUser steam id
params[appId]Number730 (CSGO App id)Steam application id
params[contextId]Number2Steam context id
params[language]StringenglishLanguage for some fields in response
params[count]Number5000 (For steam maximum is 5000)Limit of items in response
params[cursor]String|NumbernullAsset id of steam item working as cursor for pagination
params[gotOptions]Object{}Options for got module

loadAllDataFromNewEndPoint

Load steam inventory from new endpoint with all pages fetching. Because of highly ratelimited steam endpoint , you need to use different IPs, or different proxies for each request (use getGotOptionsPromise for it)

steamInventory.loadAllDataFromNewEndPoint(params, getGotOptionsPromise).then(responses => {
    console.log(responses);
    // array of `got` responses
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for request
params[steamId]String|NumberEmpty stringUser steam id
params[appId]Number730 (CSGO App id)Steam application id
params[contextId]Number2Steam context id
params[language]StringenglishLanguage for some fields in response
params[perPage]Number5000 (For steam maximum is 5000)Limit of items per response
params[gotOptions]Object{}Options for got module
getGotOptionsPromiseFunctionreturn Promise.resolve(params.gotOptions)Function returning Promise, resolving gotOptions for each request

loadFromNewEndPointAndFormat

Load steam inventory from new endpoint and format data

steamInventory.loadFromNewEndPointAndFormat(params).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for method loadFromNewEndPoint

loadFromNewEndPointNextPage

Load next page steam inventory from new endpoint

steamInventory.loadFromNewEndPointNextPage(params, previousResponse).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for method loadFromNewEndPoint
previousResponseObjectundefinedSteam response from new endpoint

loadAllDataFromNewEndPointAndFormat

Load steam inventory from new endpoint with all pages fetching and format it

steamInventory.loadAllDataFromNewEndPointAndFormat(params, getGotOptionsPromise).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for method loadAllDataFromNewEndPoint
getGotOptionsPromiseFunctionnullSee this parameter in loadAllDataFromNewEndPoint

load

Load steam inventory from new or old endpoints

steamInventory.load(params, useNewEndPoint, getGotOptionsPromise).then(responses => {
    console.log(responses);
    // array of `got` responses
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for method loadAllDataFromNewEndPoint or loadFromOldEndPoint
useNewEndPointBooleantrueFlag for using new endpoint (or old)
getGotOptionsPromiseFunctionnullSee this parameter in loadAllDataFromNewEndPoint

loadAndFormat

Main method. Load steam inventory from new or old endpoints and format it

steamInventory.loadAndFormat(params, useNewEndPoint, getGotOptionsPromise).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
paramsObjectundefinedParameters for method loadAllDataFromNewEndPointAndFormat or loadFromOldEndPointAndFormat
useNewEndPointBooleantrueFlag for using new endpoint (or old)
getGotOptionsPromiseFunctionnullSee this parameter in loadAllDataFromNewEndPointAndFormat

Static methods

requestJSON

JSON request

SteamUserInventory.requestJSON(url, gotOptions).then(respone => {
    console.log(response);
    // `got` response
});
ParameterTypeDefaultDescription
urlStringundefinedURL for request
gotOptionsObjectundefinedOptions for got module

getItemClassInstanceString

Get item special string class_id + _ + instance_id

let steamItem = {classid: 98, instanceid: 115};
SteamUserInventory.getItemClassInstanceString(steamItem).then(str => {
    console.log(str);
    // 98_115
});
ParameterTypeDefaultDescription
steamItemObjectundefinedSteam item object from response
steamItem[classid]String|NumberundefinedSteam item class_id
steamItem[instanceid]String|NumberundefinedSteam item instance_id

getItemImageUrl

Get item image (normal or large)

let steamItem = {icon_url_large: '__href__'};
let large = true;
SteamUserInventory.getItemImageUrl(steamItem, large).then(str => {
    console.log(str);
    // https://steamcommunity-a.akamaihd.net/economy/image/__href__
});
ParameterTypeDefaultDescription
steamItemObjectundefinedSteam item object from response
steamItem[icon_url_large]StringundefinedSteam item icon_url_large
steamItem[icon_url]StringundefinedSteam item icon_url
largeBooleantrueGet large image flag

getInspectItemLink

Get item inspect link

let steamItem = {
    actions: [
        {item: 'Inspect in Game...', link: 'test_link'}
    ]
};
SteamUserInventory.getInspectItemLink(steamItem).then(str => {
    console.log(str);
    // test_link
});
ParameterTypeDefaultDescription
steamItemObjectundefinedSteam item object from response
steamItem[actions]ArrayundefinedSteam item actions

formatItem

Format item

SteamUserInventory.formatItem(itemData).then(formatted => {
    console.log(formatted);
    // {
    //     id: '14364197067',
    //     assetId: '14364197067',
    //     amount: '1',
    //     classId: '2777986317',
    //     instanceId: '188530139',
    //     raw: { base: [Object], description: [Object] },
    //     appId: 730,
    //     name: 'Five-SeveN | Monkey Business',
    //     marketHashName: 'Five-SeveN | Monkey Business (Well-Worn)',
    //     tradable: 1,
    //     marketable: 1,
    //     marketTradableRestriction: 7,
    //     link: 'steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S%owner_steamid%A%assetid%D11673583149302548085',
    //     imageLarge: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposLOzLhRlxfbGTj5X09q_goWYkuHxPYTTl2VQ5sROh-zF_Jn4t1i1uRQ5fTvzdoGWdwdvMFzU_FbolerujJHptcjAwXo37yUrtyuOyRbliU4aPOdxxavJhXiz6dw',
    //     imageSmall: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposLOzLhRlxfbGTj5X09q_goWYkuHxPYTTl2VQ5sROh-zF_Jn4xlbkqURvZmiidYKRdAFoNVzR81bryLvmjZ7o6ZjAmyYw7CNw7SmLzRepwUYbn3RWfTI',
    //     image: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposLOzLhRlxfbGTj5X09q_goWYkuHxPYTTl2VQ5sROh-zF_Jn4t1i1uRQ5fTvzdoGWdwdvMFzU_FbolerujJHptcjAwXo37yUrtyuOyRbliU4aPOdxxavJhXiz6dw',
    //     category: null,
    //     type: undefined,
    //     exterior: undefined,
    //     quality: undefined
    // }
});
ParameterTypeDefaultDescription
steamItemObjectundefinedSteam item object from response
steamItem[base]ObjectundefinedBase steam item data
steamItem[description]ObjectundefinedDescription steam item data

formatData

Format response data (result is array of objects formatted by formatItem)

SteamUserInventory.formatData(items, descriptions).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
itemsObjectundefinedObject with base item data
descriptionsObjectundefinedObject with description item data

formatDataFromOldEndPoint

Format response data from old endpoint(see result formatData)

SteamUserInventory.formatDataFromOldEndPoint(data).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
dataObjectundefinedData in response from old steam endpoint

formatDataFromNewEndPoint

Format response data from new endpoint(see result formatData)

SteamUserInventory.formatDataFromNewEndPoint(data).then(formattedArray => {
    console.log(formattedArray);
    // Array of objects formatted by `formatItem`
});
ParameterTypeDefaultDescription
dataObjectundefinedData in response from new steam endpoint