import parseAcct from '../../acct/parse';
import User from '../../models/user';

export default (redirect, respond) => async (req, res, next) => {
	const { username, host } = parseAcct(req.params.user);
	if (host !== null) {
		return res.sendStatus(422);
	}

	const user = await User.findOne({
		usernameLower: username.toLowerCase(),
		host: null
	});
	if (user === null) {
		return res.sendStatus(404);
	}

	if (username !== user.username) {
		return res.redirect(redirect(user.username));
	}

	return respond(user, req, res, next);
};
