-
Notifications
You must be signed in to change notification settings - Fork 6
/
ga.js
138 lines (118 loc) · 4.77 KB
/
ga.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
"use strict";
let __pluginManager = require('./plugins_manager');
let google = require('googleapis');
let CLIENT_ID = '1088344376413-220618hg1c06d8p3bitjsbt2k74g1l68.apps.googleusercontent.com';
let CLIENT_SECRET = 'cBnnCAb2oaQc4WlxQh8Og7oj';
let oauth2 = new google.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, 'postmessage');
let analytics = google.analytics('v3');
let SERVICE_ACCOUNT_EMAIL = '1088344376413-220618hg1c06d8p3bitjsbt2k74g1l68@developer.gserviceaccount.com';
let SERVICE_ACCOUNT_KEY_FILE = __base + 'config/env/techmaster_key.pem';
let jwt = new google.auth.JWT(
SERVICE_ACCOUNT_EMAIL,
SERVICE_ACCOUNT_KEY_FILE,
null,
['https://www.googleapis.com/auth/analytics.readonly']);
let access_token = '';
let expiry_date = 0;
function GA() {
let self = this;
this.init = function () {
__pluginManager.loadAllPlugins();
let ggPlg = __pluginManager.getPlugin('google');
if (ggPlg) {
ggPlg = ggPlg.options;
if (ggPlg.clientID && ggPlg.clientID != '' &&
ggPlg.clientSecret && ggPlg.clientSecret != '' &&
ggPlg.serviceAEmail && ggPlg.serviceAEmail != '' &&
ggPlg.serviceAKeyFile && ggPlg.serviceAKeyFile != ''
) {
CLIENT_ID = ggPlg.clientID;
CLIENT_SECRET = ggPlg.clientSecret;
SERVICE_ACCOUNT_EMAIL = ggPlg.serviceAEmail;
SERVICE_ACCOUNT_KEY_FILE = ggPlg.serviceAKeyFile;
jwt = new google.auth.JWT(
SERVICE_ACCOUNT_EMAIL,
SERVICE_ACCOUNT_KEY_FILE,
null,
['https://www.googleapis.com/auth/analytics.readonly']);
}
}
};
this.getGoogleInformation = function (cb) {
self.init();
jwt.authorize(function (err, result) {
if (err) setTimeout(cb(null), 0);
else {
access_token = result.access_token;
expiry_date = result.expiry_date;
oauth2.setCredentials({
access_token: result.access_token
});
analytics.data.ga.get({
auth: oauth2,
"ids": "ga:59684062",
"start-date": '7daysAgo',
"end-date": 'yesterday',
"metrics": "ga:visits",
"dimensions": 'ga:day,ga:month,ga:year'
}, function (err, body) {
if (err) {
setTimeout(cb(null), 0);
} else {
var data = [];
if (body != null) {
body.rows.sort(function (a, b) {
if ((a[2] - b[2]) == 0) {
return a[1] - b[1];
}
else {
return a[2] - b[2];
}
});
for (var i in body.rows) {
var day = parseInt(body.rows[i][0]);
var month = parseInt(body.rows[i][1]);
var year = parseInt(body.rows[i][2]);
var value = parseInt(body.rows[i][3]);
var vl = [day + '/' + month + '/' + year, value];
data.push(vl);
}
}
setTimeout(cb(data), 0);
}
});
}
});
};
this.getGooglePopularLinkInformation = function (mark_link, cb) {
self.init();
jwt.authorize(function (err, result) {
if (err) setTimeout(cb(null), 0);
else {
access_token = result.access_token;
expiry_date = result.expiry_date;
oauth2.setCredentials({
access_token: result.access_token
});
analytics.data.ga.get({
auth: oauth2,
"ids": "ga:59684062",
"start-date": '7daysAgo',
"end-date": 'yesterday',
"metrics": "ga:pageviews",
"dimensions": 'ga:pagePath',
"sort": '-ga:pageviews',
"max-results": '10',
"filters": 'ga:pagePath=~^\/' + mark_link + '/'
}, function (err, body) {
if (err) {
setTimeout(cb(null), 0);
} else {
setTimeout(cb(body), 0);
}
});
}
});
};
}
module.exports = GA;