mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-09 17:12:14 +01:00
huge refactoring
This commit is contained in:
60
internal/pkg/xassert/string.go
Normal file
60
internal/pkg/xassert/string.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package xassert
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/thecodingmachine/gotenberg/internal/pkg/xerror"
|
||||
)
|
||||
|
||||
// RuleString is an interface for
|
||||
// validating a string.
|
||||
type RuleString interface {
|
||||
with(key, value string)
|
||||
validate() error
|
||||
}
|
||||
|
||||
type baseRuleString struct {
|
||||
key string
|
||||
value string
|
||||
}
|
||||
|
||||
func (r *baseRuleString) with(key, value string) {
|
||||
r.key = key
|
||||
r.value = value
|
||||
}
|
||||
|
||||
type ruleStringOneOf struct {
|
||||
*baseRuleString
|
||||
values []string
|
||||
}
|
||||
|
||||
func (r ruleStringOneOf) validate() error {
|
||||
const op string = "xassert.ruleStringOneOf.validate"
|
||||
for _, v := range r.values {
|
||||
if r.value == v {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return xerror.Invalid(
|
||||
op,
|
||||
fmt.Sprintf("'%s' should be one of '%v', got '%s'", r.key, r.values, r.value),
|
||||
nil,
|
||||
)
|
||||
}
|
||||
|
||||
/*
|
||||
StringOneOf returns a RuleString for
|
||||
validating that a string is one of given
|
||||
values.
|
||||
*/
|
||||
func StringOneOf(values []string) RuleString {
|
||||
return ruleStringOneOf{
|
||||
&baseRuleString{},
|
||||
values,
|
||||
}
|
||||
}
|
||||
|
||||
// Compile-time checks to ensure type implements desired interfaces.
|
||||
var (
|
||||
_ = RuleString(new(ruleStringOneOf))
|
||||
)
|
||||
Reference in New Issue
Block a user