diff options
| author | tv <tv@xso> | 2011-08-24 16:50:00 +0200 | 
|---|---|---|
| committer | tv <tv@xso> | 2011-08-24 16:50:00 +0200 | 
| commit | 0ec11733c539e69b1e035585f9e44de19198d93a (patch) | |
| tree | 8c4c039966952cb8422ee15441ae5123ef9588f5 /gold | |
| parent | c37ab9c4accc58919e87ad4eee1ef19f49eed873 (diff) | |
gold scex: initial commit
Diffstat (limited to 'gold')
| -rw-r--r-- | gold/scex/index.js | 58 | ||||
| -rw-r--r-- | gold/scex/slurp.js | 38 | 
2 files changed, 96 insertions, 0 deletions
| diff --git a/gold/scex/index.js b/gold/scex/index.js new file mode 100644 index 00000000..e0c706e7 --- /dev/null +++ b/gold/scex/index.js @@ -0,0 +1,58 @@ +var http = require('http'); +var slurp = require('./slurp'); + +var options = { +  host: 'scexchange.bitparking.com', +  port: 8080, +  path: '/api/t2' +}; + +var last_id = 0; +var last_price = 0; +function t2 () { +  http.get(options, function(res) { +    slurp(res, function (data) { +      try { +        data = JSON.parse(data); +      } catch (exn) { +        return console.error('[1;31m' + exn.stack + '[m'); +      }; +      data +        .sort(function (a, b) { +          return a.id - b.id; +        }) +        .forEach(function (x) { +          if (x.id > last_id) { +            last_id = x.id; + +            x.date = new Date(Number(x.date) * 1000); + +            var price = x.price.toString(); +            while (price.length < 'x.xxxxxxxx'.length) { +              price += 0; +            } +            if (x.price > last_price) { +              price = '[32m' + price + '[m' +            } +            if (x.price < last_price) { +              price = '[31m' + price + '[m' +            } +            last_price = x.price; + +            var c = ({ buy: '[32m', sell: '[31m' })[x.type]; +            var m = ''; +            m += x.id +            m += ' ' + JSON.parse(JSON.stringify(x.date)) +            m += ' ' + price +            m += ' ' + c + x.amount + '[m' +            console.log(m); + +          }; +        }); +    }); +  }).on('error', function(e) { +    console.log("Got error: " + e.message); +  }); +}; + +setInterval(t2, 1000); diff --git a/gold/scex/slurp.js b/gold/scex/slurp.js new file mode 100644 index 00000000..70319743 --- /dev/null +++ b/gold/scex/slurp.js @@ -0,0 +1,38 @@ +module.exports = (function () { + +  function join_buffers (buffers, length) { +    var buffer = new Buffer(length); +    var targetStart = 0; +    buffers.forEach(function (x) { +      x.copy(buffer, targetStart); +      targetStart += x.length; +    }); +    return buffer; +  }; + +  function finish_it (req, buffers, length, callback) { +    req.content = join_buffers(buffers, length); +    return callback(req.content); +  }; + +  function nop () {}; + +  return function (req, callback) { +    if (req.hasOwnProperty('content')) { +      return callback(req.content); +    }; +    var content = []; +    var length = 0; +    var end_handler = finish_it; +    req.on('data', function (data) { +      content.push(data); +      length += data.length; +    }); +    [ 'end', 'close' ].forEach(function (event) { +      req.on(event, function () { +        finish_it(req, content, length, callback); +        end_handler = nop; +      }); +    }); +  }; +})(); | 
