Skip to content

Commit 28e94e2

Browse files
authored
use (Un)PackError from iso8583 package instead of using own types (#53)
1 parent 8970c5b commit 28e94e2

File tree

4 files changed

+15
-40
lines changed

4 files changed

+15
-40
lines changed

connection.go

+5-36
Original file line numberDiff line numberDiff line change
@@ -40,33 +40,6 @@ const (
4040
StatusUnknown Status = ""
4141
)
4242

43-
// UnpackError returns error with possibility to access RawMessage when
44-
// connection failed to unpack message
45-
type UnpackError struct {
46-
Err error
47-
RawMessage []byte
48-
}
49-
50-
func (e *UnpackError) Error() string {
51-
return e.Err.Error()
52-
}
53-
54-
func (e *UnpackError) Unwrap() error {
55-
return e.Err
56-
}
57-
58-
type PackError struct {
59-
Err error
60-
}
61-
62-
func (e *PackError) Error() string {
63-
return e.Err.Error()
64-
}
65-
66-
func (e *PackError) Unwrap() error {
67-
return e.Err
68-
}
69-
7043
// Connection represents an ISO 8583 Connection. Connection may be used
7144
// by multiple goroutines simultaneously.
7245
type Connection struct {
@@ -413,7 +386,7 @@ func (c *Connection) writeMessage(w io.Writer, message *iso8583.Message) error {
413386
// default message writer
414387
packed, err := message.Pack()
415388
if err != nil {
416-
return utils.NewSafeError(&PackError{err}, "failed to pack message")
389+
return fmt.Errorf("packing message: %w", err)
417390
}
418391

419392
// create buffer for header and packed message so we can write it to
@@ -536,7 +509,7 @@ func (c *Connection) writeLoop() {
536509
if err != nil {
537510
c.handleError(fmt.Errorf("writing message: %w", err))
538511

539-
var packErr *PackError
512+
var packErr *iso8583.PackError
540513
if errors.As(err, &packErr) {
541514
// let caller know that the message was not sent because of pack error.
542515
// We don't set all type of errors to errCh as this case is handled
@@ -587,9 +560,9 @@ func (c *Connection) readLoop() {
587560
if err != nil {
588561
c.handleError(utils.NewSafeError(err, "failed to read message from connection"))
589562

590-
// if err is ErrUnpack, we can still continue reading
563+
// if err is UnpackError, we can still continue reading
591564
// from the connection
592-
var unpackErr *UnpackError
565+
var unpackErr *iso8583.UnpackError
593566
if errors.As(err, &unpackErr) {
594567
continue
595568
}
@@ -635,11 +608,7 @@ func (c *Connection) readMessage(r io.Reader) (*iso8583.Message, error) {
635608
message := iso8583.NewMessage(c.spec)
636609
err = message.Unpack(rawMessage)
637610
if err != nil {
638-
unpackErr := &UnpackError{
639-
Err: err,
640-
RawMessage: rawMessage,
641-
}
642-
return nil, fmt.Errorf("unpacking message: %w", unpackErr)
611+
return nil, fmt.Errorf("unpacking message: %w", err)
643612
}
644613

645614
return message, nil

connection_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func TestClient_Send(t *testing.T) {
289289
// then Send should return PackError
290290
require.Error(t, err)
291291

292-
var packError *connection.PackError
292+
var packError *iso8583.PackError
293293
require.ErrorAs(t, err, &packError)
294294
})
295295

@@ -367,7 +367,7 @@ func TestClient_Send(t *testing.T) {
367367
mu.Lock()
368368
defer mu.Unlock()
369369

370-
var unpackErr *connection.UnpackError
370+
var unpackErr *iso8583.UnpackError
371371
if errors.As(handledError, &unpackErr) {
372372
require.EqualError(t, handledError, "failed to read message from connection")
373373
require.EqualError(t, unpackErr, "failed to unpack field 63: no specification found")

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/moov-io/iso8583-connection
33
go 1.19
44

55
require (
6-
github.com/moov-io/iso8583 v0.18.2
6+
github.com/moov-io/iso8583 v0.18.3
77
github.com/stretchr/testify v1.8.4
88
)
99

@@ -12,6 +12,6 @@ require (
1212
github.com/kr/text v0.2.0 // indirect
1313
github.com/pmezard/go-difflib v1.0.0 // indirect
1414
github.com/yerden/go-util v1.1.4 // indirect
15-
golang.org/x/text v0.10.0 // indirect
15+
golang.org/x/text v0.11.0 // indirect
1616
gopkg.in/yaml.v3 v3.0.1 // indirect
1717
)

go.sum

+6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ github.com/moov-io/iso8583 v0.18.1 h1:J0amw2rhoTv2l5nvY7n4Ee4A34SSBrZESfrZ+Dvke0
99
github.com/moov-io/iso8583 v0.18.1/go.mod h1:rqnoLk9z66a2S6OAo6oeVJsGrGwr/MQkx2G7frxS5RI=
1010
github.com/moov-io/iso8583 v0.18.2 h1:7D/zGxhV7YK23V1SfARU/JcJFVAW9jp0j1k1W5z4WyY=
1111
github.com/moov-io/iso8583 v0.18.2/go.mod h1:yq1HVUdtNG+NXY0YIaD4od/QOKCCOSk6/ygU2aTE/E0=
12+
github.com/moov-io/iso8583 v0.18.3-0.20230720140054-1b1d36aa2970 h1:PdUPxYek+MeOea1GfjATYLSDZolsS6IDoUbAsIq6Its=
13+
github.com/moov-io/iso8583 v0.18.3-0.20230720140054-1b1d36aa2970/go.mod h1:QPxDQTxKJPjECpK8vCsh7TpwvKyIrw3tXN/lrdATzCA=
14+
github.com/moov-io/iso8583 v0.18.3 h1:RYr/zoNxeRcLpJ1VjJ8e8yC0fRK5+xFqKqpnyMTz3+A=
15+
github.com/moov-io/iso8583 v0.18.3/go.mod h1:QPxDQTxKJPjECpK8vCsh7TpwvKyIrw3tXN/lrdATzCA=
1216
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1317
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1418
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
@@ -20,6 +24,8 @@ golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
2024
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
2125
golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58=
2226
golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
27+
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
28+
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
2329
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
2430
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
2531
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

0 commit comments

Comments
 (0)