-
-
Notifications
You must be signed in to change notification settings - Fork 207
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
Changes from all commits
fa4077b
0c92496
d897cda
2e3775d
2fb501e
4b9a538
c9b66b5
36d0a65
7f01d00
4418c3f
cfc05ec
0053437
90e06e1
0fab98e
f01efde
0c7eaeb
777eefa
f6de006
bd99d29
6b64e6d
bd266bd
2839cdd
8518a17
5e0fb4e
3c97e4e
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. | ||||||||
|
Collaborator
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) | ||||||||
| """ | ||||||||
|
Collaborator
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 | ||||||||
|
Collaborator
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, %{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.