This commit is contained in:
2024-01-13 17:55:19 +01:00
commit 66d949856d
4 changed files with 185 additions and 0 deletions

66
src/locsrv/main.go Normal file
View File

@ -0,0 +1,66 @@
package main
import (
"log"
"github.com/gin-gonic/gin"
"net/http"
)
/*
{
"trigger":"enter",
"device":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"device_model":"iPhone13,1",
"timestamp":"1705162497.0",
"latitude":"51.0",
"id":"test",
"longitude":"7.0",
"device_type":"iPhone"
}
*/
type locativeEvent struct {
Trigger string `json:"trigger"`
Device string `json:"device"`
Id string `json:"id"`
}
func main() {
router := gin.Default()
ch := make(chan locativeEvent)
go func() {
for {
select {
case event := <- ch:
log.Printf("Trigger: %s, Device: %s, Id: %s", event.Trigger, event.Device, event.Id)
}
}
}()
router.POST("/location", func(c *gin.Context) {
var body locativeEvent
err := c.ShouldBindJSON(&body)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H { "error": err.Error() })
return
}
var message string
select {
case ch <- body:
message = "message forwarded"
default:
log.Println("Channel full, message lost")
message = "message lost"
}
c.JSON(http.StatusOK, gin.H { "message": message })
})
router.Run(":8080")
}