UNPKG

19.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"server-lcp-lsd-show.js","sourceRoot":"","sources":["../../../../src/http/server-lcp-lsd-show.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 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 morgan from \"morgan\";\nimport * as path from \"path\";\nimport * as request from \"request\";\nimport * as requestPromise from \"request-promise-native\";\n\nimport { LCP } from \"@r2-lcp-js/parser/epub/lcp\";\nimport { LSD } from \"@r2-lcp-js/parser/epub/lsd\";\nimport { TaJsonDeserialize, TaJsonSerialize } from \"@r2-lcp-js/serializable\";\nimport {\n encodeURIComponent_RFC3986, ensureAbsolute, isHTTP,\n} from \"@r2-utils-js/_utils/http/UrlUtils\";\nimport { traverseJsonObjects } from \"@r2-utils-js/_utils/JsonUtils\";\nimport { streamToBufferPromise } from \"@r2-utils-js/_utils/stream/BufferUtils\";\n\nimport { jsonSchemaValidate } from \"../utils/json-schema-validate\";\nimport { IRequestPayloadExtension, _urlEncoded } from \"./request-ext\";\nimport { Server } from \"./server\";\nimport { trailingSlashRedirect } from \"./server-trailing-slash-redirect\";\nimport { serverRemotePub_PATH } from \"./server-url\";\n\nconst debug = debug_(\"r2:streamer#http/lcp-lsd-show\");\n\n// tslint:disable-next-line:variable-name\nexport const serverLCPLSD_show_PATH = \"/lcp-lsd-show\";\n\nexport function serverLCPLSD_show(_server: Server, topRouter: express.Application) {\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 // tslint:disable-next-line:variable-name\n const routerLCPLSD_show = express.Router({ strict: false });\n routerLCPLSD_show.use(morgan(\"combined\", { stream: { write: (msg: any) => debug(msg) } }));\n\n routerLCPLSD_show.use(trailingSlashRedirect);\n\n routerLCPLSD_show.get(\"/\", (_req: express.Request, res: express.Response) => {\n\n let html = \"<html><head>\";\n html += `<script type=\"text/javascript\">function encodeURIComponent_RFC3986(str) { ` +\n `return encodeURIComponent(str).replace(/[!'()*]/g, (c) => { ` +\n `return \"%\" + c.charCodeAt(0).toString(16); }); }` +\n `function go(evt) {` +\n `if (evt) { evt.preventDefault(); } var url = ` +\n `location.origin +` +\n // `location.protocol + '//' + location.hostname + ` +\n // `(location.port ? (':' + location.port) : '') + ` +\n ` '${serverLCPLSD_show_PATH}/' +` +\n ` encodeURIComponent_RFC3986(document.getElementById(\"url\").value);` +\n `location.href = url;}</script>`;\n html += \"</head>\";\n\n html += \"<body><h1>LCP / LSD examiner</h1>\";\n\n html += `<form onsubmit=\"go();return false;\">` +\n `<input type=\"text\" name=\"url\" id=\"url\" size=\"80\">` +\n `<input type=\"submit\" value=\"Go!\"></form>`;\n\n html += \"</body></html>\";\n\n res.status(200).send(html);\n });\n\n routerLCPLSD_show.param(\"urlEncoded\", (req, _res, next, value, _name) => {\n (req as IRequestPayloadExtension).urlEncoded = value;\n next();\n });\n\n routerLCPLSD_show.get(\"/:\" + _urlEncoded + \"(*)\", async (req: express.Request, res: express.Response) => {\n\n const reqparams = (req as IRequestPayloadExtension).params;\n\n if (!reqparams.urlEncoded) {\n reqparams.urlEncoded = (req as IRequestPayloadExtension).urlEncoded;\n }\n\n const urlDecoded = reqparams.urlEncoded;\n // if (urlDecoded.substr(-1) === \"/\") {\n // urlDecoded = urlDecoded.substr(0, urlDecoded.length - 1);\n // }\n debug(urlDecoded);\n\n const isSecureHttp = req.secure ||\n req.protocol === \"https\" ||\n req.get(\"X-Forwarded-Proto\") === \"https\"\n ;\n const rootUrl = (isSecureHttp ? \"https://\" : \"http://\")\n + req.headers.host;\n\n const failure = (err: any) => {\n debug(err);\n res.status(500).send(\"<html><body><p>Internal Server Error</p><p>\"\n + err + \"</p></body></html>\");\n };\n\n const success = async (response: request.RequestResponse) => {\n\n // Object.keys(response.headers).forEach((header: string) => {\n // debug(header + \" => \" + response.headers[header]);\n // });\n\n const isBadStatusCode = response.statusCode && (response.statusCode < 200 || response.statusCode >= 300);\n if (isBadStatusCode) {\n failure(\"HTTP CODE \" + response.statusCode);\n return;\n }\n\n let responseData: Buffer;\n try {\n responseData = await streamToBufferPromise(response);\n } catch (err) {\n debug(err);\n res.status(500).send(\"<html><body><p>Internal Server Error</p><p>\" + err + \"</p></body></html>\");\n return;\n }\n const responseStr = responseData.toString(\"utf8\");\n const responseJson = JSON.parse(responseStr);\n\n const isStatusDoc = responseJson.id &&\n responseJson.status &&\n responseJson.updated &&\n responseJson.links;\n\n const lcpOrLsd: LCP | LSD =\n isStatusDoc ?\n // tslint:disable-next-line: max-line-length\n TaJsonDeserialize<LSD>(responseJson, LSD) : // \"application/vnd.readium.license.status.v1.0+json\"\n // tslint:disable-next-line: max-line-length\n TaJsonDeserialize<LCP>(responseJson, LCP); // \"application/vnd.readium.lcp.license.v1.0+json\"\n\n const lcpOrLsdJson = TaJsonSerialize(lcpOrLsd);\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 isStatusDoc ? \"lcp/status\" : \"lcp/license\",\n \"lcp/link\",\n ];\n // debug(jsonSchemasNames);\n\n const validationErrors =\n jsonSchemaValidate(jsonSchemasRootpath, jsonSchemasNames, lcpOrLsdJson);\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(lcpOrLsdJson, 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 validationStr +=\n // tslint:disable-next-line:max-line-length\n `\\n${err.ajvMessage}: ${valueStr}\\n\\n'${err.ajvDataPath.replace(/^\\./, \"\")}' (${err.ajvSchemaPath})\\n\\n`;\n }\n }\n }\n\n const funk = (obj: any) => {\n if ((obj.href && typeof obj.href === \"string\") ||\n (obj.Href && typeof obj.Href === \"string\")) {\n\n let fullHref = obj.href ? obj.href as string : obj.Href as string;\n\n const isDataUrl = /^data:/.test(fullHref);\n const isMailUrl = /^mailto:/.test(fullHref);\n const notFull = !isDataUrl && !isMailUrl && !isHTTP(fullHref);\n if (notFull) {\n fullHref = ensureAbsolute(urlDecoded, fullHref);\n }\n\n if ((obj.type === \"application/vnd.readium.license.status.v1.0+json\" && obj.rel === \"status\") ||\n (obj.type === \"application/vnd.readium.lcp.license.v1.0+json\" && obj.rel === \"license\")) {\n\n obj.__href__ = rootUrl + req.originalUrl.substr(0,\n req.originalUrl.indexOf(serverLCPLSD_show_PATH + \"/\")) +\n serverLCPLSD_show_PATH + \"/\" + encodeURIComponent_RFC3986(fullHref);\n\n } else if (obj.type === \"application/epub+zip\" && obj.rel === \"publication\") {\n\n obj.__href__ = rootUrl + req.originalUrl.substr(0,\n req.originalUrl.indexOf(serverLCPLSD_show_PATH + \"/\")) +\n serverRemotePub_PATH + \"/\" + encodeURIComponent_RFC3986(fullHref);\n\n } else if (isDataUrl) {\n // obj.href = obj.href.substr(0, 100) + \"(...)\";\n // obj.__href__ = rootUrl + req.originalUrl.substr(0,\n // req.originalUrl.indexOf(serverLCPLSD_show_PATH + \"/\")) +\n // serverLCPLSD_dataUrl_PATH + \"/\" + encodeURIComponent_RFC3986(fullHref);\n\n } else if (notFull && !isMailUrl) {\n obj.__href__ = fullHref;\n }\n }\n };\n traverseJsonObjects(lcpOrLsdJson, funk);\n\n const css = css2json(jsonStyle);\n const jsonPretty = jsonMarkup(lcpOrLsdJson, css);\n\n res.status(200).send(\"<html><body>\" +\n \"<h1>\" +\n (isStatusDoc ? \"LSD\" : \"LCP\") +\n \" JSON\" + \"</h1>\" +\n \"<h2><a href=\\\"\" + urlDecoded + \"\\\">\" + urlDecoded + \"</a></h2>\" +\n \"<hr>\" +\n \"<div style=\\\"overflow-x: auto;margin:0;padding:0;width:100%;height:auto;\\\">\" +\n jsonPretty + \"</div>\" +\n // tslint:disable-next-line:max-line-length\n (doValidate ? (validationStr ? (\"<hr><p><pre>\" + validationStr + \"</pre></p>\") : (\"<hr><p>JSON SCHEMA OK.</p>\")) : \"\") +\n // \"<p><pre>\" + jsonPretty + \"</pre></p>\" +\n // \"<hr><p><pre>\" + jsonStr + \"</pre></p>\" +\n // \"<p><pre>\" + dumpStr + \"</pre></p>\" +\n \"</body></html>\");\n };\n\n const headers = {\n \"Accept\": \"application/json,application/xml\",\n \"Accept-Language\": \"en-UK,en-US;q=0.7,en;q=0.5\",\n \"User-Agent\": \"READIUM2\",\n };\n\n // No response streaming! :(\n // https://github.com/request/request-promise/issues/90\n const needsStreamingResponse = true;\n if (needsStreamingResponse) {\n request.get({\n headers,\n method: \"GET\",\n uri: urlDecoded,\n })\n .on(\"response\", success)\n .on(\"error\", failure);\n } else {\n let response: requestPromise.FullResponse;\n try {\n // tslint:disable-next-line:await-promise no-floating-promises\n response = await requestPromise({\n headers,\n method: \"GET\",\n resolveWithFullResponse: true,\n uri: urlDecoded,\n });\n } catch (err) {\n failure(err);\n return;\n }\n\n await success(response);\n }\n });\n\n topRouter.use(serverLCPLSD_show_PATH, routerLCPLSD_show);\n}\n"]}
\No newline at end of file