package smithy
import (
)
type InvalidParamsError struct {
Context string
errs []InvalidParamError
}
func ( *InvalidParamsError) ( InvalidParamError) {
.SetContext(.Context)
.errs = append(.errs, )
}
func ( *InvalidParamsError) ( string, InvalidParamsError) {
for , := range .errs {
.SetContext(.Context)
.AddNestedContext()
.errs = append(.errs, )
}
}
func ( *InvalidParamsError) () int {
return len(.errs)
}
func ( InvalidParamsError) () string {
:= &bytes.Buffer{}
fmt.Fprintf(, "%d validation error(s) found.\n", len(.errs))
for , := range .errs {
fmt.Fprintf(, "- %s\n", .Error())
}
return .String()
}
func ( InvalidParamsError) () []error {
:= make([]error, len(.errs))
for := 0; < len(); ++ {
[] = .errs[]
}
return
}
type InvalidParamError interface {
error
Field() string
SetContext(string)
AddNestedContext(string)
}
type invalidParamError struct {
context string
nestedContext string
field string
reason string
}
func ( invalidParamError) () string {
return fmt.Sprintf("%s, %s.", .reason, .Field())
}
func ( invalidParamError) () string {
:= &strings.Builder{}
.WriteString(.context)
if .Len() > 0 {
if len(.nestedContext) == 0 || (len(.nestedContext) > 0 && .nestedContext[:1] != "[") {
.WriteRune('.')
}
}
if len(.nestedContext) > 0 {
.WriteString(.nestedContext)
.WriteRune('.')
}
.WriteString(.field)
return .String()
}
func ( *invalidParamError) ( string) {
.context =
}
func ( *invalidParamError) ( string) {
if len(.nestedContext) == 0 {
.nestedContext =
return
}
if .nestedContext[:1] != "[" {
.nestedContext = fmt.Sprintf("%s.%s", , .nestedContext)
return
}
.nestedContext = + .nestedContext
}
type ParamRequiredError struct {
invalidParamError
}
func ( string) *ParamRequiredError {
return &ParamRequiredError{
invalidParamError{
field: ,
reason: fmt.Sprintf("missing required field"),
},
}
}