UNPKG

betfair-sports-api

Version:

Betfair Sports API for Node

172 lines (154 loc) 5.59 kB
var util = require('util'); var async = require('async') var betfair = require('../index.js'); var common = require('./common.js'); // Betfair account data var login = process.env['BF_LOGIN'] || "nobody"; var password = process.env['BF_PASSWORD'] || "password"; // Optional XML logging, used for debug purposes // betfair.setXmlLoggingEnabled(true); // betfair.addDesirableMarketName('Match Odds'); betfair.setBetEmulationEnabled(true); // Create session to Betfair var session = betfair.newSession(login, password); common.session = session; // invoke placeBets to place LAY 5.0 for player1 at 1.01 // maximum loss if matched is 0.05 function placeBets(data, cb) { var desc = data.desc; console.log('===== Place a test lay bet marketId=%s selectionId=%s =====', desc.marketId, desc.selectionId); var bet = { asianLineId : "0", betCategoryType : "E", betPersistenceType : "NONE", betType : "L", bspLiability : "0", marketId : desc.marketId, price : "6.0", selectionId : desc.selectionId, size : "1000.00" } var bet2 = { asianLineId : "0", betCategoryType : "E", betPersistenceType : "NONE", betType : "L", bspLiability : "0", marketId : desc.marketId, price : "6.0", selectionId : desc.selectionId, size : "5000.00" } // add two bets var inv = session.placeBets([ bet, bet2 ]); inv.execute(function(err, res) { console.log('action:', res.action, 'error:', err, 'duration:', res.duration() / 1000); if (err) { cb(err); return; } // console.log(res.result); var betIds = []; console.log("placeBets results:") for ( var i = 0; i < res.result.betResults.length; ++i) { var betResult = res.result.betResults[i]; console.log("betId=%s", betResult.betId); console.log("\tresultCode=%s", betResult.resultCode); console.log("\tsuccess=%s", betResult.success); console.log("\tsizeMatched=%s", betResult.sizeMatched); betIds.push(betResult.betId); } data.betIds = betIds; cb(null, data); }); } // invoke updateBets to change size of previously placed bet function updateBets(data, cb) { var betIds = data.betIds; console.log('===== updateBets for %d bets =====', betIds.length); // For first bet, change persistence var bet1 = { betId : betIds[0], newBetPersistenceType : "IP", newPrice : "1.01", newSize : "5.0", oldBetPersistenceType : "NONE", oldPrice : "1.01", oldSize : "5.0" }; // For second bet, reduce size var bet2 = { betId : betIds[1], newBetPersistenceType : "NONE", newPrice : "1.01", newSize : "4.0", oldBetPersistenceType : "NONE", oldPrice : "1.01", oldSize : "5.0" }; var inv = session.updateBets([ bet1, bet2 ]); inv.execute(function(err, res) { console.log('action:', res.action, 'error:', err, 'duration:', res.duration() / 1000); if (err) { cb(err); return; } // console.log(res.result); console.log("updateBets results:") for ( var i = 0; i < res.result.betResults.length; ++i) { var betResult = res.result.betResults[i]; console.log("betId=%s", betResult.betId); console.log("\tnewPrice=%s", betResult.newPrice); console.log("\tnewBetId=%s", betResult.newBetId); console.log("\tnewSize=%s", betResult.newSize); console.log("\tresultCode=%s", betResult.resultCode); console.log("\tsizeCancelled=%s", betResult.sizeCancelled); console.log("\tsuccess=%s", betResult.success); } cb(null, data); }); } // invoke cancelBets to cancel previously placed/updated bet function cancelBets(data, cb) { var betIds = data.betIds; console.log('===== cancelBets for %d bets =====', betIds.length); var bets = []; for ( var i = 0; i < betIds.length; ++i) bets.push({ betId : betIds[i], }); var inv = session.cancelBets(bets); inv.execute(function(err, res) { console.log('action:', res.action, 'error:', err, 'duration:', res.duration() / 1000); if (err) { cb(err); return; } // console.log(res.result); console.log("cancelBets results:") for ( var i = 0; i < res.result.betResults.length; ++i) { var betResult = res.result.betResults[i]; console.log("betId=%s", betResult.betId); console.log("\tresultCode=%s", betResult.resultCode); console.log("\tsizeCancelled=%s", betResult.sizeCancelled); console.log("\tsizeMatched=%s", betResult.sizeMatched); console.log("\tsuccess=%s", betResult.success); } cb(null, data); }); } // Run the test var testSteps = [ common.login, common.getAllMarkets, common.selectMarket, common.emulatorGetCompleteMarketPrices, placeBets, common.emulatorGetMUBets, common.emulatorGetMarketProfitAndLoss, cancelBets, common.emulatorGetMUBets, common.logout ]; async.waterfall(testSteps, function(err, res) { if (err) console.log("===== TEST FAILED, error=%j =====", err); else console.log("===== TEST OK ====="); process.exit(0); });