use errors.New when not formatting

This commit is contained in:
Joel Wetzell
2025-12-23 15:00:30 -06:00
parent 76583b1fb8
commit ff1949ce69
49 changed files with 245 additions and 229 deletions

View File

@@ -2,7 +2,7 @@ package module
import (
"context"
"fmt"
"errors"
"log/slog"
"net/http"
"time"
@@ -53,11 +53,11 @@ func (hc *HTTPClient) Output(payload any) error {
payloadRequest, ok := payload.(*http.Request)
if !ok {
return fmt.Errorf("http.client is only able to output an http.Request")
return errors.New("http.client is only able to output an http.Request")
}
if hc.client == nil {
return fmt.Errorf("http.client client is nil")
return errors.New("http.client client is nil")
}
response, err := hc.client.Do(payloadRequest)

View File

@@ -3,6 +3,7 @@ package module
import (
"context"
"encoding/json"
"errors"
"fmt"
"log/slog"
"net/http"
@@ -31,13 +32,13 @@ func init() {
params := config.Params
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("http.server requires a port parameter")
return nil, errors.New("http.server requires a port parameter")
}
portNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("http.server port must be uint16")
return nil, errors.New("http.server port must be uint16")
}
return &HTTPServer{Port: uint16(portNum), config: config, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil
@@ -105,5 +106,5 @@ func (hs *HTTPServer) Run() error {
}
func (hs *HTTPServer) Output(payload any) error {
return fmt.Errorf("http.server output is not implemented")
return errors.New("http.server output is not implemented")
}

View File

@@ -2,7 +2,7 @@ package module
import (
"context"
"fmt"
"errors"
"log/slog"
"time"
@@ -27,13 +27,13 @@ func init() {
duration, ok := params["duration"]
if !ok {
return nil, fmt.Errorf("gen.interval requires a duration parameter")
return nil, errors.New("gen.interval requires a duration parameter")
}
durationNum, ok := duration.(float64)
if !ok {
return nil, fmt.Errorf("gen.interval duration must be number")
return nil, errors.New("gen.interval duration must be number")
}
return &Interval{Duration: uint32(durationNum), config: config, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil

View File

@@ -4,6 +4,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
@@ -30,13 +31,13 @@ func init() {
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("midi.input requires a port parameter")
return nil, errors.New("midi.input requires a port parameter")
}
portString, ok := port.(string)
if !ok {
return nil, fmt.Errorf("midi.input port must be a string")
return nil, errors.New("midi.input port must be a string")
}
return &MIDIInput{config: config, Port: portString, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil
@@ -78,5 +79,5 @@ func (mi *MIDIInput) Run() error {
}
func (mi *MIDIInput) Output(payload any) error {
return fmt.Errorf("midi.input output is not implemented")
return errors.New("midi.input output is not implemented")
}

View File

@@ -4,6 +4,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
@@ -31,13 +32,13 @@ func init() {
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("midi.output requires a port parameter")
return nil, errors.New("midi.output requires a port parameter")
}
portString, ok := port.(string)
if !ok {
return nil, fmt.Errorf("midi.output port must be a string")
return nil, errors.New("midi.output port must be a string")
}
return &MIDIOutput{config: config, Port: portString, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil
@@ -76,13 +77,13 @@ func (mo *MIDIOutput) Run() error {
func (mo *MIDIOutput) Output(payload any) error {
if mo.SendFunc == nil {
return fmt.Errorf("midi.output output is not setup")
return errors.New("midi.output output is not setup")
}
payloadMessage, ok := payload.(midi.Message)
if !ok {
return fmt.Errorf("midi.output can only ouptut midi.Message")
return errors.New("midi.output can only ouptut midi.Message")
}
return mo.SendFunc(payloadMessage)

View File

@@ -2,6 +2,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
@@ -29,37 +30,37 @@ func init() {
broker, ok := params["broker"]
if !ok {
return nil, fmt.Errorf("mqtt.client requires a broker parameter")
return nil, errors.New("mqtt.client requires a broker parameter")
}
brokerString, ok := broker.(string)
if !ok {
return nil, fmt.Errorf("mqtt.client broker must be string")
return nil, errors.New("mqtt.client broker must be string")
}
topic, ok := params["topic"]
if !ok {
return nil, fmt.Errorf("mqtt.client requires a topic parameter")
return nil, errors.New("mqtt.client requires a topic parameter")
}
topicString, ok := topic.(string)
if !ok {
return nil, fmt.Errorf("mqtt.client topic must be string")
return nil, errors.New("mqtt.client topic must be string")
}
clientId, ok := params["clientId"]
if !ok {
return nil, fmt.Errorf("mqtt.client requires a clientId parameter")
return nil, errors.New("mqtt.client requires a clientId parameter")
}
clientIdString, ok := clientId.(string)
if !ok {
return nil, fmt.Errorf("mqtt.client clientId must be string")
return nil, errors.New("mqtt.client clientId must be string")
}
return &MQTTClient{config: config, Broker: brokerString, Topic: topicString, ClientID: clientIdString, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil
@@ -110,15 +111,15 @@ func (mc *MQTTClient) Output(payload any) error {
fmt.Printf("payload type: %T\n", payload)
if !ok {
return fmt.Errorf("mqtt.client is only able to output a MQTTMessage")
return errors.New("mqtt.client is only able to output a MQTTMessage")
}
if mc.client == nil {
return fmt.Errorf("mqtt.client client is not setup")
return errors.New("mqtt.client client is not setup")
}
if !mc.client.IsConnected() {
return fmt.Errorf("mqtt.client is not connected")
return errors.New("mqtt.client is not connected")
}
token := mc.client.Publish(payloadMessage.Topic(), payloadMessage.Qos(), payloadMessage.Retained(), payloadMessage.Payload())

View File

@@ -2,7 +2,7 @@ package module
import (
"context"
"fmt"
"errors"
"log/slog"
"github.com/jwetzell/showbridge-go/internal/config"
@@ -29,25 +29,25 @@ func init() {
url, ok := params["url"]
if !ok {
return nil, fmt.Errorf("nats.client requires a url parameter")
return nil, errors.New("nats.client requires a url parameter")
}
urlString, ok := url.(string)
if !ok {
return nil, fmt.Errorf("nats.client url must be string")
return nil, errors.New("nats.client url must be string")
}
subject, ok := params["subject"]
if !ok {
return nil, fmt.Errorf("nats.client requires a subject parameter")
return nil, errors.New("nats.client requires a subject parameter")
}
subjectString, ok := subject.(string)
if !ok {
return nil, fmt.Errorf("nats.client subject must be string")
return nil, errors.New("nats.client subject must be string")
}
return &NATSClient{config: config, URL: urlString, Subject: subjectString, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil
@@ -97,15 +97,15 @@ func (nc *NATSClient) Output(payload any) error {
payloadMessage, ok := payload.(processor.NATSMessage)
if !ok {
return fmt.Errorf("nats.client is only able to output NATSMessage")
return errors.New("nats.client is only able to output NATSMessage")
}
if nc.client == nil {
return fmt.Errorf("nats.client client is not setup")
return errors.New("nats.client client is not setup")
}
if !nc.client.IsConnected() {
return fmt.Errorf("nats.client is not connected")
return errors.New("nats.client is not connected")
}
err := nc.client.Publish(payloadMessage.Subject, payloadMessage.Payload)

View File

@@ -4,6 +4,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
"time"
@@ -33,13 +34,13 @@ func init() {
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("serial.client requires a port parameter")
return nil, errors.New("serial.client requires a port parameter")
}
portString, ok := port.(string)
if !ok {
return nil, fmt.Errorf("serial.client port must be a string")
return nil, errors.New("serial.client port must be a string")
}
framingMethod := "RAW"
@@ -50,7 +51,7 @@ func init() {
framingMethodString, ok := framingMethodRaw.(string)
if !ok {
return nil, fmt.Errorf("serial.client framing method must be a string")
return nil, errors.New("serial.client framing method must be a string")
}
framingMethod = framingMethodString
}
@@ -63,12 +64,12 @@ func init() {
buadRate, ok := params["baudRate"]
if !ok {
return nil, fmt.Errorf("serial.client requires a baudRate parameter")
return nil, errors.New("serial.client requires a baudRate parameter")
}
baudRateNum, ok := buadRate.(float64)
if !ok {
return nil, fmt.Errorf("serial.client baudRate must be a number")
return nil, errors.New("serial.client baudRate must be a number")
}
mode := serial.Mode{
@@ -166,7 +167,7 @@ func (sc *SerialClient) Output(payload any) error {
payloadBytes, ok := payload.([]byte)
if !ok {
return fmt.Errorf("serial.client can only ouptut bytes")
return errors.New("serial.client can only ouptut bytes")
}
_, err := sc.port.Write(sc.Framer.Encode(payloadBytes))

View File

@@ -2,6 +2,7 @@ package module
import (
"context"
"errors"
"fmt"
"io"
"log/slog"
@@ -43,7 +44,7 @@ func init() {
specificPortNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("sip.call.server port must be a number")
return nil, errors.New("sip.call.server port must be a number")
}
portNum = int(specificPortNum)
}
@@ -56,7 +57,7 @@ func init() {
specificIpString, ok := ip.(string)
if !ok {
return nil, fmt.Errorf("sip.call.server ip must be a string")
return nil, errors.New("sip.call.server ip must be a string")
}
ipString = specificIpString
}
@@ -69,7 +70,7 @@ func init() {
specificTransportString, ok := transport.(string)
if !ok {
return nil, fmt.Errorf("sip.call.server transport must be a string")
return nil, errors.New("sip.call.server transport must be a string")
}
transportString = specificTransportString
}
@@ -82,7 +83,7 @@ func init() {
specificTransportString, ok := userAgent.(string)
if !ok {
return nil, fmt.Errorf("sip.call.server userAgent must be a string")
return nil, errors.New("sip.call.server userAgent must be a string")
}
userAgentString = specificTransportString
}
@@ -146,41 +147,41 @@ func (scs *SIPCallServer) Output(payload any) error {
payloadMsg, ok := payload.(string)
if !ok {
return fmt.Errorf("sip.call.server output payload must be of type string")
return errors.New("sip.call.server output payload must be of type string")
}
if scs.dg == nil {
return fmt.Errorf("sip.call.server diago is not initialized")
return errors.New("sip.call.server diago is not initialized")
}
var uri sip.Uri
err := sip.ParseUri(payloadMsg, &uri)
if err != nil {
return fmt.Errorf("sip.call.server output payload is not a valid SIP URI: %v", err)
return fmt.Errorf("sip.call.server output payload is not a valid SIP URI: %s", err)
}
outDialog, err := scs.dg.NewDialog(uri, diago.NewDialogOptions{
Transport: scs.Transport,
})
if err != nil {
return fmt.Errorf("sip.call.server failed to create new dialog: %v", err)
return fmt.Errorf("sip.call.server failed to create new dialog: %s", err)
}
err = outDialog.Invite(scs.ctx, diago.InviteClientOptions{})
if err != nil {
return fmt.Errorf("sip.call.server failed to send invite: %v", err)
return fmt.Errorf("sip.call.server failed to send invite: %s", err)
}
err = outDialog.Ack(scs.ctx)
if err != nil {
return fmt.Errorf("sip.call.server failed to send ack: %v", err)
return fmt.Errorf("sip.call.server failed to send ack: %s", err)
}
// TODO(jwetzell): make this configurable
// NOTE(jwetzell): wait 5 seconds before hanging up the call
time.Sleep(5 * time.Second)
err = outDialog.Hangup(scs.ctx)
if err != nil {
return fmt.Errorf("sip.call.server failed to hangup call: %v", err)
return fmt.Errorf("sip.call.server failed to hangup call: %s", err)
}
return nil
}

View File

@@ -2,7 +2,7 @@ package module
import (
"context"
"fmt"
"errors"
"io"
"log/slog"
"strings"
@@ -44,7 +44,7 @@ func init() {
specificPortNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("sip.dtmf.server port must be a number")
return nil, errors.New("sip.dtmf.server port must be a number")
}
portNum = int(specificPortNum)
}
@@ -57,7 +57,7 @@ func init() {
specificIpString, ok := ip.(string)
if !ok {
return nil, fmt.Errorf("sip.dtmf.server ip must be a string")
return nil, errors.New("sip.dtmf.server ip must be a string")
}
ipString = specificIpString
}
@@ -70,26 +70,26 @@ func init() {
specificTransportString, ok := transport.(string)
if !ok {
return nil, fmt.Errorf("sip.dtmf.server transport must be a string")
return nil, errors.New("sip.dtmf.server transport must be a string")
}
transportString = specificTransportString
}
separator, ok := params["separator"]
if !ok {
return nil, fmt.Errorf("sip.dtmf.server requires a separator parameter")
return nil, errors.New("sip.dtmf.server requires a separator parameter")
}
separatorString, ok := separator.(string)
if !ok {
return nil, fmt.Errorf("sip.dtmf.server separator must be a string")
return nil, errors.New("sip.dtmf.server separator must be a string")
}
if len(separatorString) != 1 {
return nil, fmt.Errorf("sip.dtmf.server separator must be a single character")
return nil, errors.New("sip.dtmf.server separator must be a single character")
}
if !strings.ContainsRune("0123456789*#ABCD", rune(separatorString[0])) {
return nil, fmt.Errorf("sip.dtmf.server separator must be a valid DTMF character")
return nil, errors.New("sip.dtmf.server separator must be a valid DTMF character")
}
return &SIPDTMFServer{config: config, ctx: ctx, router: router, IP: ipString, Port: int(portNum), Transport: transportString, Separator: separatorString, logger: slog.Default().With("component", "module", "id", config.Id)}, nil
},
@@ -160,5 +160,5 @@ func (sds *SIPDTMFServer) HandleCall(inDialog *diago.DialogServerSession) error
}
func (sds *SIPDTMFServer) Output(payload any) error {
return fmt.Errorf("sip.dtmf.server output is not implemented")
return errors.New("sip.dtmf.server output is not implemented")
}

View File

@@ -2,6 +2,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
"net"
@@ -30,24 +31,24 @@ func init() {
host, ok := params["host"]
if !ok {
return nil, fmt.Errorf("net.tcp.client requires a host parameter")
return nil, errors.New("net.tcp.client requires a host parameter")
}
hostString, ok := host.(string)
if !ok {
return nil, fmt.Errorf("net.tcp.client host must be string")
return nil, errors.New("net.tcp.client host must be string")
}
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("net.tcp.client requires a port parameter")
return nil, errors.New("net.tcp.client requires a port parameter")
}
portNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("net.tcp.client port must be a number")
return nil, errors.New("net.tcp.client port must be a number")
}
addr, err := net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:%d", hostString, uint16(portNum)))
@@ -63,7 +64,7 @@ func init() {
framingMethodString, ok := framingMethodRaw.(string)
if !ok {
return nil, fmt.Errorf("misc.serial.client framing method must be a string")
return nil, errors.New("misc.serial.client framing method must be a string")
}
framingMethod = framingMethodString
}
@@ -164,7 +165,7 @@ func (tc *TCPClient) Output(payload any) error {
}
payloadBytes, ok := payload.([]byte)
if !ok {
return fmt.Errorf("net.tcp.client is only able to output bytes")
return errors.New("net.tcp.client is only able to output bytes")
}
_, err := tc.conn.Write(tc.framer.Encode(payloadBytes))
return err

View File

@@ -36,13 +36,13 @@ func init() {
params := config.Params
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("net.tcp.server requires a port parameter")
return nil, errors.New("net.tcp.server requires a port parameter")
}
portNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("net.tcp.server port must be a number")
return nil, errors.New("net.tcp.server port must be a number")
}
framingMethod := "RAW"
@@ -53,7 +53,7 @@ func init() {
framingMethodString, ok := framingMethodRaw.(string)
if !ok {
return nil, fmt.Errorf("misc.serial.client framing method must be a string")
return nil, errors.New("misc.serial.client framing method must be a string")
}
framingMethod = framingMethodString
}
@@ -72,7 +72,7 @@ func init() {
specificIpString, ok := ip.(string)
if !ok {
return nil, fmt.Errorf("net.tcp.server ip must be a string")
return nil, errors.New("net.tcp.server ip must be a string")
}
ipString = specificIpString
}
@@ -201,7 +201,7 @@ func (ts *TCPServer) Output(payload any) error {
payloadBytes, ok := payload.([]byte)
if !ok {
return fmt.Errorf("net.tcp.server is only able to output bytes")
return errors.New("net.tcp.server is only able to output bytes")
}
ts.connectionsMu.Lock()
errorString := ""
@@ -217,5 +217,5 @@ func (ts *TCPServer) Output(payload any) error {
if errorString == "" {
return nil
}
return fmt.Errorf("%s", errorString)
return fmt.Errorf("net.tcp.server error during output: %s", errorString)
}

View File

@@ -2,7 +2,7 @@ package module
import (
"context"
"fmt"
"errors"
"log/slog"
"time"
@@ -27,13 +27,13 @@ func init() {
duration, ok := params["duration"]
if !ok {
return nil, fmt.Errorf("gen.timer requires a duration parameter")
return nil, errors.New("gen.timer requires a duration parameter")
}
durationNum, ok := duration.(float64)
if !ok {
return nil, fmt.Errorf("gen.timer duration must be a number")
return nil, errors.New("gen.timer duration must be a number")
}
return &Timer{Duration: uint32(durationNum), config: config, ctx: ctx, router: router, logger: slog.Default().With("component", "module", "id", config.Id)}, nil

View File

@@ -2,6 +2,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
"net"
@@ -28,24 +29,24 @@ func init() {
host, ok := params["host"]
if !ok {
return nil, fmt.Errorf("net.udp.client requires a host parameter")
return nil, errors.New("net.udp.client requires a host parameter")
}
hostString, ok := host.(string)
if !ok {
return nil, fmt.Errorf("net.udp.client host must be a string")
return nil, errors.New("net.udp.client host must be a string")
}
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("net.udp.client requires a port parameter")
return nil, errors.New("net.udp.client requires a port parameter")
}
portNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("net.udp.client port must be a number")
return nil, errors.New("net.udp.client port must be a number")
}
addr, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", hostString, uint16(portNum)))
@@ -91,7 +92,7 @@ func (uc *UDPClient) Output(payload any) error {
payloadBytes, ok := payload.([]byte)
if !ok {
return fmt.Errorf("net.udp.client is only able to output bytes")
return errors.New("net.udp.client is only able to output bytes")
}
if uc.conn != nil {
_, err := uc.conn.Write(payloadBytes)
@@ -100,7 +101,7 @@ func (uc *UDPClient) Output(payload any) error {
return err
}
} else {
return fmt.Errorf("net.udp.client client is not setup")
return errors.New("net.udp.client client is not setup")
}
return nil
}

View File

@@ -2,6 +2,7 @@ package module
import (
"context"
"errors"
"fmt"
"log/slog"
"net"
@@ -28,24 +29,24 @@ func init() {
ip, ok := params["ip"]
if !ok {
return nil, fmt.Errorf("net.udp.multicast requires an ip parameter")
return nil, errors.New("net.udp.multicast requires an ip parameter")
}
ipString, ok := ip.(string)
if !ok {
return nil, fmt.Errorf("net.udp.multicast ip must be a string")
return nil, errors.New("net.udp.multicast ip must be a string")
}
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("net.udp.multicast requires a port parameter")
return nil, errors.New("net.udp.multicast requires a port parameter")
}
portNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("net.udp.multicast port must be a number")
return nil, errors.New("net.udp.multicast port must be a number")
}
addr, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", ipString, uint16(portNum)))
@@ -111,11 +112,11 @@ func (um *UDPMulticast) Output(payload any) error {
payloadBytes, ok := payload.([]byte)
if !ok {
return fmt.Errorf("net.udp.multicast can only output bytes")
return errors.New("net.udp.multicast can only output bytes")
}
if um.conn == nil {
return fmt.Errorf("net.udp.multicast connection is not setup")
return errors.New("net.udp.multicast connection is not setup")
}
_, err := um.conn.Write(payloadBytes)

View File

@@ -2,6 +2,7 @@ package module
import (
"context"
"errors"
"fmt"
"log"
"log/slog"
@@ -27,13 +28,13 @@ func init() {
params := config.Params
port, ok := params["port"]
if !ok {
return nil, fmt.Errorf("net.udp.server requires a port parameter")
return nil, errors.New("net.udp.server requires a port parameter")
}
portNum, ok := port.(float64)
if !ok {
return nil, fmt.Errorf("net.udp.server port must be a number")
return nil, errors.New("net.udp.server port must be a number")
}
ipString := "0.0.0.0"
@@ -44,7 +45,7 @@ func init() {
specificIpString, ok := ip.(string)
if !ok {
return nil, fmt.Errorf("net.udp.server ip must be a string")
return nil, errors.New("net.udp.server ip must be a string")
}
ipString = specificIpString
}
@@ -107,5 +108,5 @@ func (us *UDPServer) Run() error {
}
func (us *UDPServer) Output(payload any) error {
return fmt.Errorf("net.udp.server output is not implemented")
return errors.New("net.udp.server output is not implemented")
}