github.com/akamai/AkamaiOPEN-edgegrid-golang@v1.2.2/configgtm-v1_5/errors.go (about) 1 package configgtm 2 3 import ( 4 "fmt" 5 ) 6 7 type ConfigGTMError interface { 8 error 9 Network() bool 10 NotFound() bool 11 FailedToSave() bool 12 ValidationFailed() bool 13 } 14 15 func IsConfigGTMError(e error) bool { 16 _, ok := e.(ConfigGTMError) 17 return ok 18 } 19 20 type CommonError struct { 21 entityName string 22 name string 23 httpErrorMessage string 24 apiErrorMessage string 25 err error 26 } 27 28 func (e CommonError) SetItem(itemName string, itemVal interface{}) { 29 switch itemName { 30 case "entityName": 31 e.entityName = itemVal.(string) 32 case "name": 33 e.name = itemVal.(string) 34 case "httpErrorMessage": 35 e.httpErrorMessage = itemVal.(string) 36 case "apiErrorMessage": 37 e.apiErrorMessage = itemVal.(string) 38 case "err": 39 e.err = itemVal.(error) 40 } 41 } 42 43 func (e CommonError) GetItem(itemName string) interface{} { 44 switch itemName { 45 case "entityName": 46 return e.entityName 47 case "name": 48 return e.name 49 case "httpErrorMessage": 50 return e.httpErrorMessage 51 case "apiErrorMessage": 52 return e.apiErrorMessage 53 case "err": 54 return e.err 55 } 56 57 return nil 58 } 59 60 func (e CommonError) Network() bool { 61 if e.httpErrorMessage != "" { 62 return true 63 } 64 return false 65 } 66 67 func (e CommonError) NotFound() bool { 68 if e.err == nil && e.httpErrorMessage == "" && e.apiErrorMessage == "" { 69 return true 70 } 71 return false 72 } 73 74 func (CommonError) FailedToSave() bool { 75 return false 76 } 77 78 func (e CommonError) ValidationFailed() bool { 79 if e.apiErrorMessage != "" { 80 return true 81 } 82 return false 83 } 84 85 func (e CommonError) Error() string { 86 87 if e.Network() { 88 return fmt.Sprintf("%s \"%s\" network error: [%s]", e.entityName, e.name, e.httpErrorMessage) 89 } 90 91 if e.NotFound() { 92 return fmt.Sprintf("%s \"%s\" not found.", e.entityName, e.name) 93 } 94 95 if e.FailedToSave() { 96 return fmt.Sprintf("%s \"%s\" failed to save: [%s]", e.entityName, e.name, e.err.Error()) 97 } 98 99 if e.ValidationFailed() { 100 return fmt.Sprintf("%s \"%s\" validation failed: [%s]", e.entityName, e.name, e.apiErrorMessage) 101 } 102 103 if e.err != nil { 104 return e.err.Error() 105 } 106 107 return "<nil>" 108 }