feat(book-requests): link releases to their source page and hold imports for review

Torznab and Newznab read the feed's details page, plugins may send infoUrl, and the
search drops any link that could carry a credential. A grab can ask to be held for
review whatever its score, and the held review shows the file's own edition facts,
its cover and the release page. Torznab guids are now digested like Newznab's.

Refs #1438
This commit is contained in:
neon
2026-10-20 16:42:16 +00:00
parent 3c87418416
commit a728bf293b
44 changed files with 25375 additions and 68 deletions
@@ -1,5 +1,5 @@
{
"totalRoutes": 663,
"totalRoutes": 665,
"byPermission": {
"(none)": 287,
"Permission.ManageMetadataConfig": 41,
@@ -25,9 +25,9 @@
"Permission.HardcoverSync": 1,
"Permission.ReadwiseSync": 1,
"Permission.StorygraphSync": 1,
"Permission.BookRequestAccess": 26,
"Permission.ManageBookRequests": 20,
"Permission.BookRequestSelfFulfill": 11,
"Permission.BookRequestAccess": 27,
"Permission.ManageBookRequests": 21,
"Permission.BookRequestSelfFulfill": 12,
"Permission.PodcastManageFeeds": 16,
"Permission.PodcastManageRetention": 1,
"Permission.PodcastEditMetadata": 5,
@@ -528,6 +528,18 @@
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-request/book-request-admin.controller.ts",
"className": "BookRequestAdminController",
"methodName": "getReviewCover",
"httpMethod": "GET",
"path": "/admin/book-requests/:id/review/cover",
"permissions": ["Permission.ManageBookRequests"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-request/book-request-admin.controller.ts",
"className": "BookRequestAdminController",
@@ -1056,6 +1068,18 @@
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-request/book-request-self-fulfil.controller.ts",
"className": "BookRequestSelfFulfilController",
"methodName": "getReviewCover",
"httpMethod": "GET",
"path": "/book-request-fulfilment/:id/review/cover",
"permissions": ["Permission.BookRequestAccess", "Permission.BookRequestSelfFulfill"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/book-request/book-request-self-fulfil.controller.ts",
"className": "BookRequestSelfFulfilController",