discovery-media-player 0.1.170 → 0.1.171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/handler.js +7 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discovery-media-player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.171",
|
|
4
4
|
"description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pdf-viewer",
|
package/server/handler.js
CHANGED
|
@@ -9,7 +9,7 @@ const crypto = require("crypto");
|
|
|
9
9
|
const { capturerSansBloquer } = require("./capture");
|
|
10
10
|
const { Readable } = require("node:stream");
|
|
11
11
|
const { pipeline } = require("node:stream/promises");
|
|
12
|
-
const {
|
|
12
|
+
const { resoudreLien } = require("./shares");
|
|
13
13
|
const { PRESENT_QUOTA_PER_HOUR, PRESENT_CACHE_MS, estSlug } = require("./shared.generated.js");
|
|
14
14
|
const { creerCache, CODE_SATURATION } = require("./cache.js");
|
|
15
15
|
const mesures = require("./mesures.js");
|
|
@@ -1145,13 +1145,17 @@ async function handlerMesure(req, res) {
|
|
|
1145
1145
|
embed ? embedFrameAncestors() : "'self'");
|
|
1146
1146
|
}
|
|
1147
1147
|
|
|
1148
|
-
|
|
1148
|
+
// ⚠️ UNE LECTURE, PAS DEUX. 0.1.170 demandait le lien à `getShareBySlug`, puis, quand il ne s'ouvrait pas,
|
|
1149
|
+
// le RELISAIT par `resoudreLien` pour dire pourquoi — la même ligne, deux allers-retours, et sur le chemin le plus
|
|
1150
|
+
// fréquent des refus (un lien révoqué qui circule encore). `resoudreLien` rend les deux à la fois.
|
|
1151
|
+
const lu = slug ? await resoudreLien(slug, req) : { share: null, refus: "revoked", ligne: null };
|
|
1152
|
+
const share = lu.share;
|
|
1149
1153
|
if (!share) {
|
|
1150
1154
|
// ⚠️ UN LIEN PROTÉGÉ (0028) NE SE CONFOND PAS AVEC UN LIEN RÉVOQUÉ. Expiré, il le DIT — la
|
|
1151
1155
|
// personne peut en demander un autre ; fermé par un mot de passe, il le DEMANDE. Et dans les
|
|
1152
1156
|
// deux cas le FICHIER reste derrière : servir la page du mot de passe en laissant `?file=1`
|
|
1153
1157
|
// streamer le PDF serait une porte de décor (la leçon de `murDocument.test.js`).
|
|
1154
|
-
const { refus, ligne } =
|
|
1158
|
+
const { refus, ligne } = lu;
|
|
1155
1159
|
if (refus === "expired") {
|
|
1156
1160
|
if (String(q.file || "") === "1") { repondreJson(res, 410, { ok: false, error: "expired" }); return; }
|
|
1157
1161
|
if (!embed) return sendHtml(res, 410, lienExpireHtml(ligne));
|