Skip to content
Snippets Groups Projects
Commit d668fbe5 authored by Bernard Roland (Student Com20)'s avatar Bernard Roland (Student Com20)
Browse files

Geting user images no longer requires verification

parent a16a02b6
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,53 @@ user.get('/name/:username', async (req, res) => {
}
});
function sendRangedData(req: Request, res: Response, data: Buffer) {
res.setHeader('Accept-Ranges', 'bytes');
const range = req.range(data.length);
if (typeof range === 'object' && range.type === 'bytes' && range.length === 1) {
res.status(206);
res.setHeader('Content-Range', `${range[0].start}\-${range[0].end}/${data.length}`);
res.send(data.slice(range[0].start, range[0].end+1));
} else {
res.status(200);
res.send(data);
}
}
user.get('/:uuid/image', async (req, res) => {
try {
const id = req.params.uuid;
if (validate(id)) {
const user = await database('users')
.select({
image: 'users.image'
})
.where({ id: id });
if (user.length >= 1 && user[0].image) {
res.setHeader('Content-Type', 'image/png');
sendRangedData(req, res, user[0].image);
} else if (user.length >= 1) {
res.status(404).send();
} else {
res.status(404).json({
status: 'error',
message: 'user not found',
});
}
} else {
res.status(400).json({
status: 'error',
message: 'malformed uuid',
});
}
} catch (e) {
res.status(400).json({
status: 'error',
message: 'failed get user',
});
}
});
user.use(requireVerification);
user.get('/', async (req, res) => {
......@@ -258,49 +305,4 @@ user.get('/:uuid', async (req, res) => {
}
});
function sendRangedData(req: Request, res: Response, data: Buffer) {
res.setHeader('Accept-Ranges', 'bytes');
const range = req.range(data.length);
if (typeof range === 'object' && range.type === 'bytes' && range.length === 1) {
res.status(206);
res.setHeader('Content-Range', `${range[0].start}\-${range[0].end}/${data.length}`);
res.send(data.slice(range[0].start, range[0].end+1));
} else {
res.status(200);
res.send(data);
}
}
user.get('/:uuid/image', async (req, res) => {
try {
const id = req.params.uuid;
if (validate(id)) {
const user = await database('users')
.select({
image: 'users.image'
})
.where({ id: id });
if (user.length >= 1) {
res.setHeader('Content-Type', 'image/png');
sendRangedData(req, res, user[0].image);
} else {
res.status(404).json({
status: 'error',
message: 'user not found',
});
}
} else {
res.status(400).json({
status: 'error',
message: 'malformed uuid',
});
}
} catch (e) {
res.status(400).json({
status: 'error',
message: 'failed get user',
});
}
});
export default user;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment