diff --git a/go.mod b/go.mod index c6aed51..d47329d 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/extism/go-sdk v1.7.1 github.com/jwetzell/artnet-go v0.2.1 github.com/jwetzell/free-d-go v0.1.0 - github.com/jwetzell/osc-go v0.1.0 + github.com/jwetzell/osc-go v0.2.0 github.com/jwetzell/psn-go v0.3.0 github.com/nats-io/nats-server/v2 v2.12.4 github.com/nats-io/nats.go v1.49.0 diff --git a/go.sum b/go.sum index 5ed56d3..01c6ba2 100644 --- a/go.sum +++ b/go.sum @@ -61,8 +61,8 @@ github.com/jwetzell/artnet-go v0.2.1 h1:iYTKWcwYrF5kBkYfkw2UbWvoueeA23iKEn7fR27m github.com/jwetzell/artnet-go v0.2.1/go.mod h1:gli97Z32a0kMkZ6taoTiK7/lqHcF/dhiGjGJdx/PxqA= github.com/jwetzell/free-d-go v0.1.0 h1:xHt6dvyit98X+OC3jVzV0aLidxbyzi3vI9QiYkteEtA= github.com/jwetzell/free-d-go v0.1.0/go.mod h1:KmrkooRARRaxJTBSPvwt/6IMAIaHH1R8bSA8cwbbELw= -github.com/jwetzell/osc-go v0.1.0 h1:EXxup5VWBErHot2Ri4MFToPf6KCzLDTbCt2x6GLfw8I= -github.com/jwetzell/osc-go v0.1.0/go.mod h1:xLz0jTwebSxtx1TkKN1YVdeRqvpFNweDhTut5TE393A= +github.com/jwetzell/osc-go v0.2.0 h1:4as+BYCeZhEddFczGveP5yZZxvY728Uavz+ZSLZfOII= +github.com/jwetzell/osc-go v0.2.0/go.mod h1:D3ZIXYB12bt4S35lKFUqgCFbF1Y+9Ld0sOhHA9mGZZM= github.com/jwetzell/psn-go v0.3.0 h1:WVpCEmExYE8a+I5hQak5jNJJp2x35VdGX/VuMUKPmhY= github.com/jwetzell/psn-go v0.3.0/go.mod h1:bcEAeti4sQM375buujb3mIfmUstD4Aby18gq3ENb6+o= github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw= diff --git a/internal/processor/osc-message-decode.go b/internal/processor/osc-message-decode.go index ef35e46..18102ba 100644 --- a/internal/processor/osc-message-decode.go +++ b/internal/processor/osc-message-decode.go @@ -3,6 +3,7 @@ package processor import ( "context" "errors" + "fmt" osc "github.com/jwetzell/osc-go" "github.com/jwetzell/showbridge-go/internal/config" @@ -29,7 +30,7 @@ func (omd *OSCMessageDecode) Process(ctx context.Context, payload any) (any, err message, err := osc.MessageFromBytes(payloadBytes) if err != nil { - return nil, err + return nil, fmt.Errorf("osc.message.decode processor failed to decode OSC message: %w", err) } return message, nil } diff --git a/internal/processor/osc-message-encode.go b/internal/processor/osc-message-encode.go index 3a35143..9c7c1da 100644 --- a/internal/processor/osc-message-encode.go +++ b/internal/processor/osc-message-encode.go @@ -13,10 +13,10 @@ type OSCMessageEncode struct { } func (ome *OSCMessageEncode) Process(ctx context.Context, payload any) (any, error) { - payloadMessage, ok := GetAnyAs[osc.OSCMessage](payload) + payloadMessage, ok := GetAnyAs[*osc.OSCMessage](payload) if !ok { - return nil, errors.New("osc.message.encode processor only accepts an OSCMessage") + return nil, errors.New("osc.message.encode processor only accepts an *OSCMessage") } bytes := payloadMessage.ToBytes() diff --git a/internal/processor/test/osc-message-decode_test.go b/internal/processor/test/osc-message-decode_test.go index 4a61e0e..8848772 100644 --- a/internal/processor/test/osc-message-decode_test.go +++ b/internal/processor/test/osc-message-decode_test.go @@ -33,12 +33,12 @@ func TestGoodOSCMessageDecode(t *testing.T) { tests := []struct { name string payload []byte - expected osc.OSCMessage + expected *osc.OSCMessage }{ { name: "basic OSC message", payload: []byte{47, 116, 101, 115, 116, 0, 0, 0, 44, 0, 0, 0}, - expected: osc.OSCMessage{ + expected: &osc.OSCMessage{ Address: "/test", Args: []osc.OSCArg{}, }, @@ -46,7 +46,7 @@ func TestGoodOSCMessageDecode(t *testing.T) { { name: "basic OSC message with argument", payload: []byte{47, 116, 101, 115, 116, 0, 0, 0, 44, 105, 0, 0, 0, 0, 0, 42}, - expected: osc.OSCMessage{ + expected: &osc.OSCMessage{ Address: "/test", Args: []osc.OSCArg{ { @@ -66,7 +66,7 @@ func TestGoodOSCMessageDecode(t *testing.T) { t.Fatalf("osc.message.decode processing failed: %s", err) } - gotMessage, ok := got.(osc.OSCMessage) + gotMessage, ok := got.(*osc.OSCMessage) if !ok { t.Fatalf("osc.message.decode returned a %T payload: %s", got, got) } @@ -100,6 +100,11 @@ func TestBadOSCMessageDecode(t *testing.T) { payload: []byte{48, 116, 101, 115, 116, 0, 0, 0, 44, 105, 0, 0, 0, 0, 0, 42}, errorString: "osc.message.decode processor needs an OSC looking []byte", }, + { + name: "invalid OSC payload", + payload: []byte{47, 116, 101, 115, 116, 0}, + errorString: "osc.message.decode processor failed to decode OSC message: string data is not properly padded", + }, } for _, test := range tests { diff --git a/internal/processor/test/osc-message-encode_test.go b/internal/processor/test/osc-message-encode_test.go index 33ccf1c..24419ab 100644 --- a/internal/processor/test/osc-message-encode_test.go +++ b/internal/processor/test/osc-message-encode_test.go @@ -37,14 +37,14 @@ func TestGoodOSCMessageEncode(t *testing.T) { }{ { name: "basic OSC message", - payload: osc.OSCMessage{ + payload: &osc.OSCMessage{ Address: "/test", }, expected: []byte{47, 116, 101, 115, 116, 0, 0, 0, 44, 0, 0, 0}, }, { name: "basic OSC message with argument", - payload: osc.OSCMessage{ + payload: &osc.OSCMessage{ Address: "/test", Args: []osc.OSCArg{ { @@ -86,7 +86,7 @@ func TestBadOSCMessageEncode(t *testing.T) { { name: "non-osc message input", payload: "test", - errorString: "osc.message.encode processor only accepts an OSCMessage", + errorString: "osc.message.encode processor only accepts an *OSCMessage", }, }