-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
71 lines (61 loc) · 2.09 KB
/
index.js
File metadata and controls
71 lines (61 loc) · 2.09 KB
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
64
65
66
67
68
69
70
71
let express = require('express');
let app = express();
let useragent = require('express-useragent');
const requestIp = require('request-ip');
let lookup = require("./ip2Location");
let uaAnalytics = {
"browser":{"name":"","version":""},
"os":"",
"platform":"",
"source":"",
"geoIp":"",
"ipAddress":"",
"ip2Location":{}
};
app.use(useragent.express());
app.use(requestIp.mw())
function ip2LocationCallBack(error,response){
if(error){
console.log(Date(),"Error Getting IP2Location Details: "+error);
uaAnalytics.ip2Location = error;
}else{
uaAnalytics.ip2Location = JSON.parse(response);
//debugging console.log(Date(),"Location Details: ",uaAnalytics);
/*Save the data in DB here ... (Sravanthi) complete uaAnalytics)
Have individual column in the DB for all the params in ip2Location.
*/
}
}
app.get('/', function(req, res){
//uaAnalytics.ipAddress = req.clientIp; // in Server Actual Code.
uaAnalytics.ipAddress = "223.230.36.72";//For testing Local server
lookup.ip2Location(uaAnalytics.ipAddress,ip2LocationCallBack);//1st Argument is passing the IP in 1st step.
let ua = req.useragent;
/* save the following data in DB for that customname*/
uaAnalytics.browser.name = ua.browser;
uaAnalytics.browser.version = ua.version;
uaAnalytics.os = ua.os;
uaAnalytics.platform = ua.platform;
uaAnalytics.source = ua.source;
uaAnalytics.geoIp = ua.geoIp;
//You need not redirect for your application;
setTimeout(()=>{res.redirect('/uaAnalytics/success')},200);
});
//Below Route is not required for you.
let retryCount=0;
app.get('/uaAnalytics/success',(req,res)=>{
if(uaAnalytics.os.length==0){
res.send('Cannot Access Directly');
return;
}
if(!uaAnalytics.ip2Location.status){
retryCount++;
if(retryCount<=10){
setTimeout(()=>{ console.log(Date(),"Redirecting- Retry:",retryCount);res.redirect('/uaAnalytics/success')},100);
}
}else{
res.send(uaAnalytics);
}
}
);
app.listen(4000);