Add /edit-avatar endpoint

7448094f1b1da8d41d7ecdac088f2bae0d075389

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +42 -0Ignore whitespace
src/endpoints/characters.js+42 -0
@@ -1133,9 +1133,50 @@ router.post('/edit', validateAvatarUrlMiddleware, async function (request, respo
1133 return response.sendStatus(200);1133 return response.sendStatus(200);
1134 } catch (err) {1134 } catch (err) {
1135 console.error('An error occurred, character edit invalidated.', err);1135 console.error('An error occurred, character edit invalidated.', err);
1136 return response.sendStatus(500);
1136 }1137 }
1137});1138});
11381139
1140router.post('/edit-avatar', validateAvatarUrlMiddleware, async function (request, response) {
1141 try {
1142 if (!request.file) {
1143 return response.status(400).send('Error: no file uploaded');
1144 }
1145
1146 if (!request.body || !request.body.avatar_url) {
1147 return response.status(400).send('Error: no avatar_url in request body');
1148 }
1149
1150 const uploadPath = path.join(request.file.destination, request.file.filename);
1151 if (!fs.existsSync(uploadPath)) {
1152 return response.status(400).send('Error: uploaded file does not exist');
1153 }
1154 const characterPath = path.join(request.user.directories.characters, request.body.avatar_url);
1155 if (!fs.existsSync(characterPath)) {
1156 return response.status(400).send('Error: character file does not exist');
1157 }
1158 const data = await readCharacterData(characterPath);
1159 if (!data) {
1160 return response.status(400).send('Error: failed to read character data');
1161 }
1162
1163 const crop = tryParse(request.query.crop);
1164 const fileName = request.body.avatar_url.replace('.png', '');
1165 await writeCharacterData(uploadPath, data, fileName, request, crop);
1166
1167 // Remove uploaded temp file
1168 fs.unlinkSync(uploadPath);
1169
1170 // Reset images caches
1171 cacheBuster.bust(request, response);
1172 invalidateThumbnail(request.user.directories, 'avatar', request.body.avatar_url);
1173
1174 return response.sendStatus(200);
1175 } catch (err) {
1176 console.error('An error occurred while editing avatar', err);
1177 return response.sendStatus(500);
1178 }
1179});
11391180
1140/**1181/**
1141 * Handle a POST request to edit a character attribute.1182 * Handle a POST request to edit a character attribute.
@@ -1184,6 +1225,7 @@ router.post('/edit-attribute', validateAvatarUrlMiddleware, async function (requ
1184 return response.sendStatus(200);1225 return response.sendStatus(200);
1185 } catch (err) {1226 } catch (err) {
1186 console.error('An error occurred, character edit invalidated.', err);1227 console.error('An error occurred, character edit invalidated.', err);
1228 return response.sendStatus(500);
1187 }1229 }
1188});1230});
11891231