Skip to content

Commit f06b1ac

Browse files
committed
send nil if no stacktrace
1 parent 2fc5db5 commit f06b1ac

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

lib/sentry/client.ex

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ defmodule Sentry.Client do
7171
end
7272

7373
defp encode_and_send(event, result) do
74-
case Poison.encode(event) do
74+
render_event(event)
75+
|> Poison.encode()
76+
|> case do
7577
{:ok, body} ->
7678
do_send_event(event, body, result)
7779
{:error, error} ->
@@ -216,6 +218,35 @@ defmodule Sentry.Client do
216218
@hackney_pool_name
217219
end
218220

221+
def render_event(%Event{} = event) do
222+
map = %{
223+
event_id: event.event_id,
224+
culprit: event.culprit,
225+
timestamp: event.timestamp,
226+
message: event.message,
227+
tags: event.tags,
228+
level: event.level,
229+
platform: event.platform,
230+
server_name: event.server_name,
231+
environment: event.environment,
232+
exception: event.exception,
233+
release: event.release,
234+
request: event.request,
235+
extra: event.extra,
236+
user: event.user,
237+
breadcrumbs: event.breadcrumbs,
238+
fingerprint: event.fingerprint,
239+
modules: event.modules,
240+
}
241+
242+
case event.stacktrace do
243+
%{frames: [_ | _]} ->
244+
Map.put(map, :stacktrace, event.stacktrace)
245+
_ ->
246+
map
247+
end
248+
end
249+
219250
defp log_api_error(body) do
220251
Logger.warn(fn ->
221252
["Failed to send Sentry event.", ?\n, body]

test/client_test.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ defmodule Sentry.ClientTest do
6363
request_map = Poison.decode!(body)
6464
assert request_map["extra"] == %{"key" => "value"}
6565
assert request_map["user"]["id"] == 1
66+
assert is_nil(request_map["stacktrace"]["frames"])
6667
Plug.Conn.resp(conn, 200, ~s<{"id": "340"}>)
6768
end
6869

test/support/test_client.exs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ defmodule Sentry.TestClient do
55
def send_event(%Sentry.Event{} = event, _opts \\ []) do
66
{endpoint, _public_key, _secret_key} = Sentry.Client.get_dsn!
77
event = Sentry.Client.maybe_call_before_send_event(event)
8-
case Poison.encode(event) do
8+
Sentry.Client.render_event(event)
9+
|> Poison.encode()
10+
|> case do
911
{:ok, body} ->
1012
Sentry.Client.request(:post, endpoint, [], body)
1113
{:error, error} ->

0 commit comments

Comments
 (0)