24 lines
547 B
Elixir
24 lines
547 B
Elixir
defmodule Frenzy.Pipeline.FilterStage do
|
|
require Logger
|
|
alias Frenzy.Pipeline.{Stage, FilterEngine}
|
|
@behaviour Stage
|
|
|
|
@impl Stage
|
|
def apply(filter, item_params) do
|
|
if FilterEngine.test(filter, item_params) do
|
|
{:ok, item_params}
|
|
else
|
|
Logger.debug("Skipping item #{item_params.url} due to feed filter")
|
|
:tombstone
|
|
end
|
|
end
|
|
|
|
@impl Stage
|
|
def validate_opts(opts) do
|
|
FilterEngine.validate_filter(opts)
|
|
end
|
|
|
|
@impl Stage
|
|
def default_opts(), do: %{"mode" => "reject", "score" => 1, "rules" => []}
|
|
end
|