f6a4415a
Apichat.Tum
start smart-rms-c...
|
1
2
3
|
'use strict';
const google = require('googleapis');
|
d360cefc
TUM.Apichat
move save google ...
|
4
|
const googleAuth = require('google-auth-library');
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
5
6
|
const calendar = google.calendar('v3');
const fs = require('fs');
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
7
|
const path = require('path');
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
8
9
10
|
const yamlConfig = require('node-yaml-config');
const config = yamlConfig.load(path.join(__dirname, '/../../config/config.yml'));
const moment = require('moment')
|
77034810
Apichat.Tum
fix REST API
|
11
|
const CALENDAR_ID = config.ggapi.calendarID
|
d360cefc
TUM.Apichat
move save google ...
|
12
13
14
|
const REDIRECTURL = config.ggapi.redirectUrl
|
fbe7f7a7
Apichat.Tum
add api google
|
15
16
17
18
19
20
21
22
23
|
const SCOPES = ['https://www.googleapis.com/auth/calendar'];
const TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) + '/.credentials/';
const TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
function hasTimezone(timezone) {
if (timezone) {
return timezone
} else {
return 'Asia/Bangkok'
|
f3f14fef
TUM.Apichat
add value config ...
|
24
|
}
|
fbe7f7a7
Apichat.Tum
add api google
|
25
26
27
28
29
30
31
|
}
function getNewToken(oauth2Client, callback) {
var authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
32
|
scope: SCOPES
|
d360cefc
TUM.Apichat
move save google ...
|
33
|
});
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
34
35
36
|
// console.log('Authorize this app by visiting this url: ', authUrl);
return authUrl;
}
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
37
38
39
40
41
42
43
44
|
function setNewToken(code) {
oauth2Client.getToken(code, function (err, token) {
if (err) {
console.log('Error while trying to retrieve access token', err);
return;
}
oauth2Client.credentials = token;
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
storeToken(token);
callback(oauth2Client);
})
}
function storeToken(token) {
try {
fs.mkdirSync(TOKEN_DIR);
} catch (err) {
if (err.code != 'EEXIST') {
throw err;
}
}
fs.writeFile(TOKEN_PATH, JSON.stringify(token));
console.log('Token stored to ' + TOKEN_PATH);
}
module.exports = {
authorize: (callback) => {
fs.readFile('client_secret.json', (err, content) => {
|
d360cefc
TUM.Apichat
move save google ...
|
66
67
68
|
if (err) return callback(err);
let credentials = JSON.parse(content);
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
69
|
var clientSecret = credentials.installed.client_secret;
|
d360cefc
TUM.Apichat
move save google ...
|
70
71
72
73
|
var clientId = credentials.installed.client_id;
var redirectUrl = credentials.installed.redirect_uris[1];
var auth = new googleAuth();
var oauth2Client = new auth.OAuth2(clientId, clientSecret, REDIRECTURL);
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
74
|
|
d360cefc
TUM.Apichat
move save google ...
|
75
|
fs.readFile(TOKEN_PATH, (err, token) => {
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
76
|
if (err) {
|
d360cefc
TUM.Apichat
move save google ...
|
77
|
return callback(null, null, getNewToken(oauth2Client, callback));
|
48a9a246
Apichat.Tum
fix auth
|
78
|
} else {
|
d360cefc
TUM.Apichat
move save google ...
|
79
80
81
82
83
84
85
86
87
88
89
90
91
|
oauth2Client.credentials = JSON.parse(token);
return callback(null, oauth2Client);
}
});
});
},
setNewToken: (code, callback) => {
fs.readFile('client_secret.json', (err, content) => {
if (err) return callback(err);
let credentials = JSON.parse(content);
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
92
93
|
var clientSecret = credentials.installed.client_secret;
var clientId = credentials.installed.client_id;
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
94
|
var redirectUrl = credentials.installed.redirect_uris[1];
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
95
|
var auth = new googleAuth();
|
fbe7f7a7
Apichat.Tum
add api google
|
96
97
|
var oauth2Client = new auth.OAuth2(clientId, clientSecret, REDIRECTURL);
|
f3f14fef
TUM.Apichat
add value config ...
|
98
|
fs.readFile(TOKEN_PATH, (err, token) => {
|
fbe7f7a7
Apichat.Tum
add api google
|
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
if (err) {
oauth2Client.getToken(code, function (err, token) {
if (err) {
console.log('Error while trying to retrieve access token', err);
return;
} else {
oauth2Client.credentials = token;
storeToken(token);
return callback(null, oauth2Client);
}
})
} else {
oauth2Client.credentials = JSON.parse(token);
return callback(null, oauth2Client);
}
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
115
|
});
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
116
|
});
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
117
118
|
},
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
119
|
listEvents: (auth, callback) => {
|
fbe7f7a7
Apichat.Tum
add api google
|
120
|
calendar.events.list({
|
f3f14fef
TUM.Apichat
add value config ...
|
121
|
auth: auth,
|
fbe7f7a7
Apichat.Tum
add api google
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
calendarId: CALENDAR_ID || 'primary',
maxResults: 50,
singleEvents: true,
orderBy: 'startTime'
}, (err, response) => {
if (err) return callback(err);
return callback(null, response);
});
},
createEvent: (options, callback) => {
calendar.events.insert({
auth: options.auth,
calendarId: CALENDAR_ID || 'primary',
resource: options
}, (err, response) => {
if (err) return callback(err);
return callback(null, response);
});
},
deleteEvent: (options, callback) => {
calendar.events.delete({
auth: options.auth,
calendarId: CALENDAR_ID || 'primary',
|
48a9a246
Apichat.Tum
fix auth
|
149
|
eventId: options.eventId
|
fbe7f7a7
Apichat.Tum
add api google
|
150
151
152
153
|
}, (err, response) => {
if (err) return callback(err);
return callback(null, response);
|
48a9a246
Apichat.Tum
fix auth
|
154
|
});
|
fbe7f7a7
Apichat.Tum
add api google
|
155
156
157
158
159
160
|
},
updateEvent: (options, callback) => {
calendar.events.update({
auth: options.auth,
calendarId: CALENDAR_ID || 'primary',
|
48a9a246
Apichat.Tum
fix auth
|
161
|
eventId: options.eventId,
|
fbe7f7a7
Apichat.Tum
add api google
|
162
|
resource: options
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
163
164
165
|
}, (err, response) => {
if (err) return callback(err);
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
166
167
168
|
return callback(null, response);
});
},
|
fbe7f7a7
Apichat.Tum
add api google
|
169
|
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
170
171
172
173
|
eventBuilder: (payload) => {
var buildPayload = {}
try {
buildPayload.summary = payload.Title
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
174
175
|
buildPayload.description = payload.Description
buildPayload.start = {
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
176
177
178
179
|
dateTime: new Date(payload.Start),
timezone: hasTimezone(payload.StartTimezone)
}
buildPayload.end = {
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
180
|
dateTime: new Date(payload.End),
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
181
|
timeZone: hasTimezone(payload.EndTimezone)
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
}
if (payload.email) {
buildPayload.attendees = [{
email: payload.email
}]
}
if (payload.reminders) {
buildPayload.reminders = {
useDefault: false,
overrides: [{
method: 'email',
minutes: 24 * 60
}]
}
}
if (payload.EventTypeID) {
buildPayload.extendedProperties = {
"private": {
"eventTypeID": payload.EventTypeID
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
201
|
}
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
202
203
|
}
}
|
77034810
Apichat.Tum
fix REST API
|
204
205
206
207
|
} catch (error) {
console.error(error.message)
} finally {
return buildPayload
|
7598c58f
Apichat.Tum
add eventTypeID /...
|
208
209
|
}
},
|
77034810
Apichat.Tum
fix REST API
|
210
211
212
213
214
215
216
|
deleteBuilder: (payload) => {
var buildPayload = {}
try {
buildPayload.calendarId = CALENDAR_ID
buildPayload.eventId = payload.TaskID
} catch (error) {
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
217
|
console.error(error.message)
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
218
219
|
} finally {
return buildPayload
|
77034810
Apichat.Tum
fix REST API
|
220
221
|
}
},
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
222
|
|
21a1ff19
Apichat.Tum
fix follow smartr...
|
223
|
updateBuilder: (payload) => {
|
77034810
Apichat.Tum
fix REST API
|
224
|
var buildPayload = {}
|
77034810
Apichat.Tum
fix REST API
|
225
226
|
try {
buildPayload.calendarId = CALENDAR_ID
|
21a1ff19
Apichat.Tum
fix follow smartr...
|
227
|
buildPayload.eventId = payload.TaskID
|
77034810
Apichat.Tum
fix REST API
|
228
229
230
|
buildPayload.summary = payload.Title
buildPayload.description = payload.Description
buildPayload.start = {
|
21a1ff19
Apichat.Tum
fix follow smartr...
|
231
232
233
|
dateTime: moment(payload.Start).format("YYYY-MM-DDTHH:mm:ssZ"),
timeZone: hasTimezone(payload.StartTimezone)
}
|
77034810
Apichat.Tum
fix REST API
|
234
235
236
237
|
buildPayload.end = {
dateTime: moment(payload.End).format("YYYY-MM-DDTHH:mm:ssZ"),
timeZone: hasTimezone(payload.EndTimezone)
}
|
21a1ff19
Apichat.Tum
fix follow smartr...
|
238
239
240
241
|
if (payload.email) {
buildPayload.attendees = [{
email: payload.email
}]
|
77034810
Apichat.Tum
fix REST API
|
242
243
|
}
if (payload.reminders) {
|
7598c58f
Apichat.Tum
add eventTypeID /...
|
244
245
246
247
248
249
|
buildPayload.reminders = {
useDefault: false,
overrides: [{
method: 'email',
minutes: 24 * 60
}]
|
77034810
Apichat.Tum
fix REST API
|
250
|
}
|
1244ae71
Apichat.Tum
new response
|
251
252
253
|
}
if (payload.EventTypeID) {
buildPayload.extendedProperties = {
|
77034810
Apichat.Tum
fix REST API
|
254
255
256
257
258
259
|
"private": {
"eventTypeID": payload.EventTypeID
}
}
}
if (payload.extendedProperties) {
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
260
|
buildPayload.extendedProperties = payload.extendedProperties
|
77034810
Apichat.Tum
fix REST API
|
261
262
263
264
265
266
267
268
|
}
} catch (error) {
console.error(error.message)
} finally {
return buildPayload
}
}
}
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
77034810
Apichat.Tum
fix REST API
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
77034810
Apichat.Tum
fix REST API
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
77034810
Apichat.Tum
fix REST API
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
|
|
77034810
Apichat.Tum
fix REST API
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
|
|
21a1ff19
Apichat.Tum
fix follow smartr...
|
|
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
|
|
21a1ff19
Apichat.Tum
fix follow smartr...
|
|
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
|
|
7598c58f
Apichat.Tum
add eventTypeID /...
|
|
|
1244ae71
Apichat.Tum
new response
|
|
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
|
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
|
|
cf86e9a3
Apichat.Tum
- ui with oauth2 ...
|
|
|
a54f2679
DESKTOP-RBJDHSM\ADMIN
fix API
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
f3f14fef
TUM.Apichat
add value config ...
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|
f6a4415a
Apichat.Tum
start smart-rms-c...
|
|
|
fbe7f7a7
Apichat.Tum
add api google
|
|
|