Skip to main content
Glama
api.go2.96 kB
package router import ( "net/http" "github.com/babelcloud/gbox/packages/cli/internal/server/handlers" ) // APIRouter handles all /api/* routes type APIRouter struct { handlers *handlers.APIHandlers } // RegisterRoutes registers all API routes func (r *APIRouter) RegisterRoutes(mux *http.ServeMux, server interface{}) { // Cast server to ServerService var serverService handlers.ServerService if srv, ok := server.(handlers.ServerService); ok { serverService = srv } // Create handlers instance with actual server service r.handlers = handlers.NewAPIHandlers(serverService) // Create device handlers separately for direct routing deviceHandlers := handlers.NewDeviceHandlers(serverService) // Create box handlers separately boxHandlers := handlers.NewBoxHandlers(serverService) // Create a unified pattern router for all /api/* routes apiRouter := NewPatternRouter() // Health and status endpoints apiRouter.HandleFunc("/api/health", r.handlers.HandleHealth) apiRouter.HandleFunc("/api/status", r.handlers.HandleStatus) // Device management endpoints apiRouter.HandleFunc("/api/devices", deviceHandlers.HandleDeviceList) apiRouter.HandleFunc("/api/devices/register", deviceHandlers.HandleDeviceRegister) apiRouter.HandleFunc("/api/devices/unregister", deviceHandlers.HandleDeviceUnregister) // Device-specific endpoints with path parameters apiRouter.HandleFunc("/api/devices/{serial}", deviceHandlers.HandleDeviceAction) apiRouter.HandleFunc("/api/devices/{serial}/video", deviceHandlers.HandleDeviceVideo) apiRouter.HandleFunc("/api/devices/{serial}/audio", deviceHandlers.HandleDeviceAudio) apiRouter.HandleFunc("/api/devices/{serial}/stream", deviceHandlers.HandleDeviceStream) apiRouter.HandleFunc("/api/devices/{serial}/control", deviceHandlers.HandleDeviceControl) apiRouter.HandleFunc("/api/devices/{serial}/adb", deviceHandlers.HandleDeviceAdb) apiRouter.HandleFunc("/api/devices/{serial}/exec", deviceHandlers.HandleDeviceExec) apiRouter.HandleFunc("/api/devices/{serial}/appium", deviceHandlers.HandleDeviceAppium) apiRouter.HandleFunc("/api/devices/{serial}/appium/{path:.*}", deviceHandlers.HandleDeviceAppium) // File operations endpoints apiRouter.HandleFunc("/api/devices/{serial}/files", deviceHandlers.HandleDeviceFiles) apiRouter.HandleFunc("/api/devices/{serial}/files/{action}", deviceHandlers.HandleDeviceFiles) // Box management endpoints (proxy to remote GBOX API) apiRouter.HandleFunc("/api/boxes", boxHandlers.HandleBoxList) // Server management endpoints apiRouter.HandleFunc("/api/server/shutdown", r.handlers.HandleServerShutdown) apiRouter.HandleFunc("/api/server/info", r.handlers.HandleServerInfo) // Register the unified API router // Note: ADB Expose endpoints are handled separately by ADBExposeRouter mux.HandleFunc("/api/", apiRouter.ServeHTTP) } // GetPathPrefix returns the path prefix for this router func (r *APIRouter) GetPathPrefix() string { return "/api" }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/babelcloud/gru-sandbox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server