@opskins/api
Version:
Node.js interface for the OPSkins.com API
241 lines (208 loc) • 5.59 kB
JavaScript
var OPSkinsAPI = require('../index.js');
OPSkinsAPI.prototype.getSales = function(req, callback) {
if (typeof req === 'function') {
callback = req;
req = {};
}
if (!req.type) {
throw new Error("The \"type\" filter is required");
}
this._requireKey();
this.get("ISales", "GetSales", 1, req, function(err, res, meta) {
if (err) {
callback(err);
} else {
callback(null, meta.total_pages, res);
}
});
};
OPSkinsAPI.prototype.editPrice = function(saleID, price, callback) {
this._requireKey();
this.post("ISales", "EditPrice", 1, {"saleid": saleID, "price": price}, function(err, res, meta) {
if (err) {
callback(err);
} else {
callback(null, !!res.relisted);
}
});
};
OPSkinsAPI.prototype.editPrices = function(sales, callback) {
this._requireKey();
if (typeof sales !== 'object') {
throw new Error("The sales parameter must be an object whose keys are OPSkins sale IDs and values are new prices in USD cents");
}
var query = {};
for (var saleid in sales) {
if (!sales.hasOwnProperty(saleid)) {
continue;
}
if (isNaN(saleid) || isNaN(sales[saleid]) || sales[saleid] % 1 != 0) {
throw new Error("The sales parameter must be an object whose keys are OPSkins sale IDs and values are new prices in USD cents");
}
query['items[' + saleid + ']'] = sales[saleid];
}
this.post("ISales", "EditPriceMulti", 1, query, function(err) {
callback(err || null);
});
};
OPSkinsAPI.prototype.getListingLimit = function(callback) {
this._requireKey();
this.get("ISales", "GetListingLimit", 1, function(err, res, meta) {
if (err) {
callback(err);
} else {
callback(null, res.listing_limit);
}
});
};
OPSkinsAPI.prototype.listItems = function(items, callback) {
if (!Array.isArray(items)) {
items = [items];
}
this._requireKey();
this.post("ISales", "ListItems", 1, {"items": JSON.stringify(items)}, function(err, res, meta) {
if (err) {
callback(err);
} else {
callback(null, res);
}
});
};
OPSkinsAPI.prototype.bumpItems = function(saleids, callback) {
if (!Array.isArray(saleids)) {
saleids = [saleids];
}
this._requireKey();
this.post("ISales", "BumpItems", 1, {"items": saleids.join(',')}, function(err, res, meta) {
if (err) {
callback(err);
return;
}
callback(null, meta.balance, res.sales);
});
};
OPSkinsAPI.prototype.returnItems = function(saleids, callback) {
if (!Array.isArray(saleids)) {
saleids = [saleids];
}
this._requireKey();
this.post("ISales", "ReturnItems", 1, {"items": saleids.join(',')}, function(err, res, meta) {
if (err && !res) {
callback(err);
} else if (!res.offers) {
callback(new Error("Malformed response"));
} else {
callback(null, res.offers);
}
});
};
OPSkinsAPI.prototype.getActiveTradeOffers = function(callback) {
this._requireKey();
this.get("ISales", "GetActiveTradeOffers", 1, function(err, res, meta) {
if (err) {
callback(err);
} else {
callback(null, res.offers);
}
});
};
OPSkinsAPI.prototype.search = function(params, callback) {
this._requireKey();
this.get("ISales", "Search", 1, params, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res.sales);
}
});
};
OPSkinsAPI.prototype.searchV2 = function(params, callback) {
this._requireKey();
this.get("ISales", "Search", 2, params, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res.sales);
}
});
};
OPSkinsAPI.prototype.buyItems = function(saleids, total, callback) {
this._requireKey();
this.post("ISales", "BuyItems", 1, {"saleids": saleids.join(','), "total": total}, function(err, res, meta) {
if (err) {
callback(err);
} else {
callback(null, res.items, meta.balance);
}
});
};
OPSkinsAPI.prototype.getLastSales = function(appid, contextid, market_name, callback) {
this._requireKey();
this.get("ISales", "GetLastSales", 1, {
"appid": appid,
"contextid": contextid,
"market_name": market_name
}, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res);
}
});
};
OPSkinsAPI.prototype.getSaleDetails = function(saleid, callback) {
this._requireKey();
this.get("ISales", "GetSaleDetails", 1, {"saleid": saleid}, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res);
}
});
};
OPSkinsAPI.prototype.getSaleStatuses = function(callback) {
this._requireKey();
this.get("ISales", "GetSaleStatuses", 1, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res);
}
});
};
OPSkinsAPI.prototype.getSearchSchema = function(callback) {
this._requireKey();
this.get("ISales", "GetSearchSchema", 1, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res);
}
});
};
OPSkinsAPI.prototype.getSupportedSteamApps = function(callback) {
this._requireKey();
this.get("ISales", "GetSupportedSteamApps", 1, function(err, res) {
if (err) {
callback(err);
} else {
callback(null, res);
}
});
};
OPSkinsAPI.prototype.returnItemsToInventory = function(items, callback) {
this._requireKey();
if (!Array.isArray(items)) {
items = [items];
}
this.post("ISales", "ReturnItemsToInventory", 1, {"items": items.join(',')}, function(err, res) {
if (!callback) {
return;
}
if (err) {
callback(err);
return;
}
callback(null, res);
});
};