2020-04-23 18:24:03 +00:00
const axios = require ( 'axios' )
import {
getChainValidatorsList ,
getChainValidatorsListPath ,
Tezos ,
writeJSONToPath
} from "../src/test/helpers" ;
import { BakingBadBaker } from "../src/test/models" ;
( async function ( ) {
const bakers : BakingBadBaker [ ] = await axios . get ( ` https://api.baking-bad.org/v2/bakers ` ) . then ( res = > res . data )
const bakersMap : { [ key : string ] : BakingBadBaker } = bakers . reduce ( ( acm , val ) = > {
acm [ val . address ] = val
return acm
} , { } )
const newbakers = getChainValidatorsList ( Tezos ) . reduce ( ( acm , val ) = > {
if ( ! ( val . id in bakersMap ) ) {
console . log ( val . id )
return acm
}
const bakerInfo = bakersMap [ val . id ]
val . payout . commission = Number ( ( bakerInfo . fee * 100 ) . toFixed ( 2 ) )
val . payout . payoutDelay = bakerInfo . payoutDelay
val . payout . payoutPeriod = bakerInfo . payoutPeriod
2020-05-07 00:13:12 +00:00
val . staking . minDelegation = bakerInfo . minDelegation
2020-04-23 18:24:03 +00:00
2020-04-28 02:11:38 +00:00
const freeSpace = Number ( ( bakerInfo . freeSpace ) . toFixed ( 0 ) )
2020-05-07 00:13:12 +00:00
// Disable baker if no more capacity
2020-04-28 02:11:38 +00:00
if ( freeSpace <= 0 ) {
val . status = {
"disabled" : true ,
2020-05-07 00:13:12 +00:00
"note" : ` No more capacity: ${ freeSpace } `
2020-04-28 02:11:38 +00:00
}
}
2020-04-29 20:10:13 +00:00
// Enable baker if has capacity
if ( freeSpace > 0 && val . hasOwnProperty ( " status " ) ) {
delete val . status
2020-04-23 18:24:03 +00:00
}
2020-04-29 20:10:13 +00:00
2020-05-07 00:13:12 +00:00
if ( bakerInfo . serviceHealth !== "active" ) {
2020-04-29 20:10:13 +00:00
val . status = {
"disabled" : true ,
2020-05-07 00:13:12 +00:00
"note" : ` According to Baking Bad API, baker is not active, current status ${ bakerInfo . serviceHealth } , see: https://api.baking-bad.org/v2/bakers/ ${ bakerInfo . address } ` ,
2020-04-29 20:10:13 +00:00
}
}
2020-04-23 18:24:03 +00:00
acm . push ( val )
return acm
} , [ ] )
writeJSONToPath ( getChainValidatorsListPath ( Tezos ) , newbakers )
} ) ( )