Powerful async/await based Node.js implementation of OPSkins WAX ExpressTrade.
Stop wasting time on coding endpoint communication, event polling and bothering with two factor authentication - just pass your api key with secret and use methods out-of-the-box.
INFO FOR v.1.1: API has changed a lot from now - please update your code before updating wax-expresstrade library to the newest version.
npm i wax-expresstrade --save
🔄 We base on official implementation - it means, that interfaces, methods and responses are identically named as in documentation. E.g. IUser/GetInventory refers to API.IUser.GetInventory()
method.
🚀 The entire module is async/await friendly - so you do not need to worry about promisifying or callback hell.
✨ All trade-offers updates are emitted as event, which makes catching changes unbelievably easy! E.g. API.on('OfferChanged', offer => console.log(offer))
🔥 Two-Factor authentication? Naah! wax-expresstrade handles all this stuff with no additional configuration, just pass twoFactorSecret and... that's all!
const ExpressTrade = require('wax-expresstrade')
// First, initialize our module
const API = new ExpressTrade({
apiKey: 'OPSkins API Key goes here',
twoFactorSecret: 'Secret from opskins mobile auth goes here',
pollInterval: 5000 // Optional, but just set this one value and module will handle all offers updates automatically!
})
// It's ready to use, wasn't it simple?
const appId = 1 // VGO
const mySkins = await API.IUser.GetInventory({ appId })
const anotherOneSkins = await API.ITrade.GetUserInventory({ uid: 72789, appId })
console.log(
`You have ${mySkins.items.length} skins and your friend has got ${
anotherOneSkins.items.length
} ones!`
)
Basically, there is no need to re-define available methods. Take a look into documentation, look for module (e.g. IItem
) and method (e.g. GetItems
)
Execute node code with const items = await API.IItem.GetItems({ skuFilter: [10, 20, 25, 40] })
IMPORTANT: You need to set pollInterval value in milliseconds (min. 1000) to make module emit events!
Intercepting events is really easy, take a look:
const API = ... // ExpressTrade initialization is described above in "Usage" section
API.on('OfferChanged', offer => {
console.log(`Offer #${offer.id} changed its state to ${offer.state}!`)
console.log(`That offer was sent by ${offer.sent_by_you ? 'you' : 'someone else'}`)
})
offer
- Trade Offer Object
Emitted alongside with state-changed events of offers, which have been already created (e.g. OfferAccepted
, OfferDeclined
, but not OfferSent
/OfferReceived
).
offer
- Trade Offer Object
Emitted when we successfully send an offer.
offer
- Trade Offer Object
Emitted when we receive new offer.
offer
- Trade Offer Object
Emitted when we successfully accept an offer.
offer
- Trade Offer Object
Emitted when an offer expires.
offer
- Trade Offer Object
Emitted when an offer gets cancelled.
offer
- Trade Offer Object
Emitted when an offer gets declined.
offer
- Trade Offer Object
Emitted when an offer expires.
offer
- Trade Offer Object
Emitted when the case offer gets pending state.
offer
- Trade Offer Object
Emitted when the case offer expires.
offer
- Trade Offer Object
Emitted when the case offer fails.