// Copyright (c) EZSCALE. // SPDX-License-Identifier: MPL-2.0 package client import "fmt" // APIError represents an error returned by the VirtFusion API. type APIError struct { StatusCode int Status string Body string Errors map[string][]string } func (e *APIError) Error() string { if len(e.Errors) > 0 { return fmt.Sprintf("VirtFusion API error %d (%s): %v", e.StatusCode, e.Status, e.Errors) } if e.Body != "" { return fmt.Sprintf("VirtFusion API error %d (%s): %s", e.StatusCode, e.Status, e.Body) } return fmt.Sprintf("VirtFusion API error %d (%s)", e.StatusCode, e.Status) } // IsNotFound returns true if the error is a 404 Not Found response. func (e *APIError) IsNotFound() bool { return e.StatusCode == 404 } // IsValidationError returns true if the error is a 422 Unprocessable Entity response. func (e *APIError) IsValidationError() bool { return e.StatusCode == 422 }