diff --git a/lib/jackson-annotations-2.13.3.jar b/lib/jackson-annotations-2.13.3.jar
new file mode 100644
index 0000000..60a3ddb
Binary files /dev/null and b/lib/jackson-annotations-2.13.3.jar differ
diff --git a/lib/jackson-core-2.13.3.jar b/lib/jackson-core-2.13.3.jar
new file mode 100644
index 0000000..7e2086d
Binary files /dev/null and b/lib/jackson-core-2.13.3.jar differ
diff --git a/lib/jackson-databind-2.13.3.jar b/lib/jackson-databind-2.13.3.jar
new file mode 100644
index 0000000..a27e9d7
Binary files /dev/null and b/lib/jackson-databind-2.13.3.jar differ
diff --git a/mtcg.iml b/mtcg.iml
index c90834f..3709e7d 100644
--- a/mtcg.iml
+++ b/mtcg.iml
@@ -7,5 +7,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
index a79fddc..2d43d00 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,4 +1,5 @@
-import at.nanopenguin.mtcg.application.TestService;
+import at.nanopenguin.mtcg.application.service.TestService;
+import at.nanopenguin.mtcg.application.service.UserService;
import at.nanopenguin.mtcg.http.HttpMethod;
import at.nanopenguin.mtcg.http.Router;
import at.nanopenguin.mtcg.http.Server;
@@ -11,10 +12,10 @@ public class Main {
router.addRoute(HttpMethod.GET, "/test/{var}/service", new TestService(), new int[]{2});
/* users */
- router.addRoute(HttpMethod.POST, "/users", new TestService(), new int[]{});
- router.addRoute(HttpMethod.GET, "/users/{username}", new TestService(), new int[]{2});
- router.addRoute(HttpMethod.PUT, "/users/{username}", new TestService(), new int[]{2});
- router.addRoute(HttpMethod.POST, "/sessions", new TestService(), new int[]{});
+ router.addRoute(HttpMethod.POST, "/users", new UserService(), new int[]{});
+ router.addRoute(HttpMethod.GET, "/users/{username}", new UserService(), new int[]{2});
+ router.addRoute(HttpMethod.PUT, "/users/{username}", new UserService(), new int[]{2});
+ router.addRoute(HttpMethod.POST, "/sessions", new UserService(), new int[]{});
/* packages */
router.addRoute(HttpMethod.POST, "/packages", new TestService(), new int[]{});
diff --git a/src/at/nanopenguin/mtcg/application/Service.java b/src/at/nanopenguin/mtcg/application/Service.java
deleted file mode 100644
index 41485a5..0000000
--- a/src/at/nanopenguin/mtcg/application/Service.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package at.nanopenguin.mtcg.application;
-
-import at.nanopenguin.mtcg.http.HttpRequest;
-import at.nanopenguin.mtcg.http.Response;
-
-public interface Service {
-
- Response handleRequest(HttpRequest request);
-}
diff --git a/src/at/nanopenguin/mtcg/application/User.java b/src/at/nanopenguin/mtcg/application/User.java
new file mode 100644
index 0000000..805dd5f
--- /dev/null
+++ b/src/at/nanopenguin/mtcg/application/User.java
@@ -0,0 +1,5 @@
+package at.nanopenguin.mtcg.application;
+
+public class User {
+
+}
diff --git a/src/at/nanopenguin/mtcg/application/InternalErrorService.java b/src/at/nanopenguin/mtcg/application/service/InternalErrorService.java
similarity index 78%
rename from src/at/nanopenguin/mtcg/application/InternalErrorService.java
rename to src/at/nanopenguin/mtcg/application/service/InternalErrorService.java
index e8407f6..d598c2c 100644
--- a/src/at/nanopenguin/mtcg/application/InternalErrorService.java
+++ b/src/at/nanopenguin/mtcg/application/service/InternalErrorService.java
@@ -1,5 +1,6 @@
-package at.nanopenguin.mtcg.application;
+package at.nanopenguin.mtcg.application.service;
+import at.nanopenguin.mtcg.application.service.Service;
import at.nanopenguin.mtcg.http.HttpStatus;
import at.nanopenguin.mtcg.http.HttpRequest;
import at.nanopenguin.mtcg.http.Response;
diff --git a/src/at/nanopenguin/mtcg/application/service/Service.java b/src/at/nanopenguin/mtcg/application/service/Service.java
new file mode 100644
index 0000000..072ee8c
--- /dev/null
+++ b/src/at/nanopenguin/mtcg/application/service/Service.java
@@ -0,0 +1,10 @@
+package at.nanopenguin.mtcg.application.service;
+
+import at.nanopenguin.mtcg.http.HttpRequest;
+import at.nanopenguin.mtcg.http.Response;
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+public interface Service {
+
+ Response handleRequest(HttpRequest request) throws JsonProcessingException;
+}
diff --git a/src/at/nanopenguin/mtcg/application/TestService.java b/src/at/nanopenguin/mtcg/application/service/TestService.java
similarity index 76%
rename from src/at/nanopenguin/mtcg/application/TestService.java
rename to src/at/nanopenguin/mtcg/application/service/TestService.java
index 8adb001..502ec38 100644
--- a/src/at/nanopenguin/mtcg/application/TestService.java
+++ b/src/at/nanopenguin/mtcg/application/service/TestService.java
@@ -1,5 +1,6 @@
-package at.nanopenguin.mtcg.application;
+package at.nanopenguin.mtcg.application.service;
+import at.nanopenguin.mtcg.application.service.Service;
import at.nanopenguin.mtcg.http.HttpRequest;
import at.nanopenguin.mtcg.http.HttpStatus;
import at.nanopenguin.mtcg.http.Response;
diff --git a/src/at/nanopenguin/mtcg/application/service/UserService.java b/src/at/nanopenguin/mtcg/application/service/UserService.java
new file mode 100644
index 0000000..8566e3c
--- /dev/null
+++ b/src/at/nanopenguin/mtcg/application/service/UserService.java
@@ -0,0 +1,24 @@
+package at.nanopenguin.mtcg.application.service;
+
+import at.nanopenguin.mtcg.application.service.schemas.UserCredentials;
+import at.nanopenguin.mtcg.http.HttpRequest;
+import at.nanopenguin.mtcg.http.HttpStatus;
+import at.nanopenguin.mtcg.http.Response;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+
+public class UserService implements Service {
+
+ @Override
+ public Response handleRequest(HttpRequest request) throws JsonProcessingException {
+ UserCredentials userCredentials = new UserCredentials("test", "test");
+ ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = ow.writeValueAsString(userCredentials);
+
+ System.out.println(json);
+
+ return new Response(HttpStatus.OK, "application/json", "");
+ }
+}
diff --git a/src/at/nanopenguin/mtcg/application/service/schemas/UserCredentials.java b/src/at/nanopenguin/mtcg/application/service/schemas/UserCredentials.java
new file mode 100644
index 0000000..ad019fc
--- /dev/null
+++ b/src/at/nanopenguin/mtcg/application/service/schemas/UserCredentials.java
@@ -0,0 +1,7 @@
+package at.nanopenguin.mtcg.application.service.schemas;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+@JsonSerialize
+public record UserCredentials(String username, String password) {
+}
diff --git a/src/at/nanopenguin/mtcg/http/RequestHandler.java b/src/at/nanopenguin/mtcg/http/RequestHandler.java
index fd7a669..b3452f4 100644
--- a/src/at/nanopenguin/mtcg/http/RequestHandler.java
+++ b/src/at/nanopenguin/mtcg/http/RequestHandler.java
@@ -1,6 +1,6 @@
package at.nanopenguin.mtcg.http;
-import at.nanopenguin.mtcg.application.Service;
+import at.nanopenguin.mtcg.application.service.Service;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/src/at/nanopenguin/mtcg/http/Route.java b/src/at/nanopenguin/mtcg/http/Route.java
index b8f8c90..8c46be7 100644
--- a/src/at/nanopenguin/mtcg/http/Route.java
+++ b/src/at/nanopenguin/mtcg/http/Route.java
@@ -1,6 +1,6 @@
package at.nanopenguin.mtcg.http;
-import at.nanopenguin.mtcg.application.Service;
+import at.nanopenguin.mtcg.application.service.Service;
public record Route(Service service, boolean hasPathVariable) {
}
diff --git a/src/at/nanopenguin/mtcg/http/Router.java b/src/at/nanopenguin/mtcg/http/Router.java
index 37be60e..3762e3b 100644
--- a/src/at/nanopenguin/mtcg/http/Router.java
+++ b/src/at/nanopenguin/mtcg/http/Router.java
@@ -1,6 +1,6 @@
package at.nanopenguin.mtcg.http;
-import at.nanopenguin.mtcg.application.Service;
+import at.nanopenguin.mtcg.application.service.Service;
import java.util.*;
import java.util.stream.IntStream;