Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/cli. OpenStatus CLI www.openstatus.dev
Something went wrong. Try again.
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990package monitors
import ( "context" "fmt" "net/http" "strconv"
"buf.build/gen/go/openstatus/api/connectrpc/gosimple/openstatus/monitor/v1/monitorv1connect" monitorv1 "buf.build/gen/go/openstatus/api/protocolbuffers/go/openstatus/monitor/v1"
"github.com/openstatusHQ/cli/internal/config")
// UpdateMonitor updates a monitor using the SDK, dispatching to the appropriate typefunc UpdateMonitor(ctx context.Context, httpClient *http.Client, apiKey string, id int, monitor config.Monitor) (Monitor, error) { client := NewMonitorClientWithHTTPClient(httpClient, apiKey)
switch monitor.Kind { case config.HTTP: return UpdateHTTPMonitor(ctx, client, id, monitor) case config.TCP: return UpdateTCPMonitor(ctx, client, id, monitor) case config.ICMP: return UpdateICMPMonitor(ctx, client, id, monitor) default: return Monitor{}, fmt.Errorf("unsupported monitor kind: %s", monitor.Kind) }}
// UpdateHTTPMonitor updates an HTTP monitor using the SDKfunc UpdateHTTPMonitor(ctx context.Context, client monitorv1connect.MonitorServiceClient, id int, monitor config.Monitor) (Monitor, error) { httpMonitor := configToHTTPMonitor(monitor) httpMonitor.Id = strconv.Itoa(id)
req := &monitorv1.UpdateHTTPMonitorRequest{ Id: strconv.Itoa(id), Monitor: httpMonitor, }
resp, err := client.UpdateHTTPMonitor(ctx, req) if err != nil { return Monitor{}, fmt.Errorf("failed to update HTTP monitor: %w", err) }
return httpMonitorToLocal(resp.GetMonitor())}
// UpdateTCPMonitor updates a TCP monitor using the SDKfunc UpdateTCPMonitor(ctx context.Context, client monitorv1connect.MonitorServiceClient, id int, monitor config.Monitor) (Monitor, error) { tcpMonitor, err := configToTCPMonitor(monitor) if err != nil { return Monitor{}, err } tcpMonitor.Id = strconv.Itoa(id)
req := &monitorv1.UpdateTCPMonitorRequest{ Id: strconv.Itoa(id), Monitor: tcpMonitor, }
resp, err := client.UpdateTCPMonitor(ctx, req) if err != nil { return Monitor{}, fmt.Errorf("failed to update TCP monitor: %w", err) }
return tcpMonitorToLocal(resp.GetMonitor())}
// UpdateICMPMonitor updates an ICMP monitor using the SDKfunc UpdateICMPMonitor(ctx context.Context, client monitorv1connect.MonitorServiceClient, id int, monitor config.Monitor) (Monitor, error) { icmpMonitor, err := configToICMPMonitor(monitor) if err != nil { return Monitor{}, err } icmpMonitor.Id = strconv.Itoa(id)
req := &monitorv1.UpdateICMPMonitorRequest{ Id: strconv.Itoa(id), Monitor: icmpMonitor, }
resp, err := client.UpdateICMPMonitor(ctx, req) if err != nil { return Monitor{}, fmt.Errorf("failed to update ICMP monitor: %w", err) }
return icmpMonitorToLocal(resp.GetMonitor())}