T157 prepared REST API for javascript based page
This commit is contained in:
		
							
								
								
									
										6
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							| @@ -20,11 +20,8 @@ | ||||
|   </component> | ||||
|   <component name="ChangeListManager"> | ||||
|     <list default="true" id="458cde88-df3d-44bc-9d57-a33823e2f1a6" name="Default Changelist" comment=""> | ||||
|       <change afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/MockController.java" afterDir="false" /> | ||||
|       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> | ||||
|       <change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausController.java" afterDir="false" /> | ||||
|       <change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausMvcController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausMvcController.java" afterDir="false" /> | ||||
|       <change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/model/TestModel.java" beforeDir="false" /> | ||||
|       <change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/MockController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/MockController.java" afterDir="false" /> | ||||
|     </list> | ||||
|     <option name="SHOW_DIALOG" value="false" /> | ||||
|     <option name="HIGHLIGHT_CONFLICTS" value="true" /> | ||||
| @@ -312,6 +309,7 @@ | ||||
|       <workItem from="1612178634549" duration="20097000" /> | ||||
|       <workItem from="1612259068808" duration="10440000" /> | ||||
|       <workItem from="1612279535476" duration="5692000" /> | ||||
|       <workItem from="1612442837870" duration="6837000" /> | ||||
|     </task> | ||||
|     <task id="LOCAL-00077" summary="testing jenkins docker"> | ||||
|       <created>1601453886631</created> | ||||
|   | ||||
| @@ -5,15 +5,15 @@ import com.release11.klaus.service.KlausService; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.SneakyThrows; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Set; | ||||
| import java.util.Map; | ||||
| import java.util.UUID; | ||||
|  | ||||
| @Slf4j | ||||
| @@ -25,42 +25,87 @@ public class MockController { | ||||
|     //TODO: Write a method | ||||
|     private final MockedMessageDto defaultMessage = MockedMessageDto.builder().build(); | ||||
|     private UUID sessionUUID; | ||||
|     private final Set<MockedMessageDto> globalMockedMessageDtoList = new HashSet<>(); | ||||
|  | ||||
|  | ||||
|     /* | ||||
|         1. GET request to get the page | ||||
|         2. Javascripts checks for cookies if not it sends empty UUID on GetMapping /mock/json | ||||
|         3. When Javascript: | ||||
|         - 1. Saves: PUT request, then GET request | ||||
|         - 2. Deletes: DELETE request, then GET request | ||||
|         - 3. Adds new message: POST request, then GET request | ||||
|         4. After each action cookie is updated | ||||
|         Cookie holds uuid, last displayed message | ||||
|      */ | ||||
|  | ||||
|     //TODO: Add cookie in javascript | ||||
|     /** | ||||
|      * Responds to first user request. If UUID is given then it's set if it's not, then new one is generated. | ||||
|      * Next recalls method that populates model based on UUID | ||||
|      * @param clientUUID | ||||
|      * @param uuid | ||||
|      * @return | ||||
|      */ | ||||
|     @SneakyThrows | ||||
|     @GetMapping({"/mock", "/mock/{uuid}"}) | ||||
|     public String showHome(@RequestParam(required = false) UUID clientUUID, | ||||
|                            @PathVariable(required = false) UUID uuid){ | ||||
|         if (uuid != null) clientUUID = uuid; | ||||
|         if (clientUUID != null) sessionUUID = clientUUID; | ||||
|         else sessionUUID = UUID.randomUUID(); | ||||
|         this.updateGlobalMockedMessageDtoList(); | ||||
|     @GetMapping("/mock") | ||||
|     public String showHome(){ | ||||
|         return "mock"; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Populates model with current message list based on sessionUUID | ||||
|      */ | ||||
|     private void updateGlobalMockedMessageDtoList(){ | ||||
|         globalMockedMessageDtoList.clear(); | ||||
|         List<MockedMessageDto> mockedMessageDtoList = klausService.getAllMockedResponses(sessionUUID); | ||||
|         if (mockedMessageDtoList.size() == 0) mockedMessageDtoList.add(defaultMessage); | ||||
|         globalMockedMessageDtoList.addAll(mockedMessageDtoList); | ||||
|     @PutMapping("/mock/{uuid}") | ||||
|     public ResponseEntity<String> updateMessage(@RequestBody MockedMessageDto message){ | ||||
|         return klausService.setMockedResponse(message); | ||||
|     } | ||||
|  | ||||
|     //TODO: Add json file | ||||
|     private static MockedMessageDto buildDefaultMessage(){ | ||||
|         return null; | ||||
|     @GetMapping("/mock/json") | ||||
|     public List<MockedMessageDto> getJson(@RequestParam(required = false) UUID clientUUID){ | ||||
|         if(clientUUID != null) sessionUUID = clientUUID; | ||||
|         else sessionUUID = UUID.randomUUID(); | ||||
|         List<MockedMessageDto> messages = klausService.getAllMockedResponses(clientUUID); | ||||
|         if(messages.size() == 0) { | ||||
|             klausService.setMockedResponse(buildDefaultMessage(clientUUID)); | ||||
|             messages = klausService.getAllMockedResponses(clientUUID); | ||||
|         } | ||||
|         return messages; | ||||
|     } | ||||
|  | ||||
|     @PostMapping("/mock/json") | ||||
|     public ResponseEntity<String> addNewMessage(@RequestParam UUID clientUUID){ | ||||
|         List<MockedMessageDto> messages = klausService.getAllMockedResponses(clientUUID); | ||||
|         MockedMessageDto nextMessage = buildDefaultMessage(clientUUID, findNextId(messages)); | ||||
|         return klausService.setMockedResponse(nextMessage); | ||||
|     } | ||||
|  | ||||
|     private static MockedMessageDto buildDefaultMessage(UUID uuid, int id){ | ||||
|         MockedMessageDto message = buildDefaultMessage(uuid); | ||||
|         message.setMockedResponseId(id); | ||||
|         return message; | ||||
|     } | ||||
|  | ||||
|     private static MockedMessageDto buildDefaultMessage(UUID uuid){ | ||||
|         Map<String, String> headers = new HashMap<>(); | ||||
|         headers.put("Keep-Alive", "timeout=60"); | ||||
|         headers.put("Connection", "keep-alive"); | ||||
|         headers.put("Date", LocalDateTime.now().toString()); | ||||
|         return MockedMessageDto.builder() | ||||
|                 .clientUUID(uuid) | ||||
|                 .mockedResponseId(1) | ||||
|                 .mediaType(MediaType.APPLICATION_XML_VALUE) | ||||
|                 .messageBody("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + | ||||
|                         "<note>\n" + | ||||
|                         "  <to>Tove</to>\n" + | ||||
|                         "  <from>Jani</from>\n" + | ||||
|                         "  <heading>Reminder</heading>\n" + | ||||
|                         "  <body>Don't forget me this weekend!</body>\n" + | ||||
|                         "</note>") | ||||
|                 .httpHeaders(headers) | ||||
|                 .httpStatus(200) | ||||
|                 .build(); | ||||
|     } | ||||
|  | ||||
|     public static int findNextId(List<MockedMessageDto> messages) { | ||||
|         int highestId = 0; | ||||
|         for (MockedMessageDto m : messages) | ||||
|             highestId = highestId < m.getMockedResponseId() ? highestId : m.getMockedResponseId(); | ||||
|         return highestId; | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user