From 80276e2e5b051ff774b0503ab02d5b1a9cee1b62 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Thu, 16 Feb 2017 16:08:39 +0100
Subject: [PATCH] Improve response messages

---
 .../tobias/playpad/server/server/Result.scala  | 16 ++++++++++++++++
 .../tobias/playpad/server/server/Status.scala  |  8 ++++++++
 .../server/server/account/AccountPost.scala    |  5 +++--
 .../server/server/account/AccountPut.scala     |  8 ++++++--
 .../server/server/account/SessionDelete.scala  |  7 ++++---
 .../server/server/account/SessionGet.scala     |  5 +++--
 .../server/server/account/SessionPost.scala    | 18 ++++++++++++++++--
 .../server/server/plugin/PluginGet.scala       |  3 ++-
 8 files changed, 58 insertions(+), 12 deletions(-)
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/Result.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/Status.scala

diff --git a/src/main/scala/de/tobias/playpad/server/server/Result.scala b/src/main/scala/de/tobias/playpad/server/server/Result.scala
new file mode 100644
index 0000000..5483dd5
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/Result.scala
@@ -0,0 +1,16 @@
+package de.tobias.playpad.server.server
+
+/**
+  * Created by tobias on 16.02.17.
+  */
+class Result {
+
+	var status: Status.Value = _
+	var message: String = _
+
+	def this(status: Status.Value, message: String = "") {
+		this()
+		this.status = status
+		this.message = message
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/Status.scala b/src/main/scala/de/tobias/playpad/server/server/Status.scala
new file mode 100644
index 0000000..2a44ddf
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/Status.scala
@@ -0,0 +1,8 @@
+package de.tobias.playpad.server.server
+
+/**
+  * Created by tobias on 16.02.17.
+  */
+object Status extends Enumeration {
+	val OK, ERROR = Value
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala b/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala
index 4fc8c5a..8082e43 100644
--- a/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala
@@ -4,6 +4,7 @@ import java.sql.SQLException
 
 import com.j256.ormlite.dao.Dao
 import de.tobias.playpad.server.account.Account
+import de.tobias.playpad.server.server.{Result, Status}
 import spark.{Request, Response, Route, Spark}
 
 /**
@@ -19,10 +20,10 @@ class AccountPost(accountDao: Dao[Account, Int]) extends Route {
 		try {
 			accountDao.create(account)
 		} catch {
-			case e: SQLException => Spark.halt(409, "username not allowed")
+			case e: SQLException => return new Result(Status.ERROR)
 		}
 
-		"created"
+		new Result(Status.OK, "created")
 	}
 
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/account/AccountPut.scala b/src/main/scala/de/tobias/playpad/server/server/account/AccountPut.scala
index a40fd22..d8e7b63 100644
--- a/src/main/scala/de/tobias/playpad/server/server/account/AccountPut.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/account/AccountPut.scala
@@ -1,7 +1,10 @@
 package de.tobias.playpad.server.server.account
 
+import java.sql.SQLException
+
 import com.j256.ormlite.dao.Dao
 import de.tobias.playpad.server.account.Account
+import de.tobias.playpad.server.server.{Result, Status}
 import spark.{Request, Response, Route}
 
 /**
@@ -23,13 +26,14 @@ class AccountPut(accountDao: Dao[Account, Int]) extends Route {
 				if (account.password.equals(oldPassword)) {
 					account.password = newPassword
 					accountDao.update(account)
+					return new Result(Status.OK)
 				}
 			}
 		} catch {
-			case e: Exception => e.printStackTrace()
+			case e: SQLException => return new Result(Status.ERROR)
 		}
 
-		""
+		new Result(Status.ERROR)
 	}
 
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/account/SessionDelete.scala b/src/main/scala/de/tobias/playpad/server/server/account/SessionDelete.scala
index c3bd25e..69fd68d 100644
--- a/src/main/scala/de/tobias/playpad/server/server/account/SessionDelete.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/account/SessionDelete.scala
@@ -1,7 +1,8 @@
 package de.tobias.playpad.server.server.account
 
 import com.j256.ormlite.dao.Dao
-import de.tobias.playpad.server.account.{Account, Session}
+import de.tobias.playpad.server.account.Account
+import de.tobias.playpad.server.server.{Result, Status}
 import spark.{Request, Response, Route}
 
 /**
@@ -21,11 +22,11 @@ class SessionDelete(accountDao: Dao[Account, Int]) extends Route {
 			if (account.password.equals(password)) {
 				account.sessions.removeIf(s => s.key.equals(key))
 				accountDao.update(account)
-				return "deleted"
+				return new Result(Status.OK, "deleted")
 			}
 		}
 
-		null
+		new Result(Status.ERROR)
 	}
 
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/account/SessionGet.scala b/src/main/scala/de/tobias/playpad/server/server/account/SessionGet.scala
index 6a95185..2484996 100644
--- a/src/main/scala/de/tobias/playpad/server/server/account/SessionGet.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/account/SessionGet.scala
@@ -2,7 +2,8 @@ package de.tobias.playpad.server.server.account
 
 import com.google.gson.{JsonArray, JsonObject}
 import com.j256.ormlite.dao.Dao
-import de.tobias.playpad.server.account.{Account, Session}
+import de.tobias.playpad.server.account.Account
+import de.tobias.playpad.server.server.{Result, Status}
 import spark.{Request, Response, Route}
 
 /**
@@ -31,7 +32,7 @@ class SessionGet(accountDao: Dao[Account, Int]) extends Route {
 			}
 		}
 
-		null
+		new Result(Status.ERROR)
 	}
 
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/account/SessionPost.scala b/src/main/scala/de/tobias/playpad/server/server/account/SessionPost.scala
index 3d69383..4b3fe88 100644
--- a/src/main/scala/de/tobias/playpad/server/server/account/SessionPost.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/account/SessionPost.scala
@@ -2,6 +2,7 @@ package de.tobias.playpad.server.server.account
 
 import com.j256.ormlite.dao.Dao
 import de.tobias.playpad.server.account.{Account, Session}
+import de.tobias.playpad.server.server.{Result, Status}
 import spark.{Request, Response, Route}
 
 /**
@@ -24,11 +25,24 @@ class SessionPost(accountDao: Dao[Account, Int]) extends Route {
 
 				account.sessions.add(session)
 				accountDao.update(account)
-				return randomKey
+				return new SessionPostResult(Status.OK, randomKey)
 			}
 		}
 
-		null
+		new Result(Status.ERROR)
+	}
+
+	private class SessionPostResult {
+		var status: Status.Value = _
+		var message: String = _
+		var key: String = _
+
+		def this(status: Status.Value, key: String, message: String = "") {
+			this()
+			this.status = status
+			this.message = message
+			this.key = key
+		}
 	}
 
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala b/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala
index 075adc7..c222880 100644
--- a/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala
@@ -3,6 +3,7 @@ package de.tobias.playpad.server.server.plugin
 import com.google.gson.Gson
 import com.j256.ormlite.dao.Dao
 import de.tobias.playpad.server.plugin.Plugin
+import de.tobias.playpad.server.server.{Result, Status}
 import spark.{Request, Response, Route, Spark}
 
 /**
@@ -15,7 +16,7 @@ class PluginGet(dao: Dao[Plugin, Int]) extends Route {
 	override def handle(request: Request, response: Response): AnyRef = {
 		val plugin = dao.queryForId(request.params(":id").toInt)
 		if (plugin == null) {
-			Spark.halt(400, "Bad request")
+			return new Result(Status.ERROR, "Bad request")
 		}
 		plugin
 	}
-- 
GitLab