-
-
Notifications
You must be signed in to change notification settings - Fork 206
Switch HTTP Client from Hackney to Finch #897
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
616f07e
9a8f9fd
f62aecb
e94eb25
01c69bb
c51cef6
bc3a249
c8b460c
379a0d3
000d494
96f0552
c6a9ce7
8868381
cad9ea3
84e9581
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,54 @@ | ||||||||
defmodule Sentry.FinchClient do | ||||||||
@behaviour Sentry.HTTPClient | ||||||||
|
||||||||
@moduledoc """ | ||||||||
The built-in HTTP client. | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shows up correctly in the module doc summary with ExDoc:
Suggested change
|
||||||||
|
||||||||
This client implements the `Sentry.HTTPClient` behaviour. | ||||||||
It's based on the [Finch](https://github.com/sneako/finch) Elixir HTTP client, | ||||||||
which is an *optional dependency* of this library. If you wish to use another | ||||||||
HTTP client, you'll have to implement your own `Sentry.HTTPClient`. See the | ||||||||
documentation for `Sentry.HTTPClient` for more information. | ||||||||
Finch is built on top of [NimblePool](https://github.com/dashbitco/nimble_pool). If you need to set other pool configuration options, | ||||||||
see ["Pool Configuration Options"](https://hexdocs.pm/finch/Finch.html#start_link/1-pool-configuration-options) | ||||||||
in the Finch documentation for details on the possible map values. | ||||||||
[finch configuration options](https://hexdocs.pm/finch/Finch.html#start_link/1-pool-configuration-options) | ||||||||
""" | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit:
Suggested change
|
||||||||
@moduledoc since: "10.11.0" | ||||||||
|
||||||||
@impl true | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit:
Suggested change
|
||||||||
def child_spec do | ||||||||
if Code.ensure_loaded?(Finch) do | ||||||||
case Application.ensure_all_started(:finch) do | ||||||||
{:ok, _apps} -> :ok | ||||||||
{:error, reason} -> raise "failed to start the :finch application: #{inspect(reason)}" | ||||||||
end | ||||||||
|
||||||||
Finch.child_spec( | ||||||||
name: __MODULE__, | ||||||||
pools: %{ | ||||||||
:default => Sentry.Config.finch_pool_opts() | ||||||||
} | ||||||||
) | ||||||||
else | ||||||||
raise """ | ||||||||
cannot start the :sentry application because the HTTP client is set to \ | ||||||||
Sentry.FinchClient (which is the default), but the :finch library is not loaded. \ | ||||||||
Add :finch to your dependencies to fix this. | ||||||||
""" | ||||||||
end | ||||||||
end | ||||||||
|
||||||||
@impl true | ||||||||
def post(url, headers, body) do | ||||||||
request = Finch.build(:post, url, headers, body) | ||||||||
|
||||||||
case Finch.request(request, __MODULE__, Sentry.Config.finch_request_opts()) do | ||||||||
{:ok, %Finch.Response{status: status, headers: headers, body: body}} -> | ||||||||
{:ok, status, headers, body} | ||||||||
|
||||||||
{:error, error} -> | ||||||||
{:error, error} | ||||||||
end | ||||||||
end | ||||||||
end |
Uh oh!
There was an error while loading. Please reload this page.