in lib/limit.go [397:431]
func translatePolicy(args ...ref.Val) ref.Val {
if len(args) != 6 {
return types.NewErr("no such overload")
}
headers, ok := args[0].(traits.Mapper)
if !ok {
return types.ValOrErr(headers, "no such overload for headers: %s", args[0].Type())
}
h, err := mapStrings(headers)
if err != nil {
return types.NewErr("%s", err)
}
prefix, ok := args[1].(types.String)
if !ok {
return types.ValOrErr(prefix, "no such overload for prefix: %s", args[1].Type())
}
canonical, ok := args[2].(types.Bool)
if !ok {
return types.ValOrErr(canonical, "no such overload for canonical: %s", args[1].Type())
}
delta, ok := args[3].(types.Bool)
if !ok {
return types.ValOrErr(delta, "no such overload for delta: %s", args[2].Type())
}
window, ok := args[4].(types.Duration)
if !ok {
return types.ValOrErr(window, "no such overload for window: %s", args[3].Type())
}
burst, ok := args[5].(types.Int)
if !ok {
return types.ValOrErr(burst, "no such overload for burst: %s", args[4].Type())
}
p := limitPolicy(h, string(prefix), bool(canonical), bool(delta), window.Duration, int(burst))
return types.DefaultTypeAdapter.NativeToValue(p)
}