robot-control-manager/routers/api/v1/robot/robot.go

53 lines
1.2 KiB
Go

package robot
import (
"jannex/robot-control-manager/modules/cache"
"jannex/robot-control-manager/modules/structs"
"time"
"git.ex.umbach.dev/Alex/roese-utils/rsutils"
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog/log"
)
func FirstRequest(c *fiber.Ctx) error {
// swagger:operation POST /robots robots robotsFirstRequest
// ---
// summary: First request from robot.
// description: |
// This is the first request from the robot. It will be used to identify the robot.
// consumes:
// - application/json
// produces:
// - application/json
// parameters:
// - in: body
// name: body
// description: First request body.
// required: true
// schema:
// "$ref": "#/definitions/FirstRequestBody"
// responses:
// "200":
// description: OK
// schema:
// "$ref": "#/definitions/StatusResponse"
var body structs.FirstRequestBody
if err := rsutils.BodyParserHelper(c, &body); err != nil {
return c.SendStatus(fiber.StatusBadRequest)
}
cache.AddRobot(&structs.Robot{
Id: body.Id,
Type: body.Type,
Address: c.IP(),
ConnectedAt: time.Now(),
})
log.Info().Msgf("Added robot %s (%v). Robots %v", body.Id, body.Type, cache.GetRobots())
return c.JSON(structs.StatusResponse{Status: "ok"})
}