1package document
2
3import (
4 "fmt"
5 "reflect"
6)
7
8// UnmarshalTypeError is an error type representing an error
9// unmarshaling a Smithy document to a Go value type. This is different
10// from UnmarshalError in that it does not wrap an underlying error type.
11type UnmarshalTypeError struct {
12 Value string
13 Type reflect.Type
14}
15
16// Error returns the string representation of the error.
17// Satisfying the error interface.
18func (e *UnmarshalTypeError) Error() string {
19 return fmt.Sprintf("unmarshal failed, cannot unmarshal %s into Go value type %s",
20 e.Value, e.Type.String())
21}
22
23// An InvalidUnmarshalError is an error type representing an invalid type
24// encountered while unmarshaling a Smithy document to a Go value type.
25type InvalidUnmarshalError struct {
26 Type reflect.Type
27}
28
29// Error returns the string representation of the error.
30// Satisfying the error interface.
31func (e *InvalidUnmarshalError) Error() string {
32 var msg string
33 if e.Type == nil {
34 msg = "cannot unmarshal to nil value"
35 } else if e.Type.Kind() != reflect.Ptr {
36 msg = fmt.Sprintf("cannot unmarshal to non-pointer value, got %s", e.Type.String())
37 } else {
38 msg = fmt.Sprintf("cannot unmarshal to nil value, %s", e.Type.String())
39 }
40
41 return fmt.Sprintf("unmarshal failed, %s", msg)
42}
43
44// An UnmarshalError wraps an error that occurred while unmarshaling a
45// Smithy document into a Go type. This is different from
46// UnmarshalTypeError in that it wraps the underlying error that occurred.
47type UnmarshalError struct {
48 Err error
49 Value string
50 Type reflect.Type
51}
52
53// Unwrap returns the underlying unmarshaling error
54func (e *UnmarshalError) Unwrap() error {
55 return e.Err
56}
57
58// Error returns the string representation of the error.
59// Satisfying the error interface.
60func (e *UnmarshalError) Error() string {
61 return fmt.Sprintf("unmarshal failed, cannot unmarshal %q into %s, %v",
62 e.Value, e.Type.String(), e.Err)
63}
64
65// An InvalidMarshalError is an error type representing an error
66// occurring when marshaling a Go value type.
67type InvalidMarshalError struct {
68 Message string
69}
70
71// Error returns the string representation of the error.
72// Satisfying the error interface.
73func (e *InvalidMarshalError) Error() string {
74 return fmt.Sprintf("marshal failed, %s", e.Message)
75}