Packages

Elixir implementation of Algolia Search API

Current section

Files

Jump to
algolia_ex lib algolia middleware base_url.ex
Raw

lib/algolia/middleware/base_url.ex

defmodule Algolia.Middleware.BaseUrl do
@behaviour Tesla.Middleware
@impl Tesla.Middleware
def call(env, next, opts) do
hint = env.opts[:subdomain_hint]
curr_retry = env.opts[:curr_retry]
application_id = Keyword.fetch!(opts, :application_id)
host =
case {hint, curr_retry} do
{:read, 0} ->
"#{application_id}-dsn.algolia.net"
{:write, 0} ->
"#{application_id}.algolia.net"
{:insights, _} ->
"insights.algolia.io"
_ ->
"#{application_id}-#{curr_retry}.algolianet.com"
end
Tesla.run(%{env | url: "https://#{host}#{env.url}"}, next)
end
end