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 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:F', }, 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