summaryrefslogtreecommitdiff
path: root/index.js
blob: 1cf2228e4e1606b51613be7eab9ec6437a267203 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/node

const R  = require('ramda'),
  Future = require('fluture'),
  moment = require('moment'),
  source = require('./source'),
  params = require('./params'),
  reduce = require('./reduce'),
  file   = require('./file'),
  config = require('./config');

const paramsForHourSample = params.paramsForHourSample(config.api);
const loadFApi            = source.loadFApi(config.etl);
const saveFPayloads       = file.saveFPayloadsTimestamped(config.file);
const aggregatePayloads   = reduce.aggregatePayloads(config.reduce);
const deriveStatistics    = reduce.deriveStatistics(config.reduce);

const requestsForHour = (timestamp) => R.map(R.apply(loadFApi), paramsForHourSample(timestamp));

function processFPastHour(config) {
  return (timestamp) =>
    Future.parallel(1, requestsForHour(timestamp))
      .map(R.compose(deriveStatistics, aggregatePayloads, R.unnest))
      .chain(saveFPayloads(timestamp));
}

function main() {
  const now = moment().subtract(1, 'hours').startOf('hour');
  console.log(requestsForHour(now));
  processFPastHour(config)(now).fork(console.error, console.log);
}

main();