Add core JSON-RPC 2.0 protocol implementation for Kanboard API: - JSONRPCRequest/Response/Error structs with proper JSON tags - Generic call() method for sending requests and parsing responses - Thread-safe request ID generation using atomic.Int64 - Automatic /jsonrpc.php path appending to baseURL - Support for subdirectory installations - HTTP Basic Auth support (API token and username/password) - Error handling for unauthorized/forbidden responses Includes comprehensive tests with httptest mock server. Closes: kanboard-api-2g1
28 lines
736 B
Go
28 lines
736 B
Go
package kanboard
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
var (
|
|
// ErrConnectionFailed indicates a connection to the Kanboard server failed.
|
|
ErrConnectionFailed = errors.New("connection to Kanboard server failed")
|
|
|
|
// ErrUnauthorized indicates authentication failed.
|
|
ErrUnauthorized = errors.New("authentication failed: invalid credentials")
|
|
|
|
// ErrForbidden indicates insufficient permissions.
|
|
ErrForbidden = errors.New("access forbidden: insufficient permissions")
|
|
)
|
|
|
|
// APIError represents an error returned by the Kanboard API.
|
|
type APIError struct {
|
|
Code int
|
|
Message string
|
|
}
|
|
|
|
// Error implements the error interface.
|
|
func (e *APIError) Error() string {
|
|
return fmt.Sprintf("Kanboard API error (code %d): %s", e.Code, e.Message)
|
|
}
|