get outlook data

This commit is contained in:
Matt Walsh
2020-09-23 14:43:49 -05:00
parent 37eb88a90d
commit 24855fd959
4 changed files with 175 additions and 4 deletions

45
cors/outlook.js Normal file
View File

@@ -0,0 +1,45 @@
// pass through api requests
// http(s) modules
const https = require('https');
// url parsing
const queryString = require('querystring');
// return an express router
module.exports = (req, res) => {
// add out-going headers
const headers = {};
headers['user-agent'] = '(WeatherStar 4000+, ws4000@netbymatt.com)';
headers['accept'] = req.headers.accept;
// get query paramaters if the exist
const queryParams = Object.keys(req.query).reduce((acc, key) => {
// skip the paramater 'u'
if (key === 'u') return acc;
// add the paramter to the resulting object
acc[key] = req.query[key];
return acc;
},{});
let query = queryString.encode(queryParams);
if (query.length > 0) query = '?' + query;
// get the page
https.get('https://www.cpc.ncep.noaa.gov/' + req.path + query, {
headers,
}, getRes => {
// pull some info
const {statusCode} = getRes;
// pass the status code through
res.status(statusCode);
// set headers
res.header('content-type', getRes.headers['content-type']);
res.header('last-modified', getRes.headers['last-modified']);
// pipe to response
getRes.pipe(res);
}).on('error', e=>{
console.error(e);
});
};