loolwsd/LOOLWSD.cpp | 29 ++++++++++++++++++++++++----- loolwsd/test/httpwstest.cpp | 2 +- 2 files changed, 25 insertions(+), 6 deletions(-)
New commits: commit a0a87276f99919df82cc3d32a2d3da47adacc2e6 Author: Henry Castro <hcas...@collabora.com> Date: Thu Oct 13 16:51:14 2016 -0400 loolwsd: fix media type diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp index cf22bfd..1b176eb 100644 --- a/loolwsd/LOOLWSD.cpp +++ b/loolwsd/LOOLWSD.cpp @@ -155,6 +155,7 @@ using Poco::XML::DOMWriter; using Poco::XML::Element; using Poco::XML::InputSource; using Poco::XML::NodeList; +using Poco::XML::Node; int ClientPortNumber = DEFAULT_CLIENT_PORT_NUMBER; int MasterPortNumber = DEFAULT_MASTER_PORT_NUMBER; @@ -378,6 +379,28 @@ public: class ClientRequestHandler: public HTTPRequestHandler { private: + static std::string getContentType(const std::string& fileName) + { + const std::string nodePath = Poco::format("//[@ext='%s']", Poco::Path(fileName).getExtension()); + std::string discPath = Path(Application::instance().commandPath()).parent().toString() + "discovery.xml"; + if (!File(discPath).exists()) + { + discPath = LOOLWSD_DATADIR "/discovery.xml"; + } + + InputSource input(discPath); + DOMParser domParser; + AutoPtr<Poco::XML::Document> doc = domParser.parse(&input); + // TODO. discovery.xml missing application/pdf + Node* node = doc->getNodeByPath(nodePath); + if (node && (node = node->parentNode()) && node->hasAttributes()) + { + return dynamic_cast<Element*>(node)->getAttribute("name"); + } + + return "application/octet-stream"; + } + static void waitBridgeCompleted(const std::shared_ptr<ClientSession>& session) { bool isFound = false; @@ -609,13 +632,9 @@ private: if (filePath.isAbsolute() && File(filePath).exists()) { response.set("Access-Control-Allow-Origin", "*"); - HTMLForm form(request); - const std::string mimeType = form.has("mime_type") - ? form.get("mime_type") - : "application/octet-stream"; try { - response.sendFile(filePath.toString(), mimeType); + response.sendFile(filePath.toString(), getContentType(fileName)); responded = true; } catch (const Exception& exc) diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp index 83115d2..2218a9f 100644 --- a/loolwsd/test/httpwstest.cpp +++ b/loolwsd/test/httpwstest.cpp @@ -879,7 +879,7 @@ void HTTPWSTest::testSlideShow() std::string encodedDoc; Poco::URI::encode(documentPath, ":/?", encodedDoc); - const std::string path = "/lool/" + encodedDoc + "/" + jail + "/" + dir + "/" + name + "?mime_type=image/svg%2Bxml"; + const std::string path = "/lool/" + encodedDoc + "/" + jail + "/" + dir + "/" + name; std::unique_ptr<Poco::Net::HTTPClientSession> session(helpers::createSession(_uri)); Poco::Net::HTTPRequest requestSVG(Poco::Net::HTTPRequest::HTTP_GET, path); session->sendRequest(requestSVG); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits