-
Notifications
You must be signed in to change notification settings - Fork 35
/
AppContainer.js
63 lines (51 loc) · 2.45 KB
/
AppContainer.js
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const { ContainerBuilder, Reference } = require('node-dependency-injection')
const { LeaderboardRepository } = require('../services/LeaderboardRepository')
const { LeaderboardService } = require('../services/LeaderboardService')
const { JavaApiM2MClient } = require('../services/JavaApiM2MClient')
const { WordpressService } = require('../services/WordpressService')
const { WordpressRepository } = require('../services/WordpressRepository')
const { DataRepository } = require('../services/DataRepository')
const { ClanService } = require('../services/ClanService')
const NodeCache = require('node-cache')
const { Axios } = require('axios')
const fs = require('fs')
const webpackManifestJS = JSON.parse(fs.readFileSync('dist/js/manifest.json', 'utf8'))
/**
* @param {object} appConfig
* @return {ContainerBuilder}
*/
module.exports.appContainer = function (appConfig) {
const container = new ContainerBuilder()
container.setParameter('webpackManifestJS', webpackManifestJS)
container.register('NodeCache', NodeCache)
.addArgument({
stdTTL: 300, // use 5 min for all caches if not changed with ttl
checkperiod: 600 // cleanup memory every 10 min
})
container.register('WordpressClient', Axios)
.addArgument({
baseURL: appConfig.wordpressUrl
})
container.register('WordpressRepository', WordpressRepository)
.addArgument(new Reference('WordpressClient'))
container.register('WordpressService', WordpressService)
.addArgument(new Reference('NodeCache'))
.addArgument(new Reference('WordpressRepository'))
container.register('JavaApiM2MClient')
.addArgument(appConfig.m2mOauth.clientId)
.addArgument(appConfig.m2mOauth.clientSecret)
.addArgument(appConfig.m2mOauth.url)
.addArgument(appConfig.apiUrl)
.setFactory(JavaApiM2MClient, 'createInstance')
container.register('LeaderboardRepository', LeaderboardRepository)
.addArgument(new Reference('JavaApiM2MClient'))
container.register('LeaderboardService', LeaderboardService)
.addArgument(new Reference('NodeCache'))
.addArgument(new Reference('LeaderboardRepository'))
container.register('DataRepository', DataRepository)
.addArgument(new Reference('JavaApiM2MClient'))
container.register('ClanService', ClanService)
.addArgument(new Reference('NodeCache'))
.addArgument(new Reference('DataRepository'))
return container
}