mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-22 14:38:11 +02:00
API externe : envoi d'images avec la clé API
Avec la clé API, aucune route ne permettait d'envoyer une image : /publish n'acceptait qu'une URL publique à télécharger, et le parseur JSON global plafonnait toute requête à 100 Ko, ce qui interdisait le base64. - POST /api/v1/media : envoi d'une image (multipart « file » ou JSON « imageData » en base64), rangée dans la médiathèque ; renvoie un id. - /publish et PATCH /posts/:id acceptent en plus mediaId, imageData ou un fichier multipart « image » (une seule source par requête). - Requêtes JSON sous /api/v1 limitées à 15 Mo ; images à 10 Mo, format vérifié d'après le contenu (JPEG, PNG, WebP, GIF). - PATCH résout l'image avant toute modification, pour ne pas laisser un post à moitié modifié si l'image est refusée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NqYZn5796yWGo9Rq81an9M
This commit is contained in:
6 files changed
+597
-84
No files matched your search
+9
-5
@@ -1,4 +1,5 @@
|
||||
import express, { type Request, Response, NextFunction } from "express";
|
||||
import type { IncomingMessage } from "http";
|
||||
import path from "path";
|
||||
import fs from "fs";
|
||||
import session from "express-session";
|
||||
@@ -87,11 +88,14 @@ declare module 'http' {
|
||||
rawBody: unknown
|
||||
}
|
||||
}
|
||||
app.use(express.json({
|
||||
verify: (req, _res, buf) => {
|
||||
req.rawBody = buf;
|
||||
}
|
||||
}));
|
||||
const keepRawBody = (req: IncomingMessage, _res: unknown, buf: Buffer) => {
|
||||
req.rawBody = buf;
|
||||
};
|
||||
// L'API externe accepte des images en base64 (imageData) : 10 MB d'image font
|
||||
// ~13,4 MB une fois encodés. Ce parseur passe avant le parseur global (100 KB),
|
||||
// qui ignore ensuite un corps déjà lu.
|
||||
app.use('/api/v1', express.json({ limit: '15mb', verify: keepRawBody }));
|
||||
app.use(express.json({ verify: keepRawBody }));
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
|
||||
// Validation renforcée du SESSION_SECRET
|
||||
|
||||
Reference in new issue
Block a user