diff --git a/api/client.go b/api/client.go index 8078c428..e2f41348 100644 --- a/api/client.go +++ b/api/client.go @@ -27,7 +27,7 @@ func checkError(resp *http.Response, body []byte) error { err := json.Unmarshal(body, &apiError) if err != nil { // Use the full body as the message if we fail to decode a response. - apiError.Message = string(body) + apiError.ErrorMessage = string(body) } return apiError @@ -92,7 +92,6 @@ func (c *Client) do(ctx context.Context, method, path string, reqData, respData } } return nil - } func (c *Client) stream(ctx context.Context, method, path string, data any, fn func([]byte) error) error { @@ -133,9 +132,9 @@ func (c *Client) stream(ctx context.Context, method, path string, data any, fn f if response.StatusCode >= 400 { return StatusError{ - StatusCode: response.StatusCode, - Status: response.Status, - Message: errorResponse.Error, + StatusCode: response.StatusCode, + Status: response.Status, + ErrorMessage: errorResponse.Error, } } diff --git a/api/types.go b/api/types.go index b14d6811..eee74597 100644 --- a/api/types.go +++ b/api/types.go @@ -8,16 +8,23 @@ import ( ) type StatusError struct { - StatusCode int - Status string - Message string + StatusCode int + Status string + ErrorMessage string `json:"error"` } func (e StatusError) Error() string { - if e.Message != "" { - return fmt.Sprintf("%s: %s", e.Status, e.Message) + switch { + case e.Status != "" && e.ErrorMessage != "": + return fmt.Sprintf("%s: %s", e.Status, e.ErrorMessage) + case e.Status != "": + return e.Status + case e.ErrorMessage != "": + return e.ErrorMessage + default: + // this should not happen + return "something went wrong, please see the ollama server logs for details" } - return e.Status } type GenerateRequest struct { @@ -44,10 +51,10 @@ type PullRequest struct { } type ProgressResponse struct { - Status string `json:"status"` - Digest string `json:"digest,omitempty"` - Total int `json:"total,omitempty"` - Completed int `json:"completed,omitempty"` + Status string `json:"status"` + Digest string `json:"digest,omitempty"` + Total int `json:"total,omitempty"` + Completed int `json:"completed,omitempty"` } type PushRequest struct {