diff --git a/pom.xml b/pom.xml index ef6b504ec2357172c2e43681f8c4068db56a2b0e..cdce69a3e3032b91d116ee781dd1d9974ffe5c42 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,12 @@ <version>1.18.30</version> <scope>provided</scope> </dependency> - </dependencies> + <dependency> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> + <version>2.3.0</version> + </dependency> + </dependencies> <build> <plugins> diff --git a/src/main/java/com/cloudcomputing/todo/controller/UserController.java b/src/main/java/com/cloudcomputing/todo/controller/UserController.java index e9b55f0af0094d870b08558debcb984d903e5aa4..7cf9194bd5db7b3ca43483ddced8f91557590ae7 100644 --- a/src/main/java/com/cloudcomputing/todo/controller/UserController.java +++ b/src/main/java/com/cloudcomputing/todo/controller/UserController.java @@ -3,6 +3,7 @@ package com.cloudcomputing.todo.controller; import com.cloudcomputing.todo.dto.TodoDTO; import com.cloudcomputing.todo.dto.UserDTO; import com.cloudcomputing.todo.service.UserService; +import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -18,6 +19,7 @@ public class UserController { @Autowired private UserService userService; + @Operation(summary = "sign up", description="creates a new user in the system") @PostMapping("/signup") public ResponseEntity<UserDTO> singUp(@RequestBody UserDTO userDTO) { UserDTO newUser = userService.createUser(userDTO); @@ -29,6 +31,7 @@ public class UserController { return new ResponseEntity<>(HttpStatus.CONFLICT); } + @Operation(summary = "sign in", description = "logs in an existing user") @PostMapping("/signin") public ResponseEntity<UserDTO> login(HttpServletRequest request, @RequestBody UserDTO user) { boolean loginSuccessful = userService.login(request, user); @@ -39,6 +42,7 @@ public class UserController { return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); } + @Operation(summary = "sign out", description = "signs out a logged in user") @PostMapping("/signout") public ResponseEntity<String> logout(HttpServletRequest request, @RequestBody String userId) { boolean logoutSuccessful = userService.logout(request, userId); @@ -49,6 +53,7 @@ public class UserController { return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); } + @Operation(summary = "add new todo", description = "adds a new todo for the currently logged in user") @PostMapping("/addTodo") public ResponseEntity<List<TodoDTO>> addTodo(HttpServletRequest request, @RequestBody TodoDTO todoDTO) { if(userService.validateSession(request)){ @@ -59,6 +64,7 @@ public class UserController { return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); } + @Operation(summary = "delete existing todo", description = "deletes a specified todo for the currently logged in user") @DeleteMapping("/deleteTodo") public ResponseEntity<List<TodoDTO>> deleteTodo(HttpServletRequest request, @RequestParam String userId, @RequestParam String todoId) { System.out.println("controller here"); @@ -71,6 +77,7 @@ public class UserController { return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); } + @Operation(summary = "get all todos", description = "returns all todos for the currently logged in user") @GetMapping("/getAllTodos") public ResponseEntity<List<TodoDTO>> getAllTodos(HttpServletRequest request, @RequestParam String userId) { if(userService.validateSession(request)){ @@ -81,6 +88,7 @@ public class UserController { return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); } + @Operation(summary = "mark a todo as completed", description = "sets the specified todos status to 'completed'") @PatchMapping("/setTodoComplete") public ResponseEntity<List<TodoDTO>> setTodoComplete(HttpServletRequest request, @RequestParam String userId, @RequestParam String todoId) { if(userService.validateSession(request)){ @@ -91,6 +99,7 @@ public class UserController { return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); } + @Operation(summary = "validate the session", description = "checks if the current session / jsessionid is still valid") @GetMapping("/validateSession") public ResponseEntity<Boolean> validateSession(HttpServletRequest request) { if(userService.validateSession(request)){ diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 474efcca7d4fc19fe49c45bf52cb5b505372253b..765f795783cfa613bdf02ec28d168183b7d02586 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,6 @@ spring.application.name=todo server.port=9876 spring.data.mongodb.uri=mongodb://tododbuser:tododbadminpassword@192.168.179.24:27017/todo + +#openapi setup +springdoc.api-docs.path=/v3/api-docs