From 69b675cc6a3146edf9a35429bb146d603d48d441 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Fri, 2 Aug 2019 22:06:41 +0200
Subject: [PATCH] Change plugin download

---
 download/test.txt                             |  1 +
 .../de/tobias/playpad/PlayPadServer.scala     |  6 ++---
 .../playpad/server/plugin/PluginRawGet.scala  | 27 +++++++++++++++++++
 3 files changed, 30 insertions(+), 4 deletions(-)
 create mode 100644 download/test.txt
 create mode 100644 src/main/scala/de/tobias/playpad/server/plugin/PluginRawGet.scala

diff --git a/download/test.txt b/download/test.txt
new file mode 100644
index 0000000..48b83b8
--- /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 d5bf73b..9ad6938 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 0000000..d5f487e
--- /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)
+	}
+}
-- 
GitLab