Add rate limiting to Wikipedia and BraveSearch APIs

Closes #133
This commit is contained in:
Claudio Ortolina
2026-03-25 11:38:17 +00:00
parent 766a1dd7ed
commit 0295e58e57
7 changed files with 33 additions and 10 deletions
+1
View File
@@ -57,6 +57,7 @@ defmodule BraveSearch.API do
headers: %{"x-subscription-token" => config.api_key}
)
|> Req.Request.merge_options(config.req_options)
|> Req.RateLimiter.attach(name: :brave_search, cooldown: config.api_cooldown)
|> Req.Request.append_request_steps(log_attempt: &log_attempt/1)
|> Req.Request.append_response_steps(log_error: &log_error/1)
end
+9 -2
View File
@@ -2,13 +2,15 @@ defmodule BraveSearch.Config do
@type t :: %__MODULE__{
api_key: String.t(),
user_agent: String.t(),
req_options: Keyword.t()
req_options: Keyword.t(),
api_cooldown: non_neg_integer()
}
@enforce_keys [:api_key]
defstruct api_key: "",
user_agent: "change me",
req_options: []
req_options: [],
api_cooldown: 1000
@schema NimbleOptions.new!(
api_key: [
@@ -24,6 +26,11 @@ defmodule BraveSearch.Config do
type: :keyword_list,
required: false,
default: []
],
api_cooldown: [
type: :integer,
required: false,
default: 1000
]
)