Skip to content

Commit 9a12520

Browse files
committed
make push_events use send_request
1 parent 7445a42 commit 9a12520

File tree

1 file changed

+15
-37
lines changed

1 file changed

+15
-37
lines changed

lib/algolia.ex

Lines changed: 15 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ defmodule Algolia do
4141

4242
defp host(:read, 0), do: "#{application_id()}-dsn.algolia.net"
4343
defp host(:write, 0), do: "#{application_id()}.algolia.net"
44+
defp host(:insights, 0), do: "insights.algolia.io"
4445

45-
defp host(_read_or_write, curr_retry) when curr_retry <= 3,
46+
defp host(_subdomain_hint, curr_retry) when curr_retry <= 3,
4647
do: "#{application_id()}-#{curr_retry}.algolianet.com"
4748

4849
@doc """
@@ -146,14 +147,14 @@ defmodule Algolia do
146147
send_request(:read, %{method: :post, path: path, body: body})
147148
end
148149

149-
defp send_request(read_or_write, request, curr_retry \\ 0)
150+
defp send_request(subdomain_hint, request, curr_retry \\ 0)
150151

151-
defp send_request(_read_or_write, _request, 4) do
152+
defp send_request(_subdomain_hint, _request, 4) do
152153
{:error, "Unable to connect to Algolia"}
153154
end
154155

155-
defp send_request(read_or_write, request, curr_retry) do
156-
url = request_url(read_or_write, curr_retry, request[:path])
156+
defp send_request(subdomain_hint, request, curr_retry) do
157+
url = request_url(subdomain_hint, curr_retry, request[:path])
157158
headers = request_headers(request[:options] || [])
158159
body = request[:body] || ""
159160

@@ -173,13 +174,13 @@ defmodule Algolia do
173174
{:error, code, response}
174175

175176
_ ->
176-
send_request(read_or_write, request, curr_retry + 1)
177+
send_request(subdomain_hint, request, curr_retry + 1)
177178
end
178179
end
179180

180-
defp request_url(read_or_write, retry, path) do
181+
defp request_url(subdomain_hint, retry, path) do
181182
"https://"
182-
|> Path.join(host(read_or_write, retry))
183+
|> Path.join(host(subdomain_hint, retry))
183184
|> Path.join(path)
184185
end
185186

@@ -574,35 +575,12 @@ defmodule Algolia do
574575
Corresponds to https://www.algolia.com/doc/rest-api/insights/#push-events
575576
`events` should be a List of Maps, each Map having the fields described in the link above
576577
"""
577-
def push_events(events), do: push_events(events, 0)
578-
579-
defp push_events(_events, 4) do
580-
{:error, "Unable to connect to Algolia Insights"}
581-
end
582-
583-
defp push_events(events, curr_retry) do
584-
:post
585-
|> :hackney.request(
586-
"https://insights.algolia.io/1/events",
587-
request_headers([]),
588-
Jason.encode!(%{"events" => events}),
589-
[
590-
:with_body,
591-
path_encode_fun: &URI.encode/1,
592-
connect_timeout: 3_000 * (curr_retry + 1),
593-
recv_timeout: 30_000 * (curr_retry + 1),
594-
ssl_options: [{:versions, [:"tlsv1.2"]}]
595-
]
596-
)
597-
|> case do
598-
{:ok, code, _headers, response} when code in 200..299 ->
599-
{:ok, Jason.decode!(response)}
600-
601-
{:ok, code, _, response} ->
602-
{:error, code, response}
578+
def push_events(events) do
579+
body = Jason.encode!(%{"events" => events})
603580

604-
_ ->
605-
push_events(events, curr_retry + 1)
606-
end
581+
send_request(
582+
:insights,
583+
%{method: :post, path: "1/events", body: body}
584+
)
607585
end
608586
end

0 commit comments

Comments
 (0)