initial
This commit is contained in:
66
src/locsrv/main.go
Normal file
66
src/locsrv/main.go
Normal 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")
|
||||
}
|
||||
|
Reference in New Issue
Block a user