summaryrefslogtreecommitdiff
path: root/lib/awfeedback
diff options
context:
space:
mode:
Diffstat (limited to 'lib/awfeedback')
-rw-r--r--lib/awfeedback/index.js63
-rw-r--r--lib/awfeedback/package.json15
-rw-r--r--lib/awfeedback/tokens/client_secret.json1
-rw-r--r--lib/awfeedback/tokens/client_token.json1
4 files changed, 80 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
diff --git a/lib/awfeedback/package.json b/lib/awfeedback/package.json
new file mode 100644
index 0000000..4864e41
--- /dev/null
+++ b/lib/awfeedback/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "awfeedback",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "UNLICENSED",
+ "dependencies": {
+ "google-auth-library": "^0.10.0",
+ "googleapis": "^19.0.0"
+ }
+}
diff --git a/lib/awfeedback/tokens/client_secret.json b/lib/awfeedback/tokens/client_secret.json
new file mode 100644
index 0000000..4973155
--- /dev/null
+++ b/lib/awfeedback/tokens/client_secret.json
@@ -0,0 +1 @@
+{"installed":{"client_id":"607110202132-nenuro8k1eto67iorj6gkjncqrc4kfi6.apps.googleusercontent.com","project_id":"aerial-valor-168323","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"8FeJgtC1Cv-FttEZPrSe7KHp","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file
diff --git a/lib/awfeedback/tokens/client_token.json b/lib/awfeedback/tokens/client_token.json
new file mode 100644
index 0000000..8faae0c
--- /dev/null
+++ b/lib/awfeedback/tokens/client_token.json
@@ -0,0 +1 @@
+{"access_token":"ya29.GltQBM77mgZn34e0222_9njAqHHqj-KemaAmWEkmojLt224L20CYUyxyq5OoiQVGtVXEAAsQQYY95qGQjigQwTjg9pVMi71QAENejf43FjMlb1AucdPGEa390ERT","refresh_token":"1/glG1o8edgir-nUU9ln8E0Fc5MI3zzmlBPDqFHDYfV8Y","token_type":"Bearer","expiry_date":1495328054832} \ No newline at end of file