1 /**
2 * Copyright 2016 IBM Corp.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 17 package sl
18 19 import "fmt"
20 21 // Error contains detailed information about an API error, which can be useful
22 // for debugging, or when finer error handling is required than just the mere
23 // presence or absence of an error.
24 //
25 // Error implements the error interface
26 type Error struct {
27 StatusCode int
28 Exception string `json:"code"`
29 Message string `json:"error"`
30 Wrapped error
31 }
32 33 func (r Error) Error() string {
34 if r.Wrapped != nil {
35 return r.Wrapped.Error()
36 }
37 38 var msg string
39 if r.Exception != "" {
40 msg = r.Exception + ": "
41 }
42 if r.Message != "" {
43 msg = msg + r.Message + " "
44 }
45 if r.StatusCode != 0 {
46 msg = fmt.Sprintf("%s(HTTP %d)", msg, r.StatusCode)
47 }
48 return msg
49 }
50