2019-07-09 02:41:18 +00:00
|
|
|
defmodule Frenzy.Pipeline.FilterStage do
|
|
|
|
require Logger
|
2019-11-02 02:28:25 +00:00
|
|
|
alias Frenzy.Pipeline.{Stage, FilterEngine}
|
2019-07-09 02:41:18 +00:00
|
|
|
@behaviour Stage
|
|
|
|
|
|
|
|
@impl Stage
|
2019-11-02 02:28:25 +00:00
|
|
|
def apply(filter, item_params) do
|
|
|
|
if FilterEngine.test(filter, item_params) do
|
|
|
|
{:ok, item_params}
|
2019-07-09 02:41:18 +00:00
|
|
|
else
|
2019-11-02 02:28:25 +00:00
|
|
|
Logger.debug("Skipping item #{item_params.url} due to feed filter")
|
|
|
|
:tombstone
|
2019-07-09 02:41:18 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-11-02 02:28:25 +00:00
|
|
|
@impl Stage
|
|
|
|
def validate_opts(opts) do
|
|
|
|
FilterEngine.validate_filter(opts)
|
2019-07-09 02:41:18 +00:00
|
|
|
end
|
2020-06-09 02:49:45 +00:00
|
|
|
|
|
|
|
@impl Stage
|
|
|
|
def default_opts(), do: %{"mode" => "reject", "score" => 1, "rules" => []}
|
2019-07-09 02:41:18 +00:00
|
|
|
end
|