diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2018-05-22 14:07:25 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2018-12-13 16:59:39 +0100 |
| commit | 6382ed01e9db8f975b72c9c2c8db4013cd0156c2 (patch) | |
| tree | 0007030148e27fe9152ccb28a91c3497d62b27d8 /backend/config-brawl.js | |
| parent | 60186a7bb45a0063f605f8d4b05c2f08418733af (diff) | |
| download | brokentalents-6382ed01e9db8f975b72c9c2c8db4013cd0156c2.tar.gz brokentalents-6382ed01e9db8f975b72c9c2c8db4013cd0156c2.zip | |
Add metadata file to data
Diffstat (limited to 'backend/config-brawl.js')
| -rw-r--r-- | backend/config-brawl.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/backend/config-brawl.js b/backend/config-brawl.js new file mode 100644 index 0000000..dc13956 --- /dev/null +++ b/backend/config-brawl.js @@ -0,0 +1,60 @@ +#!/usr/bin/node + +const crypto = require('crypto'); + +const sha256 = (x) => crypto.createHash('sha256').update(x, 'utf8').digest('hex'); + +const hashSettings = (config) => sha256( + config.api.regions + + config.api.modes + + config.api.requestsPerInterval + + config.api.interval + + config.api.intervalUnit +).substring(0, 8); + +module.exports = { + api: { + baseUrl: 'https://api.dc01.gamelockerapp.com', + timeout: 3, + /* available: eu, na, sg, cn, sa, ea */ + regions: ['sg', 'eu', 'na'], + /* available: casual, 5v5_pvp_casual, ranked, 5v5_pvp_ranked, blitz_pvp_ranked, casual_aral */ + modes: ['blitz_pvp_ranked', 'casual_aral'], + /* available: 2, 3, 4, 5 */ + matchesPerRequest: 5, + /* How many equidistant requests to create + * matchesPerRequest * requestsPerInterval = sample size for that interval + * currently requestsPerInterval <= API key rate limit but should work if it isn't significantly higher + * rough estimate of upper limits (na/eu/sg, depends on region and time of day): + * blitz: 240 + * battle royale: 30 + * 3v3 casual: 30 + * 3v3 ranked: 100 + * 5v5 casual: 30 + * 5v5 ranked: 40 + * if filtering for multiple game modes, use the sum of the upper limits */ + requestsPerInterval: 50, + /* the size of a batch */ + interval: 1, + intervalUnit: 'hours', + /* How many batches to request per minute + * requestsPerInterval * intervalsPer Minute <= API key rate limit */ + intervalsPerMinute: 1, + }, + etl: { + /* attributes to be extracted and renamed from main API data */ + participant: [ ['Winner', ['attributes', 'stats', 'winner']] ], + roster: [ ], + match: [ ['Mode', ['attributes', 'gameMode']] ], + }, + reduce: { + /* criteria or 'filters' */ + group: ['Actor', 'Talent', 'Mode'], + /* stats */ + sum: ['Level', 'Winner'], + }, + file: { + pattern: (moment) => `./data/${hashSettings(module.exports)}/${moment.toISOString()}.json`, + reportPattern: () => `./data/${hashSettings(module.exports)}/report.json`, + }, +}; |
