Break out start and stop API

This commit is contained in:
Owen
2025-11-19 16:24:07 -05:00
parent 5af1b63558
commit 196d1cdee7
3 changed files with 38 additions and 4 deletions

View File

@@ -114,6 +114,7 @@ func (s *API) Start() error {
mux.HandleFunc("/switch-org", s.handleSwitchOrg)
mux.HandleFunc("/disconnect", s.handleDisconnect)
mux.HandleFunc("/exit", s.handleExit)
mux.HandleFunc("/health", s.handleHealth)
s.server = &http.Server{
Handler: mux,
@@ -309,6 +310,20 @@ func (s *API) handleStatus(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(resp)
}
// handleHealth handles the /health endpoint
func (s *API) handleHealth(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodGet {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]string{
"status": "ok",
})
}
// handleExit handles the /exit endpoint
func (s *API) handleExit(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {

View File

@@ -214,6 +214,9 @@ func runOlmMainWithArgs(ctx context.Context, args []string) {
}
olm.Init(ctx, olmConfig)
if err := olm.StartApi(); err != nil {
logger.Fatal("Failed to start API server: %v", err)
}
if config.ID != "" && config.Secret != "" && config.Endpoint != "" {
tunnelConfig := olm.TunnelConfig{

View File

@@ -101,10 +101,6 @@ func Init(ctx context.Context, config GlobalConfig) {
apiServer.SetVersion(config.Version)
if err := apiServer.Start(); err != nil {
logger.Fatal("Failed to start HTTP server: %v", err)
}
// Set up API handlers
apiServer.SetHandlers(
// onConnect
@@ -907,3 +903,23 @@ func StopTunnel() {
logger.Info("Tunnel process stopped")
}
func StopApi() error {
if apiServer != nil {
err := apiServer.Stop()
if err != nil {
return fmt.Errorf("failed to stop API server: %w", err)
}
}
return nil
}
func StartApi() error {
if apiServer != nil {
err := apiServer.Start()
if err != nil {
return fmt.Errorf("failed to start API server: %w", err)
}
}
return nil
}