Skip to content

Commit a9dffbd

Browse files
Merge pull request #5012 from Countly/SER-1167-update-for-proxy-config-in-countly-request
[SER-1167] update for proxy config in countly request
2 parents b45fc4e + 077c43e commit a9dffbd

File tree

21 files changed

+106
-90
lines changed

21 files changed

+106
-90
lines changed

api/jobs/ping.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ const job = require('../parts/jobs/job.js'),
44
log = require('../utils/log.js')('job:ping'),
55
countlyConfig = require("../../frontend/express/config.js"),
66
versionInfo = require('../../frontend/express/version.info'),
7-
request = require('countly-request'),
8-
plugins = require('../../plugins/pluginManager.js');
7+
plugins = require('../../plugins/pluginManager.js'),
8+
request = require('countly-request')(plugins.getConfig("security"));
9+
910

1011
/** Class for the job of pinging servers **/
1112
class PingJob extends job.Job {

api/parts/mgmt/tracker.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ var tracker = {},
1313
countlyConfig = require("../../../frontend/express/config.js"),
1414
versionInfo = require('../../../frontend/express/version.info'),
1515
ip = require('./ip.js'),
16-
request = require('countly-request'),
1716
cluster = require('cluster'),
1817
os = require('os'),
1918
fs = require('fs'),
@@ -23,6 +22,7 @@ var tracker = {},
2322
server = "e0693b48a5513cb60c112c21aede3cab809d52d0",
2423
url = "https://stats.count.ly",
2524
plugins = require('../../../plugins/pluginManager.js'),
25+
request = require('countly-request')(plugins.getConfig("security")),
2626
offlineMode = plugins.getConfig("api").offline_mode,
2727
domain = plugins.getConfig("api").domain;
2828

api/utils/countly-request/index.js

+75-67
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1+
/* eslint-disable require-jsdoc */
12
/***
23
* @module api/utils/countly-request
34
*/
45

56
const got = require('got');
67
const FormData = require('form-data');
7-
const plugins = require('../../../plugins/pluginManager.js');
88
const {HttpsProxyAgent, HttpProxyAgent} = require('hpagent');
99

10-
var initParams = function(uri, options, callback) {
10+
var initParams = function(uri, options, callback, countlyConfig) {
1111

1212
if (typeof options === 'function') {
1313
callback = options;
@@ -32,7 +32,7 @@ var initParams = function(uri, options, callback) {
3232

3333
params.callback = callback || params.callback;
3434

35-
var config = plugins.getConfig("security");
35+
var config = countlyConfig;
3636

3737
if (config && config.proxy_hostname) {
3838
if (!params.options) {
@@ -150,39 +150,84 @@ var convertOptionsToGot = function(options) {
150150
};
151151

152152

153-
module.exports = function(uri, options, callback) {
153+
// Factory function to initialize with config
154+
module.exports = function(countlyConfig) {
155+
// Return the request function
156+
// eslint-disable-next-line require-jsdoc
157+
function requestFunction(uri, options, callback) {
158+
if (typeof uri === 'undefined') {
159+
throw new Error('undefined is not a valid uri or options object.');
160+
}
161+
162+
// Initialize params with the provided config
163+
const params = initParams(uri, options, callback, countlyConfig);
154164

155-
if (typeof uri === 'undefined') {
156-
throw new Error('undefined is not a valid uri or options object.');
165+
// Request logic follows, unchanged from your provided code
166+
if (params.options && (params.options.url || params.options.uri)) {
167+
got(params.options)
168+
.then(response => {
169+
params.callback(null, response, response.body);
170+
})
171+
.catch(error => {
172+
params.callback(error);
173+
});
174+
}
175+
else {
176+
got(params.uri, params.options)
177+
.then(response => {
178+
params.callback(null, response, response.body);
179+
})
180+
.catch(error => {
181+
params.callback(error);
182+
});
183+
}
157184
}
158185

186+
// eslint-disable-next-line require-jsdoc
187+
function post(uri, options, callback, config) {
188+
var params = initParams(uri, options, callback, config);
189+
if (params.options && (params.options.url || params.options.uri)) {
190+
if (params.options.form && params.options.form.fileStream && params.options.form.fileField) {
191+
// If options include a form, use uploadFormFile
192+
const { url, form } = params.options;
193+
uploadFormFile(url || params.options.uri, form, params.callback);
194+
}
195+
else {
196+
// Make the request using got
197+
got.post(params.options)
198+
.then(response => {
199+
// Call the callback with the response data
200+
params.callback(null, response, response.body);
201+
})
202+
.catch(error => {
203+
// Call the callback with the error
204+
params.callback(error);
205+
});
206+
}
207+
}
208+
else {
209+
// Make the request using got
210+
got.post(params.uri, params.options)
211+
.then(response => {
212+
params.callback(null, response, response.body);
213+
})
214+
.catch(error => {
215+
// Call the callback with the error
216+
params.callback(error);
217+
});
218+
}
219+
}
159220

160-
const params = initParams(uri, options, callback);
161221

162-
if (params.options && (params.options.url || params.options.uri)) {
163-
// Make the request using got
164-
got(params.options)
165-
.then(response => {
166-
// Call the callback with the response data
167-
params.callback(null, response, response.body);
168-
})
169-
.catch(error => {
170-
// Call the callback with the error
171-
params.callback(error);
172-
});
173-
}
174-
else {
175-
// Make the request using got
176-
got(params.uri, params.options)
177-
.then(response => {
178-
params.callback(null, response, response.body);
179-
})
180-
.catch(error => {
181-
// Call the callback with the error
182-
params.callback(error);
183-
});
222+
function get(uri, options, callback, config) {
223+
module.exports(uri, options, callback, config);
184224
}
185225

226+
requestFunction.post = post;
227+
requestFunction.get = get;
228+
requestFunction.convertOptionsToGot = convertOptionsToGot;
229+
230+
return requestFunction;
186231

187232
};
188233

@@ -211,44 +256,7 @@ async function uploadFormFile(url, fileData, callback) {
211256
}
212257
}
213258

214-
// Add a post method to the request object
215-
module.exports.post = function(uri, options, callback) {
216-
var params = initParams(uri, options, callback);
217-
if (params.options && (params.options.url || params.options.uri)) {
218-
if (params.options.form && params.options.form.fileStream && params.options.form.fileField) {
219-
// If options include a form, use uploadFormFile
220-
const { url, form } = params.options;
221-
uploadFormFile(url || params.options.uri, form, params.callback);
222-
}
223-
else {
224-
// Make the request using got
225-
got.post(params.options)
226-
.then(response => {
227-
// Call the callback with the response data
228-
params.callback(null, response, response.body);
229-
})
230-
.catch(error => {
231-
// Call the callback with the error
232-
params.callback(error);
233-
});
234-
}
235-
}
236-
else {
237-
// Make the request using got
238-
got.post(params.uri, params.options)
239-
.then(response => {
240-
params.callback(null, response, response.body);
241-
})
242-
.catch(error => {
243-
// Call the callback with the error
244-
params.callback(error);
245-
});
246-
}
247-
};
248259

249-
//Add a get method to the request object
250-
module.exports.get = function(uri, options, callback) {
251-
module.exports(uri, options, callback);
252-
};
260+
253261

254262
module.exports.convertOptionsToGot = convertOptionsToGot;

api/utils/requestProcessor.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const validateUserForDataReadAPI = validateRead;
2222
const validateUserForDataWriteAPI = validateUserForWrite;
2323
const validateUserForGlobalAdmin = validateGlobalAdmin;
2424
const validateUserForMgmtReadAPI = validateUser;
25-
const request = require('countly-request');
25+
const request = require('countly-request')(plugins.getConfig("security"));
2626
const Handle = require('../../api/parts/jobs/index.js');
2727

2828
var loaded_configs_time = 0;

bin/commands/scripts/api.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
var request = require('countly-request');
1+
var pluginManager = require('../../../plugins/pluginManager.js');
2+
var request = require('countly-request')(pluginManager.getConfig("security"));
23
var countlyConfig = require("../../../frontend/express/config.js");
34
var myArgs = process.argv.slice(2);
45

bin/commands/scripts/update_translations.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
var https = require("https");
2-
var request = require("countly-request");
2+
33
var fs = require('fs');
44
var path = require("path");
55
var dir = path.resolve(__dirname, '../../../');
66
var manager = require('../../../plugins/pluginManager.js');
7+
var request = require("countly-request")(manager.getConfig("security"));
78

89
var header = "# DO NOT EDIT THIS FILE AS IT WILL BE OVERRIDEN DURING TRANSLATION SYNC\n" +
910
"# IF YOU WOULD LIKE TO HELP COUNTLY TO BE TRANSLATED INTO YOUR LANGUAGE\n" +

bin/scripts/continious-data-population.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ const ratingWidgetList = {}, npsWidgetList = {}, surveyWidgetList = {};
167167

168168

169169
const plugins = require('../../plugins/pluginManager.js'),
170-
request = require('countly-request'),
170+
request = require('countly-request')(plugins.getConfig("security")),
171171
Chance = require('../../plugins/populator/frontend/public/javascripts/chance.js');
172172

173173
function writeMsg(msg) {

bin/scripts/delete_queried_user_script.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var QUERY = {
2626
"hasInfo": { "$ne": true } // anonymous user
2727
};
2828
var pluginManager = require("./plugins/pluginManager.js");
29-
var request = require('countly-request');
29+
var request = require('countly-request')(pluginManager.getConfig("security"));
3030
var DB = 'countly';
3131
var COLLECTION_NAME = "app_users" + APP_ID; // do not change
3232
/**

bin/scripts/member-managament/delete_old_members.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Script calls Countly API endpoint to trigger member deletion for members, which
55
Query is editable to delete based on different criteria.
66
*/
77
var pluginManager = require('./../../../plugins/pluginManager.js');
8-
var request = require('countly-request');
8+
var request = require('countly-request')(pluginManager.getConfig("security"));
99
var Promise = require("bluebird");
1010

1111

frontend/express/app.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ var versionInfo = require('./version.info'),
3030
fs = require('fs'),
3131
path = require('path'),
3232
jimp = require('jimp'),
33-
request = require('countly-request'),
3433
flash = require('connect-flash'),
3534
cookieParser = require('cookie-parser'),
3635
formidable = require('formidable'),
@@ -47,6 +46,7 @@ var versionInfo = require('./version.info'),
4746
common = require('../../api/utils/common.js'),
4847
preventBruteforce = require('./libs/preventBruteforce.js'),
4948
plugins = require('../../plugins/pluginManager.js'),
49+
request = require('countly-request')(plugins.getConfig("security")),
5050
countlyConfig = require('./config', 'dont-enclose'),
5151
log = require('../../api/utils/log.js')('core:app'),
5252
url = require('url'),

frontend/express/libs/members.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ var { getUserApps } = require('./../../../api/utils/rights.js');
1616
var configs = require('./../config', 'dont-enclose');
1717
var countlyMail = require('./../../../api/parts/mgmt/mail.js');
1818
var countlyStats = require('./../../../api/parts/data/stats.js');
19-
var request = require('countly-request');
19+
var request = require('countly-request')(plugins.getConfig("security"));
2020
var url = require('url');
2121
var crypto = require('crypto');
2222
var argon2 = require('argon2');

plugins/alerts/api/parts/utils.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const mail = require("../../../../api/parts/mgmt/mail");
2-
const request = require('countly-request');
2+
const plugins = require('../../../../plugins/pluginManager.js');
3+
const request = require('countly-request')(plugins.getConfig("security"));
34
const moment = require('moment-timezone');
45

56
const common = require('../../../../api/utils/common.js');

plugins/data_migration/api/api.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var Promise = require("bluebird");
2020

2121
var authorize = require('../../../api/utils/authorizer.js'); //for token
2222

23-
const request = require('countly-request');
23+
const request = require('countly-request')(plugins.getConfig("security"));
2424
const FEATURE_NAME = 'data_migration';
2525
/**
2626
*Function to delete all exported files in export folder

plugins/data_migration/api/data_migration_helper.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var countlyFs = require('../../../api/utils/countlyFs.js');
99
var cp = require('child_process'); //call process
1010
var spawn = cp.spawn; //for calling comannd line
1111
const os = require('os'); //hostname, eol
12-
const request = require('countly-request');
12+
const request = require('countly-request')(plugins.getConfig("security"));
1313
var common = require('../../../api/utils/common.js');
1414

1515
module.exports = function(my_db) {

plugins/hooks/api/parts/effects/http.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
const request = require("countly-request");
1+
const plugins = require("../../../../pluginManager.js");
2+
const request = require("countly-request")(plugins.getConfig("security"));
23
const utils = require("../../utils");
34
const common = require('../../../../../api/utils/common.js');
45
const log = common.log("hooks:api:api_endpoint_trigger");

plugins/reports/api/reports.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ var reportsInstance = {},
44
ejs = require("ejs"),
55
fs = require('fs'),
66
path = require('path'),
7-
request = require('countly-request'),
7+
plugins = require("../../pluginManager"),
8+
request = require('countly-request')(plugins.getConfig("security")),
89
crypto = require('crypto'),
910
mail = require("../../../api/parts/mgmt/mail"),
1011
fetch = require("../../../api/parts/data/fetch"),
11-
plugins = require("../../pluginManager"),
1212
countlyCommon = require('../../../api/lib/countly.common.js'),
1313
localize = require('../../../api/utils/localization.js'),
1414
common = require('../../../api/utils/common.js'),

plugins/server-stats/api/jobs/stats.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const job = require('../../../../api/parts/jobs/job.js'),
66
config = require("../../../../frontend/express/config.js"),
77
pluginManager = require('../../../pluginManager.js'),
88
moment = require('moment-timezone'),
9-
request = require('countly-request');
9+
request = require('countly-request')(pluginManager.getConfig("security"));
1010

1111
const promisedLoadConfigs = function(db) {
1212
return new Promise((resolve) => {

plugins/server-stats/frontend/app.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var pluginExported = {};
22
var versionInfo = require('../../../frontend/express/version.info');
3-
var request = require('countly-request');
43
var moment = require('moment');
54
const plugins = require('../../pluginManager.js');
5+
const request = require('countly-request')(plugins.getConfig("security"));
66
const { getUserApps } = require('../../../api/utils/rights');
77

88
(function(plugin) {

plugins/star-rating/mock.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
2-
const request = require("countly-request");
1+
const plugins = require("../../plugins/pluginManager");
2+
const request = require("countly-request")(plugins.getConfig("security"));
33
const host = '128.199.239.207' ; //'localhost:3001';
44
const appKey = 'b895ef5cca254395a1cc1f03b41bbc0ca7b6b52a';//'d4a4e3e1a4d241c2ea9d0c350bb86584c87a91cb';
55
let times = 2000;

plugins/web/frontend/app.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var exported = {},
2-
request = require("countly-request"),
2+
plugins = require("../../pluginManager"),
3+
request = require("countly-request")(plugins.getConfig("security")),
34
countlyConfig = require("../../../frontend/express/config");
45

56
(function(plugin) {

test/unit-tests/api.utils.countly-request.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
var request = require('countly-request');
1+
2+
var pluginManager = require('../../plugins/pluginManager');
3+
var request = require('countly-request')(pluginManager.getConfig("security"));
24
var should = require('should');
35

46
describe('Countly Request', () => {

0 commit comments

Comments
 (0)