The MediaWiki API may return multiple errors. Is this a idiomatic way of representing them?
type MediaWikiError struct {
Code string `json:"code"`
Data interface{} `json:"data"`
Message string `json:"text"`
Module string `json:"module"`
}
func (e *MediaWikiError) Error() string {
return fmt.Sprintf("MediaWiki module \"%s\" reported an error: %s (%s)", e.Module, e.Message, e.Code)
}
type MediaWikiErrors []*MediaWikiError
func (e MediaWikiErrors) Error() string {
switch len(e) {
case 0:
return ""
case 1:
return e[0].Error()
default:
codes := make([]string, len(e))
for i, err := range e {
codes[i] = err.Code
}
return fmt.Sprintf("MediaWiki API reported multiple errors: %s", strings.Join(codes, ", "))
}
}