Skip to content

Commit

Permalink
Merge pull request #404 from ArtyomKa/add_cache_for_drupal
Browse files Browse the repository at this point in the history
added cache to drupal search
  • Loading branch information
ArtyomKa authored May 17, 2017
2 parents 10043b6 + 07afea5 commit 8d2d771
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
4 changes: 3 additions & 1 deletion config/default.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,5 +124,7 @@ exports.api_tokens = {
exports.profiles_api = {
url: process.env.DRUPAL_PROFILE_API_URL || 'http://dummy.url',
username: process.env.DRUPAL_PROFILE_API_USER || 'dummy',
password: process.env.DRUPAL_PROFILE_API_PASSWORD || 'dummy'
password: process.env.DRUPAL_PROFILE_API_PASSWORD || 'dummy',
useCache: process.env.USE_DRUPAL_CACHE || false,
cacheTTL: process.env.USE_DRUPAL_CACHE_TTL || 3600*24,
};
23 changes: 17 additions & 6 deletions libs/drupal_access.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
require('dotenv').config()
var request = require('superagent');
var logger = require('../libs/logger')(module);
var drupalConfig = require('config').get('profiles_api');
const request = require('superagent');
const logger = require('../libs/logger')(module);
const drupalConfig = require('config').get('profiles_api');
const NodeCache = require("node-cache");

const drupalCache = new NodeCache({ stdTTL: drupalConfig.cacheTTL, checkperiod: 600 });

function parseFromAnchorTag(uid_string) {
var re = /<a.*>(.+)<\/a>/g;
Expand Down Expand Up @@ -74,17 +77,25 @@ var search_multiple_emails = function(login_data, email_arr) {
var search = function(login_data, email, uid, is_retry) {
return new Promise((resolve, reject) => {
var qs = {};
var key;
if (email) {
qs.mail = email
qs.mail = email;
key = email;
}
if (uid) {
qs.uid = uid
qs.uid = uid;
key = uid;
}
var user_data_ = drupalCache.get(key)
if (user_data_ && drupalConfig.useCache) {
return resolve({ email: qs.mail, uid: qs.uid, user_data: user_data_ });
}
login_data.request_agent
.get(drupalConfig.url + '/en/api/usersearch')
.query(qs)
.then((res) => {
var user_data_ = parseUser(res.body)
user_data_ = parseUser(res.body)
drupalCache.set(key, user_data_);
resolve({ email: qs.mail, uid: qs.uid, user_data: user_data_ });
}).catch((err) => {
if (err.status === 403 && !is_retry) {
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
"module-id": "2.0.4",
"morgan": "~1.7.0",
"mysql": "^2.11.1",
"node-cache": "^4.1.1",
"node-sass": "^3.13.0",
"passport": "^0.3.2",
"passport-facebook": "2.1.1",
Expand Down

0 comments on commit 8d2d771

Please sign in to comment.