48 lines
874 B
Go
48 lines
874 B
Go
package messenger
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
)
|
|
|
|
var ErrUnmarshal = errors.New("unmarshal error")
|
|
|
|
type UnmarshalError struct {
|
|
Content []byte
|
|
ErrorText string
|
|
Err error
|
|
}
|
|
|
|
func (u *UnmarshalError) Error() string {
|
|
return fmt.Sprintf("can not unmarshal content: %s; error: %s", string(u.Content), u.ErrorText)
|
|
}
|
|
|
|
func (u *UnmarshalError) Unwrap() error {
|
|
return u.Err
|
|
}
|
|
|
|
func NewUnmarshalError(err error) *UnmarshalError {
|
|
return &UnmarshalError{
|
|
Err: ErrUnmarshal,
|
|
ErrorText: err.Error(),
|
|
}
|
|
}
|
|
|
|
func (u *UnmarshalError) WithReader(reader io.Reader) *UnmarshalError {
|
|
content, _ := ioutil.ReadAll(reader)
|
|
u.Content = content
|
|
return u
|
|
}
|
|
|
|
func (u *UnmarshalError) WithContent(content []byte) *UnmarshalError {
|
|
u.Content = content
|
|
return u
|
|
}
|
|
|
|
func (u *UnmarshalError) WithErr(err error) *UnmarshalError {
|
|
u.Err = err
|
|
return u
|
|
}
|