UNPKG

2.76 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.serverRemotePub = exports.serverRemotePub_PATH = void 0;
4var debug_ = require("debug");
5var express = require("express");
6var morgan = require("morgan");
7var UrlUtils_1 = require("r2-utils-js/dist/es5/src/_utils/http/UrlUtils");
8var request_ext_1 = require("./request-ext");
9var server_trailing_slash_redirect_1 = require("./server-trailing-slash-redirect");
10var debug = debug_("r2:streamer#http/server-url");
11exports.serverRemotePub_PATH = "/url";
12function serverRemotePub(_server, topRouter) {
13 var routerUrl = express.Router({ strict: false });
14 routerUrl.use(morgan("combined", { stream: { write: function (msg) { return debug(msg); } } }));
15 routerUrl.use(server_trailing_slash_redirect_1.trailingSlashRedirect);
16 routerUrl.get("/", function (_req, res) {
17 var html = "<html><head>";
18 html += "<script type=\"text/javascript\">function encodeURIComponent_RFC3986(str) { " +
19 "return encodeURIComponent(str).replace(/[!'()*]/g, (c) => { " +
20 "return \"%\" + c.charCodeAt(0).toString(16); }); }" +
21 "function go(evt) {" +
22 "if (evt) { evt.preventDefault(); } var url = " +
23 "location.origin +" +
24 (" '" + exports.serverRemotePub_PATH + "/' +") +
25 " encodeURIComponent_RFC3986(document.getElementById(\"url\").value);" +
26 "location.href = url;}</script>";
27 html += "</head>";
28 html += "<body><h1>Publication URL</h1>";
29 html += "<form onsubmit=\"go();return false;\">" +
30 "<input type=\"text\" name=\"url\" id=\"url\" size=\"80\">" +
31 "<input type=\"submit\" value=\"Go!\"></form>";
32 html += "</body></html>";
33 res.status(200).send(html);
34 });
35 routerUrl.param("urlEncoded", function (req, _res, next, value, _name) {
36 req.urlEncoded = value;
37 next();
38 });
39 routerUrl.get("/:" + request_ext_1._urlEncoded + "(*)", function (req, res) {
40 var reqparams = req.params;
41 if (!reqparams.urlEncoded) {
42 reqparams.urlEncoded = req.urlEncoded;
43 }
44 var urlDecoded = reqparams.urlEncoded;
45 debug(urlDecoded);
46 var urlDecodedBase64 = UrlUtils_1.encodeURIComponent_RFC3986(Buffer.from(urlDecoded).toString("base64"));
47 var redirect = req.originalUrl.substr(0, req.originalUrl.indexOf(exports.serverRemotePub_PATH + "/"))
48 + "/pub/" + urlDecodedBase64 + "/";
49 debug("REDIRECT: " + req.originalUrl + " ==> " + redirect);
50 res.redirect(301, redirect);
51 });
52 topRouter.use(exports.serverRemotePub_PATH, routerUrl);
53}
54exports.serverRemotePub = serverRemotePub;
55//# sourceMappingURL=server-url.js.map
\No newline at end of file