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