[Libreoffice-commits] online.git: wsd/FileServer.cpp wsd/FileServer.hpp
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Wed Mar 6 00:57:21 UTC 2019
wsd/FileServer.cpp | 38 +++++++++++++++++++++++++++++++++++++-
wsd/FileServer.hpp | 1 +
2 files changed, 38 insertions(+), 1 deletion(-)
New commits:
commit 306b12b9bc2e0808751ea24282be792839d9ca40
Author: Henry Castro <hcastro at collabora.com>
AuthorDate: Sun Feb 10 17:03:31 2019 -0400
Commit: Henry Castro <hcastro at collabora.com>
CommitDate: Tue Mar 5 20:56:46 2019 -0400
wsd: preprocess javascript file for L10n
Change-Id: Ib802beca673e1e90ad5dd9c33cd5191300ae7bf8
diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp
index b82becbf1..97509813d 100644
--- a/wsd/FileServer.cpp
+++ b/wsd/FileServer.cpp
@@ -335,7 +335,10 @@ void FileServerRequestHandler::handleRequest(const HTTPRequest& request, Poco::M
const std::string fileType = endPoint.substr(extPoint + 1);
std::string mimeType;
if (fileType == "js")
- mimeType = "application/javascript";
+ {
+ preprocessJS(request, socket);
+ return;
+ }
else if (fileType == "css")
mimeType = "text/css";
else if (fileType == "html")
@@ -1047,4 +1050,37 @@ void FileServerRequestHandler::parse(const std::locale& locale, std::istringstre
ostr << varL10n.str();
}
}
+
+void FileServerRequestHandler::preprocessJS(const HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket)
+{
+ std::string lang("en");
+ Poco::Net::HTTPResponse response;
+ const Poco::URI::QueryParameters params = Poco::URI(request.getURI()).getQueryParameters();
+ auto pos = std::find_if(params.begin(), params.end(),
+ [](const std::pair<std::string, std::string>& it) { return it.first == "lang"; });
+ if (pos != params.end())
+ lang = pos->second;
+
+ response.setContentType("application/javascript");
+ response.set("User-Agent", HTTP_AGENT_STRING);
+ response.set("Date", Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT));
+ response.add("X-Content-Type-Options", "nosniff");
+
+ const std::string relPath = getRequestPathname(request);
+ LOG_DBG("Preprocessing file: " << relPath);
+ std::string preprocess = *getUncompressedFile(relPath);
+
+ std::ostringstream ostr;
+ std::istringstream istr(preprocess);
+ std::locale locale(LOOLWSD::Generator(lang + ".utf8"));
+
+ parse(locale, istr, ostr, [](const std::string&) { return false; });
+
+ std::ostringstream oss;
+ response.write(oss);
+ oss << ostr.str();
+ socket->send(oss.str());
+
+ LOG_DBG("Sent file: " << relPath);
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/wsd/FileServer.hpp b/wsd/FileServer.hpp
index c5a5133cd..df33ca217 100644
--- a/wsd/FileServer.hpp
+++ b/wsd/FileServer.hpp
@@ -22,6 +22,7 @@ class FileServerRequestHandler
static void getToken(std::istringstream&, std::string&);
static void parse(const std::locale&, std::istringstream&, std::ostringstream&, const std::function<bool(const std::string&)>&);
+ static void preprocessJS(const Poco::Net::HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket);
static void preprocessFile(const Poco::Net::HTTPRequest& request, Poco::MemoryInputStream& message, const std::shared_ptr<StreamSocket>& socket);
static void preprocessAdminFile(const Poco::Net::HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket);
public:
More information about the Libreoffice-commits
mailing list