-
Notifications
You must be signed in to change notification settings - Fork 10
/
weather.js
55 lines (51 loc) · 1.33 KB
/
weather.js
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
"use strict";
const request = require("request");
const rp = require("request-promise");
const bugsnag = require("bugsnag");
bugsnag.register(`${process.env.BUGSNAG_KEY}`);
exports.handler = function(event, context, callback) {
const lat = event.queryStringParameters.lat;
const lng = event.queryStringParameters.lng;
const units = event.queryStringParameters.units || "auto";
const callbackHeaders = {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Headers": "Content-Type"
};
if (!lat) {
callback(null, {
statusCode: 400,
headers: callbackHeaders,
body: "Missing 'lat' parameter",
});
}
if (!lng) {
callback(null, {
statusCode: 400,
headers: callbackHeaders,
body: "Missing 'lng' parameter",
});
}
const apiUrlToCall = `https://api.darksky.net/forecast/${process.env.DARK_SKY_KEY}/${lat},${lng}/?units=${units}`;
const rpOptions = {
uri: apiUrlToCall,
headers: {
"User-Agent": "Request-Promise"
},
json: true
};
rp(rpOptions)
.then(body => {
callback(null, {
statusCode: 200,
headers: callbackHeaders,
body: JSON.stringify(body),
});
})
.catch(err => {
callback(bugsnag.notify(new Error(err)), {
statusCode: 500,
headers: callbackHeaders,
body: JSON.stringify(err),
});
});
};