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
|
var fs = require('fs')
var google = require('googleapis')
var googleAuth = require('google-auth-library')
function AWFeedback (options) { if (!(this instanceof AWFeedback)) return new AWFeedback(options)
options = options || {}
if (!options.express)
throw new Error('Express not provided to AWFeedback');
if (!options.config)
throw new Error('Configuration not provided to AWFeedback');
var express = options.express
var router = express.Router()
var config = options.config
var db = options.db
console.log(config)
var credentials = JSON.parse( fs.readFileSync(config.credentials) )
var token = JSON.parse( fs.readFileSync(config.token) )
var clientSecret = credentials.installed.client_secret
var clientId = credentials.installed.client_id
var redirectUrl = credentials.installed.redirect_uris[0]
var gauth = new googleAuth()
var auth = new gauth.OAuth2(clientId, clientSecret, redirectUrl)
auth.credentials = token
var sheets = google.sheets('v4');
router.get('/index', function (req, res) {
sheets.spreadsheets.values.get({
auth: auth,
spreadsheetId: config.spreadsheet,
range: 'Form Responses 1!A2:E',
}, function(err, response) {
if (err) {
res.json([])
return
}
var rows = response.values;
if (rows.length == 0) {
res.json([])
} else {
var parsed = rows.filter( row => row[4] === 'x' && row[5] === 'x' )
.map( row => [ row[0], row[1], row[3] ] )
res.json(parsed)
}
});
})
router.post('*', function (req, res) {
throw new Error('AWFeedback POST requests not implemented')
})
this._router = router
}
AWFeedback.prototype.middleware = function () {
return this._router
}
module.exports = AWFeedback
|