diff options
Diffstat (limited to 'lib/awfeedback/index.js')
| -rw-r--r-- | lib/awfeedback/index.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/awfeedback/index.js b/lib/awfeedback/index.js new file mode 100644 index 0000000..187661b --- /dev/null +++ b/lib/awfeedback/index.js @@ -0,0 +1,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[4] === '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 |
