Skip to content

Commit 4c131a2

Browse files
author
Kevin Friedman
committed
Various updates
1 parent 8bddaaa commit 4c131a2

9 files changed

Lines changed: 52 additions & 57 deletions

File tree

api/controllers/create.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ const gaConfig = require('./../../config/ga_config.js');
1010
function create(req, res) {
1111
res
1212
.status(200)
13-
.header('Content-Type', 'image/gif')
1413
.header('Access-Control-Allow-Origin', '*')
14+
.header('Access-Control-Allow-Headers', 'Content-Type')
1515
.header('Cache-Control', 'no-cache, no-store, must-revalidate')
16-
.send();
16+
.sendFile(gaConfig.pixelPath);
1717

1818
if (req.query.firstVisit) {
19+
gaConfig.logger.info(req.query, 'Successfully tracked first visit');
20+
1921
cloudwatch.recordMetric(req, gaConfig.visitMetricName);
2022
}
2123
}

api/controllers/javascript.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
const fs = require('fs');
2-
31
/**
42
* getJavascript(req, res)
53
*
@@ -10,6 +8,7 @@ function getJavascript(req, res) {
108
res
119
.status(200)
1210
.header('Access-Control-Allow-Origin', '*')
11+
.header('Access-Control-Allow-Headers', 'Content-Type')
1312
.header('Content-Type', 'application/javascript')
1413
.header('Cache-Control', 'max-age=600')
1514
.render('gap', {

api/controllers/send.js

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,6 @@ function checkMinimumParameters (req) {
1515
if (!req.query.clientId) throw new Error('Client ID was not specified.')
1616
}
1717

18-
/**
19-
* getReturnPixel(req)
20-
*
21-
* @return string
22-
*/
23-
function getReturnPixel () {
24-
}
25-
2618
/**
2719
* sendPageView(req, res)
2820
*
@@ -50,18 +42,18 @@ function sendPageView (req, res) {
5042
headers: {}
5143
})
5244
.then(response => {
53-
gaConfig.logger.info('Successfully tracked page view (' + req.query.page + ').');
45+
gaConfig.logger.info(payLoad, 'Successfully tracked page view');
5446
})
5547
.catch(response => {
56-
gaConfig.logger.error('Error tracking pageview: ' + response.message);
48+
gaConfig.logger.error(payLoad, response, 'Error tracking pageview');
5749
});
5850

5951
res
6052
.status(200)
61-
.header('Content-Type', 'image/gif')
6253
.header('Cache-Control', 'no-cache, no-store, must-revalidate')
6354
.header('Access-Control-Allow-Origin', '*')
64-
.send(getReturnPixel());
55+
.header('Access-Control-Allow-Headers', 'Content-Type')
56+
.sendFile(gaConfig.pixelPath);
6557

6658
cloudwatch.recordMetric(req, gaConfig.pageViewMetricName);
6759
}
@@ -97,18 +89,18 @@ function sendEvent (req, res) {
9789
headers: {}
9890
})
9991
.then(response => {
100-
gaConfig.logger.info('Successfully tracked event (' + req.query.eventCategory + ').');
92+
gaConfig.logger.info(payLoad, 'Successfully tracked event');
10193
})
10294
.catch(response => {
103-
gaConfig.logger.error('Error tracking event: ' + response.message);
95+
gaConfig.logger.error(payLoad, response, 'Error tracking event');
10496
});
10597

10698
res
10799
.status(200)
108-
.header('Content-Type', 'image/gif')
109100
.header('Cache-Control', 'no-cache, no-store, must-revalidate')
110101
.header('Access-Control-Allow-Origin', '*')
111-
.send(getReturnPixel());
102+
.header('Access-Control-Allow-Headers', 'Content-Type')
103+
.sendFile(gaConfig.pixelPath);
112104

113105
cloudwatch.recordMetric(req, gaConfig.pageViewMetricName);
114106
}

app.js

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,57 @@
1-
'use strict';
1+
'use strict'
22

3-
const express = require('express');
3+
const express = require('express')
44

5-
require('dotenv').config();
5+
require('dotenv').config()
66

7-
const logger = require('winston')
8-
const minify = require('express-minify');
7+
const minify = require('express-minify')
98

10-
const create = require('./api/controllers/create.js');
11-
const send = require('./api/controllers/send.js');
12-
const javascript = require('./api/controllers/javascript.js');
9+
const gaConfig = require('./config/ga_config.js');
10+
const create = require('./api/controllers/create.js')
11+
const send = require('./api/controllers/send.js')
12+
const javascript = require('./api/controllers/javascript.js')
1313

14-
const app = express();
14+
const app = express()
1515

16-
app.set('view engine', 'ejs');
17-
app.use(minify());
16+
app.set('view engine', 'ejs')
17+
app.use(minify())
1818

1919
app.options('*', function (req, res) {
2020
res
2121
.status(200)
2222
.header('Access-Control-Allow-Headers', 'Content-Type')
2323
.header('Access-Control-Allow-Origin', '*')
24-
.send();
24+
.send()
2525
})
2626

27-
28-
let router = express.Router();
29-
app.use(process.env.BASE_PATH, router);
27+
let router = express.Router()
28+
app.use(process.env.BASE_PATH, router)
3029

3130
router.route('/swagger')
3231
.get(function (req, res) {
3332
res
3433
.status(200)
3534
.header('Access-Control-Allow-Headers', 'Content-Type')
3635
.header('Access-Control-Allow-Origin', '*')
37-
.sendFile(__dirname + '/swagger/v0.1.json');
38-
});
36+
.sendFile(__dirname + '/swagger/v0.1.json')
37+
})
3938

4039
router.route('/javascript/gaproxy.js')
41-
.get(javascript.getJavascript);
40+
.get(javascript.getJavascript)
4241

4342
router.route('/create')
44-
.get(create.create);
43+
.get(create.create)
4544

4645
router.route('/send/pageview')
47-
.get(send.sendPageView);
46+
.get(send.sendPageView)
4847

4948
router.route('/send/event')
50-
.get(send.sendEvent);
51-
49+
.get(send.sendEvent)
5250

5351
if (!process.env.AWS_LAMBDA_FUNCTION_NAME) {
54-
logger.info('Using ' + process.env.BASE_PATH + ' for base path.');
55-
logger.info('Server listing on port ' + (process.env.PORT || 3001) + ' at ' + process.env.BASE_PATH + '.');
56-
app.listen(process.env.PORT || 3001);
52+
gaConfig.logger.info('Using ' + process.env.BASE_PATH + ' for base path.')
53+
gaConfig.logger.info('Server listing on port ' + (process.env.PORT || 3001) + ' at ' + process.env.BASE_PATH + '.')
54+
app.listen(process.env.PORT || 3001)
5755
}
5856

59-
module.exports = app;
57+
module.exports = app

config/ga_config.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
const winston = require('winston');
1+
const bunyan = require('bunyan')
2+
const path = require('path');
23

34
module.exports = {
45
googleBaseUrl: 'https://www.google-analytics.com',
56
visitMetricName: 'Visit',
67
pageViewMetricName: 'PageView',
7-
logger: new winston.Logger({
8-
transports: [
9-
new winston.transports.Console({
10-
json: true
11-
})
12-
]
13-
})
8+
logger: bunyan.createLogger({
9+
name: 'App'
10+
}),
11+
pixelPath: path.resolve(__dirname + '/../static/collect.gif')
1412
};

index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
const awsServerlessExpress = require('aws-serverless-express');
44
const app = require('./app');
5-
const server = awsServerlessExpress.createServer(app);
5+
6+
const binaryTypes = [
7+
'image/gif'
8+
]
9+
10+
const server = awsServerlessExpress.createServer(app, null, binaryTypes);
611

712
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"express-minify": "^0.2.0",
2929
"serverless": "^1.9.0",
3030
"serverless-plugin-write-env-vars": "^1.0.1",
31-
"winston": "^2.3.1"
31+
"bunyan": "^1.8.10"
3232
},
3333
"devDependencies": {
3434
"supertest": "1.0.0"

swagger/v0.1.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
}
1818
],
1919
"paths": {
20-
"/v0.1/javascript/gaproxy.js": {
20+
"/v0.1/ga-proxy/javascript/gaproxy.js": {
2121
"get": {
2222
"tags": [
2323
"gaproxy"

views/gap.ejs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var gaProxyApp = {
1010
data.trackingId = this.trackingId;
1111
data.clientId = this.clientId;
1212
data.metricNameSpace = this.metricNameSpace;
13+
data.c = new Date().getTime();
1314

1415
this.img = document.createElement('img');
1516
this.img.src = this.serviceBaseUrl + '/' + action.join('/') + '?' + this.serialize(data);

0 commit comments

Comments
 (0)