@@ -41,8 +41,9 @@ defmodule Algolia do
41
41
42
42
defp host ( :read , 0 ) , do: "#{ application_id ( ) } -dsn.algolia.net"
43
43
defp host ( :write , 0 ) , do: "#{ application_id ( ) } .algolia.net"
44
+ defp host ( :insights , 0 ) , do: "insights.algolia.io"
44
45
45
- defp host ( _read_or_write , curr_retry ) when curr_retry <= 3 ,
46
+ defp host ( _subdomain_hint , curr_retry ) when curr_retry <= 3 ,
46
47
do: "#{ application_id ( ) } -#{ curr_retry } .algolianet.com"
47
48
48
49
@ doc """
@@ -146,14 +147,14 @@ defmodule Algolia do
146
147
send_request ( :read , % { method: :post , path: path , body: body } )
147
148
end
148
149
149
- defp send_request ( read_or_write , request , curr_retry \\ 0 )
150
+ defp send_request ( subdomain_hint , request , curr_retry \\ 0 )
150
151
151
- defp send_request ( _read_or_write , _request , 4 ) do
152
+ defp send_request ( _subdomain_hint , _request , 4 ) do
152
153
{ :error , "Unable to connect to Algolia" }
153
154
end
154
155
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 ] )
157
158
headers = request_headers ( request [ :options ] || [ ] )
158
159
body = request [ :body ] || ""
159
160
@@ -173,13 +174,13 @@ defmodule Algolia do
173
174
{ :error , code , response }
174
175
175
176
_ ->
176
- send_request ( read_or_write , request , curr_retry + 1 )
177
+ send_request ( subdomain_hint , request , curr_retry + 1 )
177
178
end
178
179
end
179
180
180
- defp request_url ( read_or_write , retry , path ) do
181
+ defp request_url ( subdomain_hint , retry , path ) do
181
182
"https://"
182
- |> Path . join ( host ( read_or_write , retry ) )
183
+ |> Path . join ( host ( subdomain_hint , retry ) )
183
184
|> Path . join ( path )
184
185
end
185
186
@@ -574,35 +575,12 @@ defmodule Algolia do
574
575
Corresponds to https://www.algolia.com/doc/rest-api/insights/#push-events
575
576
`events` should be a List of Maps, each Map having the fields described in the link above
576
577
"""
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 } )
603
580
604
- _ ->
605
- push_events ( events , curr_retry + 1 )
606
- end
581
+ send_request (
582
+ :insights ,
583
+ % { method: :post , path: "1/events" , body: body }
584
+ )
607
585
end
608
586
end
0 commit comments