github.com/gophercloud/gophercloud@v1.11.0/openstack/sharedfilesystems/v2/errors/errors.go (about) 1 package errors 2 3 import ( 4 "encoding/json" 5 "fmt" 6 7 "github.com/gophercloud/gophercloud" 8 ) 9 10 type ManilaError struct { 11 Code int `json:"code"` 12 Message string `json:"message"` 13 Details string `json:"details"` 14 } 15 16 type ErrorDetails map[string]ManilaError 17 18 // error types from provider_client.go 19 func ExtractErrorInto(rawError error, errorDetails *ErrorDetails) (err error) { 20 switch e := rawError.(type) { 21 case gophercloud.ErrDefault400: 22 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 23 case gophercloud.ErrDefault401: 24 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 25 case gophercloud.ErrDefault403: 26 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 27 case gophercloud.ErrDefault404: 28 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 29 case gophercloud.ErrDefault405: 30 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 31 case gophercloud.ErrDefault408: 32 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 33 case gophercloud.ErrDefault429: 34 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 35 case gophercloud.ErrDefault500: 36 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 37 case gophercloud.ErrDefault503: 38 err = json.Unmarshal(e.ErrUnexpectedResponseCode.Body, errorDetails) 39 default: 40 err = fmt.Errorf("Unable to extract detailed error message") 41 } 42 43 return err 44 }