Unify fallback and unimplemented API error handling

- Add a shared common error response schema and unknown error code for business-level fallbacks
- Return business error payloads for router NoRoute and NoMethod fallbacks
- Align the existing event list fallback response with the shared error structure
- Introduce an explicit unimplemented API error type instead of relying on formatted strings
- Make /api batch dispatch return per-item status 600 error entries for unimplemented modules and actions without failing the whole batch

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-06-06 17:13:27 +08:00
parent f6466989c6
commit 0dd5df0302
35 changed files with 149 additions and 72 deletions
+37
View File
@@ -0,0 +1,37 @@
package honokautils
import "errors"
type UnimplementedError struct {
Kind string
Module string
Name string
}
func (e *UnimplementedError) Error() string {
if e == nil {
return "unimplemented"
}
return "unimplemented " + e.Kind + ": " + e.Module + ": " + e.Name
}
func NewUnimplementedModuleError(module string) error {
return &UnimplementedError{
Kind: "api module",
Module: module,
Name: module,
}
}
func NewUnimplementedActionError(module string, action string) error {
return &UnimplementedError{
Kind: "action",
Module: module,
Name: action,
}
}
func IsUnimplementedError(err error) bool {
var target *UnimplementedError
return err != nil && errors.As(err, &target)
}
+1 -1
View File
@@ -1,4 +1,4 @@
package utils
package honokautils
import (
"encoding/json"
+1 -1
View File
@@ -1,4 +1,4 @@
package utils
package honokautils
import (
"encoding/json"