sesssion controller: create sessions when pinging unknown sessions

This commit is contained in:
Adam
2018-12-09 20:58:47 -05:00
parent 7436b56d30
commit 2f122e19df

View File

@@ -46,10 +46,8 @@ public class SessionController
this.sessionService = sessionService; this.sessionService = sessionService;
} }
@RequestMapping private void createSession(HttpServletRequest request, UUID uuid)
public UUID get(HttpServletRequest request)
{ {
UUID uuid = UUID.randomUUID();
String addr = request.getRemoteAddr(); String addr = request.getRemoteAddr();
Instant now = Instant.now(); Instant now = Instant.now();
SessionEntry sessionEntry = new SessionEntry(); SessionEntry sessionEntry = new SessionEntry();
@@ -58,23 +56,32 @@ public class SessionController
sessionEntry.setStart(now); sessionEntry.setStart(now);
sessionEntry.setLast(now); sessionEntry.setLast(now);
sessionService.createSession(sessionEntry); sessionService.createSession(sessionEntry);
}
@RequestMapping
public UUID get(HttpServletRequest request)
{
UUID uuid = UUID.randomUUID();
createSession(request, uuid);
return uuid; return uuid;
} }
@RequestMapping("/ping") @RequestMapping("/ping")
public ResponseEntity ping(@RequestParam("session") UUID uuid) public ResponseEntity ping(HttpServletRequest request, @RequestParam("session") UUID uuid)
{ {
int updated = sessionService.updateLast(uuid); int updated = sessionService.updateLast(uuid);
if (updated == 0) if (updated == 0)
{ {
return ResponseEntity.notFound().build(); // create the session anyway
createSession(request, uuid);
return ResponseEntity.ok().build();
} }
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
} }
@DeleteMapping @DeleteMapping
public ResponseEntity delete(@RequestParam("session") UUID uuid, HttpServletRequest request) public ResponseEntity delete(@RequestParam("session") UUID uuid)
{ {
int deleted = sessionService.deleteSession(uuid); int deleted = sessionService.deleteSession(uuid);
if (deleted == 0) if (deleted == 0)