1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.Plugs.RateLimiter.LimiterSupervisor do
10 def start_link(init_arg) do
11 DynamicSupervisor.start_link(__MODULE__, init_arg, name: __MODULE__)
14 def add_or_return_limiter(limiter_name, expiration) do
16 DynamicSupervisor.start_child(
19 id: String.to_atom("rl_#{limiter_name}"),
28 interval: check_interval(expiration),
37 {:ok, _pid} = result -> result
38 {:error, {:already_started, pid}} -> {:ok, pid}
44 def init(_init_arg) do
45 DynamicSupervisor.init(strategy: :one_for_one)
48 defp check_interval(exp) do