...
1 package xml
2
3 import (
4 "encoding/xml"
5 "fmt"
6 "io"
7 )
8
9
10
11 type ErrorComponents struct {
12 Code string
13 Message string
14 }
15
16
17 func GetErrorResponseComponents(r io.Reader, noErrorWrapping bool) (ErrorComponents, error) {
18 if noErrorWrapping {
19 var errResponse noWrappedErrorResponse
20 if err := xml.NewDecoder(r).Decode(&errResponse); err != nil && err != io.EOF {
21 return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response: %w", err)
22 }
23 return ErrorComponents{
24 Code: errResponse.Code,
25 Message: errResponse.Message,
26 }, nil
27 }
28
29 var errResponse wrappedErrorResponse
30 if err := xml.NewDecoder(r).Decode(&errResponse); err != nil && err != io.EOF {
31 return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response: %w", err)
32 }
33 return ErrorComponents{
34 Code: errResponse.Code,
35 Message: errResponse.Message,
36 }, nil
37 }
38
39
40
41 type noWrappedErrorResponse struct {
42 Code string `xml:"Code"`
43 Message string `xml:"Message"`
44 }
45
46
47
48 type wrappedErrorResponse struct {
49 Code string `xml:"Error>Code"`
50 Message string `xml:"Error>Message"`
51 }
52
View as plain text