func translatePolicy()

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)
}