package server import ( "encoding/json" "fmt" "io" "net/http" "github.com/labstack/echo/v4" "github.com/labstack/gommon/log" "github.com/rjNemo/rentease/internal/service/booking" ) func handleSync(bs *booking.Service) echo.HandlerFunc { type BookingInfo struct { Content string `json:"content"` } return func(c echo.Context) error { log.Info("received booking sync request from booking") x := c.Request().Body body, err := io.ReadAll(x) if err != nil { return c.String(http.StatusInternalServerError, err.Error()) } bookingInfo := new(BookingInfo) err = json.Unmarshal(body, bookingInfo) if err != nil { return c.String(http.StatusInternalServerError, fmt.Sprintf("error unmarshalling JSON: %s", err)) } b, err := bs.ParseFromApi(bookingInfo.Content) if err != nil { return c.String(http.StatusInternalServerError, err.Error()) } log.Infof("created booking %q from %q", b.Name, b.Platform) return c.JSON(http.StatusCreated, "👍") } }