Skooma 输入验证器
Skooma input validator
我的任务是使用 Skooma 库实现输入验证器 https://github.com/bobfp/skooma#validators
一般概念很清楚,但对于某些输入,我有一个“合法”单词列表,而且我对如何针对这种情况实施验证一无所知。
因此我来这里的原因,我想问一下您是否知道使用该库的任何示例/项目?我用谷歌搜索但没有找到任何东西。
如果您有任何其他建议,请告诉我!
这是示例:
我的架构:
schema = %{
:titel => :string,
:category => :string,
:high_level_category => :string,
:description => :string,
:potential_impacts => :string,
:affected_assets => :string,
:rating => :string }
类别的合法输入:
category = %{core: 'Core network threats', access: 'Access network threats', multi: 'Multi edge computing threats',
virtualisation: 'Virtualisation threats', phyiscal: 'Physical infrastructure threats', generic: 'Generic threats'}
我也用普通列表试过,比如
category = ['Core network threats', 'Access network threats', 'Multi edge computing threats' .......]
但我无法理解如何检查类别列表中是否存在 :category。
你需要一个custom validator函数,下面是一个例子:
alias Skooma.Validators
@valid_categories [
"Access network threats",
"Core network threats",
"Generic threats",
"Multi edge computing threats",
"Physical infrastructure threats",
"Virtualisation threats"
]
def valid?(data), do: Skooma.valid?(data, schema())
defp schema,
do: %{
:category => [:string, inclusion(@valid_categories)],
... # rest of the schema
}
# copied from:
# https://github.com/bobfp/skooma/blob/master/lib/validators.ex#L38-L48
defp inclusion(values_list) when is_list(values_list) do
fn data ->
bool = data in values_list
if bool do
:ok
else
{:error, "Value is not included in the options: #{inspect(values_list)}"}
end
end
end
您可以将 inclusion
函数替换为 Validators.inclusion/1
。在这种情况下,您需要从 Github 安装 Skooma,因为它尚未在今天(2022 年 1 月 31 日)发表演讲。
我的任务是使用 Skooma 库实现输入验证器 https://github.com/bobfp/skooma#validators
一般概念很清楚,但对于某些输入,我有一个“合法”单词列表,而且我对如何针对这种情况实施验证一无所知。 因此我来这里的原因,我想问一下您是否知道使用该库的任何示例/项目?我用谷歌搜索但没有找到任何东西。 如果您有任何其他建议,请告诉我! 这是示例:
我的架构:
schema = %{
:titel => :string,
:category => :string,
:high_level_category => :string,
:description => :string,
:potential_impacts => :string,
:affected_assets => :string,
:rating => :string }
类别的合法输入:
category = %{core: 'Core network threats', access: 'Access network threats', multi: 'Multi edge computing threats',
virtualisation: 'Virtualisation threats', phyiscal: 'Physical infrastructure threats', generic: 'Generic threats'}
我也用普通列表试过,比如
category = ['Core network threats', 'Access network threats', 'Multi edge computing threats' .......]
但我无法理解如何检查类别列表中是否存在 :category。
你需要一个custom validator函数,下面是一个例子:
alias Skooma.Validators
@valid_categories [
"Access network threats",
"Core network threats",
"Generic threats",
"Multi edge computing threats",
"Physical infrastructure threats",
"Virtualisation threats"
]
def valid?(data), do: Skooma.valid?(data, schema())
defp schema,
do: %{
:category => [:string, inclusion(@valid_categories)],
... # rest of the schema
}
# copied from:
# https://github.com/bobfp/skooma/blob/master/lib/validators.ex#L38-L48
defp inclusion(values_list) when is_list(values_list) do
fn data ->
bool = data in values_list
if bool do
:ok
else
{:error, "Value is not included in the options: #{inspect(values_list)}"}
end
end
end
您可以将 inclusion
函数替换为 Validators.inclusion/1
。在这种情况下,您需要从 Github 安装 Skooma,因为它尚未在今天(2022 年 1 月 31 日)发表演讲。