-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhandler.js
More file actions
64 lines (54 loc) · 1.59 KB
/
Copy pathhandler.js
File metadata and controls
64 lines (54 loc) · 1.59 KB
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
64
'use strict';
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
const d3 = require('d3');
const { getCsv } = require('remote-csv');
const { perHour } = require('./index');
const saveHourData = function(url, keyName, fileName, accessFunction) {
const rawData = getCsv(url).then(function(rawData) {
const date = new Date(2016,0,1,0);
const data = perHour(rawData, date, keyName, 'Data', accessFunction);
const csvData = d3.csvFormat(data.values);
console.log(csvData)
saveToS3('traffic-sd', fileName, csvData);
})
};
const saveToS3 = function(bucket, fileName, data) {
const params = { Bucket: bucket, Key: fileName, Body: data };
s3.putObject(params, function(err, data) {
if (err) {
console.log(err)
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
};
const hourData = (event, context, callback) => {
saveHourData(event['url'], event['key'], event['fileName']);
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'saved successfully',
input: event,
}),
};
callback(null, response);
};
const injuredPerAccidents = (event, context, callback) => {
const accessFunction = function(d) {
return (parseInt(d.accidents_injured)/parseInt(d.accidents))
};
saveHourData(event['url'], event['key'], event['fileName'], accessFunction);
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'saved successfully',
input: event,
}),
};
callback(null, response);
};
module.exports = {
hourData: hourData,
injuredPerAccidents: injuredPerAccidents
}