Redirect to target's location

This commit is contained in:
2020-04-02 15:56:51 +08:00
parent 6d21f04d92
commit 975c69b4f3
2 changed files with 27 additions and 5 deletions

View File

@ -1,3 +1,20 @@
export const getLocationOfTarget = (target: string) => {
return `Location of ${target}`;
import axios from 'axios';
const fetchTarget = async (target: string) => {
return await axios.get(target, {
maxRedirects: 0,
validateStatus: (status) => {
return status >= 300 && status < 400;
},
});
};
export const getLocationOfTarget = async (target: string) => {
try {
const { headers } = await fetchTarget(target);
return headers.location as string;
}
catch (err) {
return undefined;
}
};

View File

@ -3,11 +3,16 @@ import { getLocationOfTarget } from './app.service';
let app = express();
app.get('/*', (req, res) => {
app.get('/*', async (req, res) => {
const target = req.url.slice(1);
const location = getLocationOfTarget(target);
res.send(location);
const location = await getLocationOfTarget(target);
if (location) {
res.redirect(location);
}
else {
res.sendStatus(404);
}
});
app.listen(3000, () => {