Redirect to target's location
This commit is contained in:
@ -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;
|
||||
}
|
||||
};
|
||||
|
11
src/app.ts
11
src/app.ts
@ -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, () => {
|
||||
|
Reference in New Issue
Block a user