// 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);
	});
};