Events recovery

This commit is contained in:
Claude Brisson
2023-05-19 19:10:40 +02:00
parent 605b39123e
commit 2858ce4186
2 changed files with 27 additions and 0 deletions

24
curl.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
# Basic integration tests using curl...
curl -s --header "Accept: application/json" --header "Content-Type: application/json" \
--request POST \
--data '{ "type":"INDIVIDUAL","name":"Mon Tournoi", "shortName": "mon-tournoi", "startDate": "2023-05-10", "endDate": "2023-05-12", "country": "FR", "location": "Marseille", "online": false, "timeSystem": { "type": "fischer", "mainTime": "1200", "increment": "10" }, "pairing": { "type": "ROUNDROBIN" }, "rounds": 5 }' \
http://localhost:8080/api/tour
curl -s --header "Accept: application/json" http://localhost:8080/api/tour
curl -s --header "Accept: application/json" http://localhost:8080/api/tour/1
curl -s --header "Accept: application/json" --header "Content-Type: application/json" \
--request POST \
--data '{ "name": "Burma", "firstname": "Nestor", "rating": 1600, "rank": -2, "country": "FR", "club": "13Ma" }' \
http://localhost:8080/api/tour/1/part
curl -s --header "Accept: application/json" http://localhost:8080/api/tour/1/part
echo
echo
curl -s --header "Last-Event-Id: 0" http://localhost:8080/events

View File

@@ -1,6 +1,7 @@
package org.jeudego.pairgoth.web package org.jeudego.pairgoth.web
import info.macias.sse.events.MessageEvent import info.macias.sse.events.MessageEvent
import java.util.concurrent.atomic.AtomicLong
enum class Event { enum class Event {
tournamentAdded, tournamentAdded,
@@ -15,8 +16,10 @@ enum class Event {
; ;
companion object { companion object {
private val nextMessageId = AtomicLong(0)
private val sse: SSEServlet by lazy { SSEServlet.getInstance() } private val sse: SSEServlet by lazy { SSEServlet.getInstance() }
private fun <T> buildEvent(event: Event, data: T) = MessageEvent.Builder() private fun <T> buildEvent(event: Event, data: T) = MessageEvent.Builder()
.setId("${nextMessageId.incrementAndGet()}".padStart(10, '0'))
.setEvent(event.name) .setEvent(event.name)
.setData(data.toString()) .setData(data.toString())
.build() .build()