UNPKG

19.1 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