diff --git a/download/test.txt b/download/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..48b83b862ebc57bd3f7c34ed47262f4b402935af --- /dev/null +++ b/download/test.txt @@ -0,0 +1 @@ +ABC \ No newline at end of file diff --git a/src/main/scala/de/tobias/playpad/PlayPadServer.scala b/src/main/scala/de/tobias/playpad/PlayPadServer.scala index d5bf73b773196f2886a863490f418c62d8be1f9f..9ad6938fa8ccb7e3a8886ffde6f39b35e972185f 100644 --- a/src/main/scala/de/tobias/playpad/PlayPadServer.scala +++ b/src/main/scala/de/tobias/playpad/PlayPadServer.scala @@ -13,7 +13,7 @@ import de.tobias.playpad.model.account.{Account, Session} import de.tobias.playpad.model.plugin.Plugin import de.tobias.playpad.server.SqlHelper import de.tobias.playpad.server.account._ -import de.tobias.playpad.server.plugin.{PluginGet, PluginList} +import de.tobias.playpad.server.plugin.{PluginGet, PluginList, PluginRawGet} import de.tobias.playpad.server.project.sync.ProjectSyncHandler import de.tobias.playpad.server.project.{ProjectDelete, ProjectGet, ProjectList, ProjectPost} import de.tobias.playpad.transformer.JsonTransformer @@ -82,9 +82,6 @@ object PlayPadServer extends App { port(settings.server_port) threadPool(8, 2, 60 * 60 * 1000) - val externalPath = Paths.get(settings.download_folder).toAbsolutePath.toString - externalStaticFileLocation(externalPath) - if (settings.server_secure) { secure(settings.server_keystore_path, settings.server_keystore_password, null, null) } @@ -102,6 +99,7 @@ object PlayPadServer extends App { // Plugins get("/plugins/:id", new PluginGet(pluginDao), transformer) + get("/plugins/raw/:id", new PluginRawGet(pluginDao, settings)) get("/plugins", new PluginList(pluginDao), transformer) // Account diff --git a/src/main/scala/de/tobias/playpad/server/plugin/PluginRawGet.scala b/src/main/scala/de/tobias/playpad/server/plugin/PluginRawGet.scala new file mode 100644 index 0000000000000000000000000000000000000000..d5f487e49a15a1a3415cfaee78901878285f305e --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/plugin/PluginRawGet.scala @@ -0,0 +1,27 @@ +package de.tobias.playpad.server.plugin + +import java.nio.file.{Files, Paths} + +import com.google.gson.Gson +import com.j256.ormlite.dao.Dao +import de.tobias.playpad.model.plugin.Plugin +import de.tobias.playpad.server.{Result, Status} +import de.tobias.playpad.utils.settings.Settings +import spark.{Request, Response, Route} + +/** + * Created by tobias on 05.02.17. + */ +class PluginRawGet(dao: Dao[Plugin, Int], settings: Settings) extends Route { + + val gson = new Gson() + + override def handle(request: Request, response: Response): AnyRef = { + val plugin = dao.queryForId(request.params(":id").toInt) + if (plugin == null) { + return new Result(Status.ERROR, "Bad request") + } + val path = Paths.get(settings.download_folder, plugin.path) + Files.readAllBytes(path) + } +}