aboutsummaryrefslogtreecommitdiff
path: root/backends/networking/sdl_net/localwebserver.cpp
diff options
context:
space:
mode:
authorAlexander Tkachev2016-07-06 18:33:34 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit8a9d126152f3e0ed1e91daa15dd90f0c18060492 (patch)
treed9f96a1f15e041ea493a7077ba1ab4ccc52a7da4 /backends/networking/sdl_net/localwebserver.cpp
parentab4361a76b40b56348ec46311121a0552f0c9d6b (diff)
downloadscummvm-rg350-8a9d126152f3e0ed1e91daa15dd90f0c18060492.tar.gz
scummvm-rg350-8a9d126152f3e0ed1e91daa15dd90f0c18060492.tar.bz2
scummvm-rg350-8a9d126152f3e0ed1e91daa15dd90f0c18060492.zip
CLOUD: Move "/create" to separate Handler
It does redirect to "/files" on success, so user doesn't even see the strange "/create" URL at all. This commit is for keeping these handlers small, not making one (FilesPageHandler in this case) do everything.
Diffstat (limited to 'backends/networking/sdl_net/localwebserver.cpp')
-rw-r--r--backends/networking/sdl_net/localwebserver.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/backends/networking/sdl_net/localwebserver.cpp b/backends/networking/sdl_net/localwebserver.cpp
index c8f322dad6..b2eff1667f 100644
--- a/backends/networking/sdl_net/localwebserver.cpp
+++ b/backends/networking/sdl_net/localwebserver.cpp
@@ -44,7 +44,7 @@ LocalWebserver::LocalWebserver(): _set(nullptr), _serverSocket(nullptr), _timerS
_stopOnIdle(false), _clients(0), _idlingFrames(0) {
addPathHandler("/", _indexPageHandler.getHandler());
addPathHandler("/files", _filesPageHandler.getHandler());
- addPathHandler("/create", _filesPageHandler.getHandler()); //"Create directory" feature
+ addPathHandler("/create", _createDirectoryHandler.getHandler());
_defaultHandler = _resourceHandler.getHandler();
}
@@ -252,6 +252,21 @@ void LocalWebserver::setClientGetHandler(Client &client, Common::SeekableReadStr
client.setHandler(handler);
}
+void LocalWebserver::setClientRedirectHandler(Client &client, Common::String response, Common::String location, const char *mimeType) {
+ byte *data = new byte[response.size()];
+ memcpy(data, response.c_str(), response.size());
+ Common::MemoryReadStream *stream = new Common::MemoryReadStream(data, response.size(), DisposeAfterUse::YES);
+ setClientRedirectHandler(client, stream, location, mimeType);
+}
+
+void LocalWebserver::setClientRedirectHandler(Client &client, Common::SeekableReadStream *responseStream, Common::String location, const char *mimeType) {
+ GetClientHandler *handler = new GetClientHandler(responseStream);
+ handler->setResponseCode(302); //redirect
+ handler->setHeader("Location", location);
+ if (mimeType) handler->setHeader("Content-Type", mimeType);
+ client.setHandler(handler);
+}
+
const char *LocalWebserver::determineMimeType(Common::String &filename) {
// text
if (filename.hasSuffix(".html")) return "text/html";