package main
import (
"github.com/go-mizu/mizu"
"github.com/go-mizu/mizu/mobile"
)
func main() {
app := mizu.New()
// Add mobile device detection
app.Use(mobile.New())
// Add API versioning
app.Use(mobile.VersionMiddleware(mobile.VersionOptions{
Supported: []mobile.Version{{2, 0}, {1, 0}},
Deprecated: []mobile.Version{{1, 0}},
Default: mobile.Version{Major: 2},
}))
// API routes
app.Get("/api/hello", handleHello)
app.Get("/api/users", handleUsers)
app.Listen(":3000")
}
func handleHello(c *mizu.Ctx) error {
device := mobile.DeviceFromCtx(c)
return c.JSON(200, map[string]any{
"message": "Hello from Mizu Mobile!",
"platform": device.Platform.String(),
"app_version": device.AppVersion,
"device_id": device.DeviceID,
})
}
func handleUsers(c *mizu.Ctx) error {
version := mobile.VersionFromCtx(c)
users := []map[string]any{
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
}
// Version-aware response
if version.AtLeast(2, 0) {
// v2: Include metadata
return c.JSON(200, map[string]any{
"data": users,
"count": len(users),
})
}
// v1: Simple array
return c.JSON(200, users)
}