UNPKG

31.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"server-manifestjson.js","sourceRoot":"","sources":["../../../../src/http/server-manifestjson.ts"],"names":[],"mappings":"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","sourcesContent":["// ==LICENSE-BEGIN==\n// Copyright 2017 European Digital Reading Lab. All rights reserved.\n// Licensed to the Readium Foundation under one or more contributor license agreements.\n// Use of this source code is governed by a BSD-style license\n// that can be found in the LICENSE file exposed on Github (readium) in the project repository.\n// ==LICENSE-END==\n\nimport * as crypto from \"crypto\";\nimport * as css2json from \"css2json\";\nimport * as debug_ from \"debug\";\nimport * as DotProp from \"dot-prop\";\nimport * as express from \"express\";\nimport * as jsonMarkup from \"json-markup\";\nimport * as path from \"path\";\n\nimport { TaJsonSerialize } from \"@r2-lcp-js/serializable\";\nimport { Publication } from \"@r2-shared-js/models/publication\";\nimport { Link } from \"@r2-shared-js/models/publication-link\";\nimport {\n getAllMediaOverlays, mediaOverlayURLParam, mediaOverlayURLPath,\n} from \"@r2-shared-js/parser/epub\";\nimport { encodeURIComponent_RFC3986, isHTTP } from \"@r2-utils-js/_utils/http/UrlUtils\";\nimport { sortObject, traverseJsonObjects } from \"@r2-utils-js/_utils/JsonUtils\";\n\nimport { jsonSchemaValidate } from \"../utils/json-schema-validate\";\nimport {\n IRequestPayloadExtension, IRequestQueryParams, _jsonPath, _pathBase64, _show,\n} from \"./request-ext\";\nimport { Server } from \"./server\";\n\nconst debug = debug_(\"r2:streamer#http/server-manifestjson\");\n\nexport function serverManifestJson(server: Server, routerPathBase64: express.Router) {\n\n // https://github.com/mafintosh/json-markup/blob/master/style.css\n const jsonStyle = `\n.json-markup {\n line-height: 17px;\n font-size: 13px;\n font-family: monospace;\n white-space: pre;\n}\n.json-markup-key {\n font-weight: bold;\n}\n.json-markup-bool {\n color: firebrick;\n}\n.json-markup-string {\n color: green;\n}\n.json-markup-null {\n color: gray;\n}\n.json-markup-number {\n color: blue;\n}\n`;\n\n const routerManifestJson = express.Router({ strict: false });\n // routerManifestJson.use(morgan(\"combined\", { stream: { write: (msg: any) => debug(msg) } }));\n\n routerManifestJson.get([\"/\", \"/\" + _show + \"/:\" + _jsonPath + \"?\"],\n async (req: express.Request, res: express.Response) => {\n\n const reqparams = (req as IRequestPayloadExtension).params;\n\n if (!reqparams.pathBase64) {\n reqparams.pathBase64 = (req as IRequestPayloadExtension).pathBase64;\n }\n if (!reqparams.lcpPass64) {\n reqparams.lcpPass64 = (req as IRequestPayloadExtension).lcpPass64;\n }\n\n const isShow = req.url.indexOf(\"/show\") >= 0 || (req.query as IRequestQueryParams).show;\n if (!reqparams.jsonPath && (req.query as IRequestQueryParams).show) {\n reqparams.jsonPath = (req.query as IRequestQueryParams).show;\n }\n\n // debug(req.method);\n const isHead = req.method.toLowerCase() === \"head\";\n if (isHead) {\n debug(\"HEAD !!!!!!!!!!!!!!!!!!!\");\n }\n\n const isCanonical = (req.query as IRequestQueryParams).canonical &&\n (req.query as IRequestQueryParams).canonical === \"true\";\n\n const isSecureHttp = req.secure ||\n req.protocol === \"https\" ||\n req.get(\"X-Forwarded-Proto\") === \"https\"\n ;\n\n // reqparams.pathBase64 is already decoded!\n // const decoded = decodeURIComponent(reqparams.pathBase64);\n const pathBase64Str = Buffer.from(reqparams.pathBase64, \"base64\").toString(\"utf8\");\n\n // const fileName = path.basename(pathBase64Str);\n // const ext = path.extname(fileName).toLowerCase();\n\n let publication: Publication;\n try {\n publication = await server.loadOrGetCachedPublication(pathBase64Str);\n } catch (err) {\n debug(err);\n res.status(500).send(\"<html><body><p>Internal Server Error</p><p>\"\n + err + \"</p></body></html>\");\n return;\n }\n\n // dumpPublication(publication);\n\n if (reqparams.lcpPass64 && !server.disableDecryption) {\n // reqparams.lcpPass64 is already decoded!\n // const decoded = decodeURIComponent(reqparams.lcpPass64);\n const lcpPass = Buffer.from(reqparams.lcpPass64, \"base64\").toString(\"utf8\");\n if (publication.LCP) {\n try {\n await publication.LCP.tryUserKeys([lcpPass]); // hex\n } catch (err) {\n // a bit brutal, but that's just for testing anyway (not real-world usage pattern)\n publication.LCP.ContentKey = undefined;\n debug(err);\n const errMsg = \"FAIL publication.LCP.tryUserKeys(): \" + err;\n debug(errMsg);\n res.status(500).send(\"<html><body><p>Internal Server Error</p><p>\"\n + errMsg + \"</p></body></html>\");\n return;\n }\n }\n }\n\n // debug(req.url); // path local to this router\n // debug(req.baseUrl); // path local to above this router\n // debug(req.originalUrl); // full path (req.baseUrl + req.url)\n // url.parse(req.originalUrl, false).host\n // req.headers.host has port, not req.hostname\n\n const rootUrl = (isSecureHttp ? \"https://\" : \"http://\")\n + req.headers.host + \"/pub/\"\n + (reqparams.lcpPass64 ?\n (server.lcpBeginToken + encodeURIComponent_RFC3986(reqparams.lcpPass64) + server.lcpEndToken) :\n \"\")\n + encodeURIComponent_RFC3986(reqparams.pathBase64);\n const manifestURL = rootUrl + \"/\" + \"manifest.json\";\n\n const contentType =\n (publication.Metadata && publication.Metadata.RDFType &&\n /http[s]?:\\/\\/schema\\.org\\/Audiobook$/.test(publication.Metadata.RDFType)) ?\n \"application/audiobook+json\" : ((publication.Metadata && publication.Metadata.RDFType &&\n (/http[s]?:\\/\\/schema\\.org\\/ComicStory$/.test(publication.Metadata.RDFType) ||\n /http[s]?:\\/\\/schema\\.org\\/VisualNarrative$/.test(publication.Metadata.RDFType))) ? \"application/divina+json\" :\n \"application/webpub+json\");\n\n const selfLink = publication.searchLinkByRel(\"self\");\n if (!selfLink) {\n publication.AddLink(contentType, [\"self\"], manifestURL, undefined);\n }\n\n // // test JSON Schema string format \"uri-template\" vs. \"uri-reference\"\n // publication.AddLink(\"txt\", [\"test1\"], \"./relative/%20URL?param=val#hash\", false);\n // publication.AddLink(\"txt\", [\"test2\"], \"./relative/%20URL?param=val#hash\", true);\n // publication.AddLink(\"txt\", [\"test3\"], \"./relative/%20URL?param=val#hash\", undefined);\n\n // publication.AddLink(\"txt\", [\"test4\"], \"./relative/%20URL{var}/?param=val#hash\", false);\n // publication.AddLink(\"txt\", [\"test5\"], \"./relative/%20URL{var}/?param=val#hash\", true);\n // publication.AddLink(\"txt\", [\"test6\"], \"./relative/%20URL{var}/?param=val#hash\", undefined);\n\n // publication.AddLink(\"txt\", [\"test7\"], \"http://absolute.com/%20URL?param=val#hash\", false);\n // publication.AddLink(\"txt\", [\"test8\"], \"http://absolute.com/%20URL?param=val#hash\", true);\n // publication.AddLink(\"txt\", [\"test9\"], \"http://absolute.com/%20URL?param=val#hash\", undefined);\n\n // publication.AddLink(\"txt\", [\"test10\"], \"http://absolute.com/%20URL{var}/?param=val#hash\", false);\n // publication.AddLink(\"txt\", [\"test11\"], \"http://absolute.com/%20URL{var}/?param=val#hash\", true);\n // publication.AddLink(\"txt\", [\"test12\"], \"http://absolute.com/%20URL{var}/?param=val#hash\", undefined);\n\n function absoluteURL(href: string): string {\n return rootUrl + \"/\" + href;\n }\n\n function absolutizeURLs(jsonObj: any) {\n traverseJsonObjects(jsonObj,\n (obj) => {\n if (obj.href && typeof obj.href === \"string\"\n && !isHTTP(obj.href)) {\n // obj.href_ = obj.href;\n obj.href = absoluteURL(obj.href);\n }\n\n if (obj[\"media-overlay\"] && typeof obj[\"media-overlay\"] === \"string\"\n && !isHTTP(obj[\"media-overlay\"])) {\n // obj[\"media-overlay_\"] = obj[\"media-overlay\"];\n obj[\"media-overlay\"] = absoluteURL(obj[\"media-overlay\"]);\n }\n });\n }\n\n let hasMO = false;\n if (publication.Spine) {\n const link = publication.Spine.find((l) => {\n if (l.Properties && l.Properties.MediaOverlay) {\n return true;\n }\n return false;\n });\n if (link) {\n hasMO = true;\n }\n }\n if (hasMO) {\n const moLink = publication.searchLinkByRel(\"media-overlay\");\n if (!moLink) {\n const moURL = // rootUrl + \"/\" +\n mediaOverlayURLPath +\n \"?\" + mediaOverlayURLParam + \"={path}\";\n publication.AddLink(\"application/vnd.syncnarr+json\", [\"media-overlay\"], moURL, true);\n }\n }\n\n let coverImage: string | undefined;\n const coverLink = publication.GetCover();\n if (coverLink) {\n coverImage = coverLink.Href;\n if (coverImage && !isHTTP(coverImage)) {\n coverImage = absoluteURL(coverImage);\n }\n }\n\n if (isShow) {\n let objToSerialize: any = null;\n\n if (reqparams.jsonPath) {\n switch (reqparams.jsonPath) {\n\n case \"all\": {\n objToSerialize = publication;\n break;\n }\n case \"cover\": {\n objToSerialize = publication.GetCover();\n break;\n }\n case \"mediaoverlays\": {\n try {\n objToSerialize = await getAllMediaOverlays(publication);\n } catch (err) {\n debug(err);\n res.status(500).send(\"<html><body><p>Internal Server Error</p><p>\"\n + err + \"</p></body></html>\");\n return;\n }\n break;\n }\n case \"spine\": {\n objToSerialize = publication.Spine;\n break;\n }\n case \"pagelist\": {\n objToSerialize = publication.PageList;\n break;\n }\n case \"landmarks\": {\n objToSerialize = publication.Landmarks;\n break;\n }\n case \"links\": {\n objToSerialize = publication.Links;\n break;\n }\n case \"resources\": {\n objToSerialize = publication.Resources;\n break;\n }\n case \"toc\": {\n objToSerialize = publication.TOC;\n break;\n }\n case \"metadata\": {\n objToSerialize = publication.Metadata;\n break;\n }\n default: {\n objToSerialize = null;\n }\n }\n } else {\n objToSerialize = publication;\n }\n\n if (!objToSerialize) {\n objToSerialize = {};\n }\n\n const jsonObj = TaJsonSerialize(objToSerialize);\n\n let validationStr: string | undefined;\n const doValidate = !reqparams.jsonPath || reqparams.jsonPath === \"all\";\n if (doValidate) {\n\n const jsonSchemasRootpath = path.join(process.cwd(), \"misc\", \"json-schema\");\n const jsonSchemasNames = [\n \"webpub-manifest/publication\", // must be first!\n \"webpub-manifest/contributor-object\",\n \"webpub-manifest/contributor\",\n \"webpub-manifest/link\",\n \"webpub-manifest/metadata\",\n \"webpub-manifest/subcollection\",\n \"webpub-manifest/properties\",\n \"webpub-manifest/subject\",\n \"webpub-manifest/subject-object\",\n \"webpub-manifest/extensions/epub/metadata\",\n \"webpub-manifest/extensions/epub/subcollections\",\n \"webpub-manifest/extensions/epub/properties\",\n \"webpub-manifest/extensions/presentation/metadata\",\n \"webpub-manifest/extensions/presentation/properties\",\n \"webpub-manifest/language-map\",\n // \"opds/feed\",\n // \"opds/publication\",\n \"opds/acquisition-object\",\n \"opds/catalog-entry\",\n // \"opds/feed-metadata\",\n \"opds/properties\",\n // \"opds/authentication\",\n // \"lcp/lcpdf\",\n // \"lcp/license\",\n // \"lcp/link\",\n // \"lcp/status\",\n ];\n\n const validationErrors =\n jsonSchemaValidate(jsonSchemasRootpath, jsonSchemasNames, jsonObj);\n if (validationErrors) {\n validationStr = \"\";\n\n for (const err of validationErrors) {\n\n debug(\"JSON Schema validation FAIL.\");\n debug(err);\n\n const val = DotProp.get(jsonObj, err.jsonPath);\n const valueStr = (typeof val === \"string\") ?\n `${val}` :\n ((val instanceof Array || typeof val === \"object\") ?\n `${JSON.stringify(val)}` :\n \"\");\n debug(valueStr);\n\n const title = DotProp.get(jsonObj, \"metadata.title\");\n debug(title);\n\n validationStr +=\n // tslint:disable-next-line:max-line-length\n `\\n\"${title}\"\\n\\n${err.ajvMessage}: ${valueStr}\\n\\n'${err.ajvDataPath.replace(/^\\./, \"\")}' (${err.ajvSchemaPath})\\n\\n`;\n }\n }\n }\n\n absolutizeURLs(jsonObj);\n\n // const jsonStr = global.JSON.stringify(jsonObj, null, \" \");\n\n // // breakLength: 100 maxArrayLength: undefined\n // const dumpStr = util.inspect(objToSerialize,\n // { showHidden: false, depth: 1000, colors: false, customInspect: true });\n\n let jsonPretty = jsonMarkup(jsonObj, css2json(jsonStyle));\n\n const regex = new RegExp(\">\" + rootUrl + \"/([^<]+</a>)\", \"g\");\n jsonPretty = jsonPretty.replace(regex, \">$1\");\n jsonPretty = jsonPretty.replace(/>manifest.json<\\/a>/, \">\" + rootUrl + \"/manifest.json</a>\");\n\n res.status(200).send(\"<html>\" +\n \"<head><script type=\\\"application/ld+json\\\" href=\\\"\" +\n manifestURL +\n \"\\\"></script></head>\" +\n \"<body>\" +\n \"<h1>\" + path.basename(pathBase64Str) + \"</h1>\" +\n // tslint:disable-next-line:max-line-length\n (coverImage ? \"<a href=\\\"\" + coverImage + \"\\\"><div style=\\\"width: 400px;\\\"><img src=\\\"\" + coverImage + \"\\\" alt=\\\"\\\" style=\\\"display: block; width: 100%; height: auto;\\\"/></div></a>\" : \"\") +\n \"<hr><p><pre>\" + jsonPretty + \"</pre></p>\" +\n // tslint:disable-next-line:max-line-length\n (doValidate ? (validationStr ? (\"<hr><p><pre>\" + validationStr + \"</pre></p>\") : (\"<hr><p>JSON SCHEMA OK.</p>\")) : \"\") +\n // \"<hr><p><pre>\" + jsonStr + \"</pre></p>\" +\n // \"<p><pre>\" + dumpStr + \"</pre></p>\" +\n \"</body></html>\");\n } else {\n server.setResponseCORS(res);\n res.set(\"Content-Type\", `${contentType}; charset=utf-8`);\n\n const publicationJsonObj = TaJsonSerialize(publication);\n\n // absolutizeURLs(publicationJsonObj);\n\n if (isCanonical) {\n if (publicationJsonObj.links) {\n delete publicationJsonObj.links;\n }\n }\n\n const publicationJsonStr = isCanonical ?\n global.JSON.stringify(sortObject(publicationJsonObj), null, \"\") :\n global.JSON.stringify(publicationJsonObj, null, \" \");\n\n const checkSum = crypto.createHash(\"sha256\");\n checkSum.update(publicationJsonStr);\n const hash = checkSum.digest(\"hex\");\n\n const match = req.header(\"If-None-Match\");\n if (match === hash) {\n debug(\"manifest.json cache\");\n res.status(304); // StatusNotModified\n res.end();\n return;\n }\n\n res.setHeader(\"ETag\", hash);\n // server.setResponseCacheHeaders(res, true);\n\n const links = getPreFetchResources(publication);\n if (links && links.length) {\n let n = 0;\n let prefetch = \"\";\n for (const l of links) {\n n++;\n if (n > server.maxPrefetchLinks) {\n break;\n }\n const href = absoluteURL(l.Href);\n prefetch += \"<\" + href + \">;\" + \"rel=prefetch,\";\n }\n res.setHeader(\"Link\", prefetch);\n }\n\n res.status(200);\n\n if (isHead) {\n res.end();\n } else {\n res.send(publicationJsonStr);\n }\n }\n });\n\n routerPathBase64.use(\"/:\" + _pathBase64 + \"/manifest.json\", routerManifestJson);\n}\n\nfunction getPreFetchResources(publication: Publication): Link[] {\n const links: Link[] = [];\n\n if (publication.Resources) {\n // https://w3c.github.io/publ-epub-revision/epub32/spec/epub-spec.html#cmt-grp-font\n const mediaTypes = [\"text/css\",\n \"text/javascript\", \"application/javascript\",\n \"application/vnd.ms-opentype\", \"font/otf\", \"application/font-sfnt\",\n \"font/ttf\", \"application/font-sfnt\",\n \"font/woff\", \"application/font-woff\", \"font/woff2\"];\n for (const mediaType of mediaTypes) {\n for (const link of publication.Resources) {\n if (link.TypeLink === mediaType) {\n links.push(link);\n }\n }\n }\n }\n\n return links;\n}\n"]}
\No newline at end of file