gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/runtime/kubernetes/client/api/response.go (about) 1 package api 2 3 import ( 4 "encoding/json" 5 "errors" 6 "io/ioutil" 7 "net/http" 8 9 "gitee.com/liuxuezhan/go-micro-v1.18.0/util/log" 10 ) 11 12 // Errors ... 13 var ( 14 ErrNotFound = errors.New("kubernetes: resource not found") 15 ErrDecode = errors.New("kubernetes: error decoding") 16 ErrUnknown = errors.New("kubernetes: unknown error") 17 ) 18 19 // Status is an object that is returned when a request 20 // failed or delete succeeded. 21 // type Status struct { 22 // Kind string `json:"kind"` 23 // Status string `json:"status"` 24 // Message string `json:"message"` 25 // Reason string `json:"reason"` 26 // Code int `json:"code"` 27 // } 28 29 // Response ... 30 type Response struct { 31 res *http.Response 32 err error 33 34 body []byte 35 } 36 37 // Error returns an error 38 func (r *Response) Error() error { 39 return r.err 40 } 41 42 // StatusCode returns status code for response 43 func (r *Response) StatusCode() int { 44 return r.res.StatusCode 45 } 46 47 // Into decode body into `data` 48 func (r *Response) Into(data interface{}) error { 49 if r.err != nil { 50 return r.err 51 } 52 53 defer r.res.Body.Close() 54 decoder := json.NewDecoder(r.res.Body) 55 err := decoder.Decode(&data) 56 if err != nil { 57 return ErrDecode 58 } 59 60 return r.err 61 } 62 63 func newResponse(res *http.Response, err error) *Response { 64 r := &Response{ 65 res: res, 66 err: err, 67 } 68 69 if err != nil { 70 return r 71 } 72 73 if r.res.StatusCode == http.StatusOK || 74 r.res.StatusCode == http.StatusCreated || 75 r.res.StatusCode == http.StatusNoContent { 76 // Non error status code 77 return r 78 } 79 80 if r.res.StatusCode == http.StatusNotFound { 81 r.err = ErrNotFound 82 return r 83 } 84 85 log.Logf("kubernetes: request failed with code %v", r.res.StatusCode) 86 87 b, err := ioutil.ReadAll(r.res.Body) 88 if err == nil { 89 log.Log("kubernetes: request failed with body:") 90 log.Log(string(b)) 91 } 92 r.err = ErrUnknown 93 94 return r 95 }