Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var app = express();
- var bodyParser = require('body-parser');
- /**
- * OFFLOADER
- *
- * Once logged in, sends a trade offer containing this account's entire tradable CS:GO inventory.
- */
- app.use(bodyParser.urlencoded({
- extended: true
- }));
- /**bodyParser.json(options)
- * Parses the text as JSON and exposes the resulting object on req.body.
- */
- app.use(bodyParser.json());
- var SteamUser = require('steam-user');
- var SteamCommunity = require('steamcommunity');
- var SteamTotp = require('steam-totp');
- var TradeOfferManager = require('steam-tradeoffer-manager'); // use require('steam-tradeoffer-manager') in production
- var fs = require('fs');
- var client = new SteamUser();
- var manager = new TradeOfferManager({
- "steam": client, // Polling every 30 seconds is fine since we get notifications from Steam
- "domain": "TOPSECRET", // Our domain is example.com
- "language": "en" // We want English item descriptions
- });
- var community = new SteamCommunity();
- // Steam logon options
- var logOnOptions = {
- "accountName": "TOPSECRET",
- "password": "TOPSECRET",
- "twoFactorCode": SteamTotp.getAuthCode("TOPSECRET")
- };
- if (fs.existsSync('polldata.json')) {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- }
- client.logOn(logOnOptions);
- client.on('loggedOn', function() {
- /*client.enableTwoFactor(function (response) {
- console.log(response);
- console.log( JSON.stringify(response));
- });*/
- /*client.finalizeTwoFactor("TOPSECRET","TOPSECRET",function (err) {
- console.log(err);
- });*/
- console.log("Logged into Steam");
- });
- client.on('webSession', function(sessionID, cookies) {
- manager.setCookies(cookies, function(err) {
- if (err) {
- console.log(err);
- process.exit(1); // Fatal error since we couldn't get our API key
- return;
- }
- console.log("Got API key: " + manager.apiKey);
- // Get our inventory
- manager.loadInventory(730, 2, true, function(err, inventory) {
- if (err) {
- console.log(err);
- return;
- }
- if (inventory.length == 0) {
- // Inventory empty
- console.log("CS:GO inventory is empty");
- return;
- }
- console.log("Found " + inventory.length + " CS:GO items");
- // Create and send the offer
- var offer = manager.createOffer("TOPSECRET");
- offer.addMyItems(inventory);
- offer.setMessage("TOPSECRET");
- offer.send(function(err, status) {
- var response = "";
- if (err) {
- console.log(err);
- return;
- }
- if (status == 'pending') {
- // We need to confirm it
- console.log(`Offer #${offer.id} sent, but requires confirmation`);
- community.acceptConfirmationForObject("TOPSECRET", offer.id, function(err) {
- if (err) {
- console.log(err);
- } else {
- console.log("Offer confirmed");
- }
- });
- } else {
- // response.write('foo'); // <-----
- console.log(`Offer #${offer.id} sent successfully`);
- }
- });
- });
- });
- community.setCookies(cookies);
- });
- manager.on('sentOfferChanged', function(offer, oldState) {
- console.log(`Offer #${offer.id} changed: ${TradeOfferManager.ETradeOfferState[oldState]} -> ${TradeOfferManager.ETradeOfferState[offer.state]}`);
- });
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData), function() {});
- });
- var path = require('path');
- app.set('views', path.join(__dirname, 'views'));
- app.set('view engine', 'jade');
- app.use(function(req, res, next) {
- var err = new Error('Not Found');
- err.status = 404;
- next(err);
- });
- // error handler
- app.use(function(err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message;
- res.locals.error = req.app.get('env') === 'development' ? err : {};
- // render the error page
- res.status(err.status || 500);
- res.render('error');
- });
- module.exports = app;
Advertisement
Add Comment
Please, Sign In to add comment