Skip to content

Commit bfaccec

Browse files
author
Sachin Maheshwari
committed
caching member api call
1 parent 6a139ec commit bfaccec

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ workflows:
102102
context : org-global
103103
filters:
104104
branches:
105-
only: [dev, 'hotfix/V5-API-Standards', 'v5-upgrade', 'feature/bulk-notification']
105+
only: [dev, 'bug/rate-limit']
106106
- "build-prod":
107107
context : org-global
108108
filters:

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@
5656
"tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.6.2",
5757
"topcoder-healthcheck-dropin": "^1.0.3",
5858
"urijs": "^1.19.1",
59-
"winston": "^2.2.0"
59+
"winston": "^2.2.0",
60+
"node-cache": "^5.1.0"
6061
},
6162
"engines": {
6263
"node": "6.x"

src/common/broadcastAPIHelper.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@ const _ = require('lodash')
66
const config = require('config')
77
const request = require('superagent')
88
const logger = require('./logger')
9-
const m2mAuth = require('tc-core-library-js').auth.m2m;
10-
const m2m = m2mAuth(config);
9+
const m2mAuth = require('tc-core-library-js').auth.m2m
10+
const NodeCache = require('node-cache')
11+
12+
const m2m = m2mAuth(config)
13+
const cache = new NodeCache()
1114

1215
const logPrefix = "BroadcastAPI: "
16+
const cachedTimeInSeconds = 60 //60 seconds
1317

1418
/**
1519
* Helper Function - get m2m token
@@ -27,6 +31,11 @@ async function getMemberInfo(userId) {
2731
"/members/_search/?" +
2832
`query=userId%3A${userId}` +
2933
`&limit=1`
34+
if (cachedMemberInfo = cache.get(url)) {
35+
return new Promise( (resolve, reject) => {
36+
resolve(cachedMemberInfo)
37+
})
38+
}
3039
return new Promise(async function (resolve, reject) {
3140
let memberInfo = []
3241
logger.info(`calling member api ${url} `)
@@ -37,6 +46,7 @@ async function getMemberInfo(userId) {
3746
}
3847
memberInfo = _.get(res, 'body.result.content')
3948
logger.info(`BCA Memeber API: Feteched ${memberInfo.length} record(s) from member api`)
49+
cache.set(url, memberInfo, cachedTimeInSeconds)
4050
resolve(memberInfo)
4151
} catch (err) {
4252
reject(new Error(`BCA Memeber API: Failed to get member ` +

0 commit comments

Comments
 (0)