From ddb721be4d8c89873b6fd05a117556f7f7296363 Mon Sep 17 00:00:00 2001 From: Mitchell Henke Date: Wed, 24 Aug 2016 11:49:18 -0500 Subject: [PATCH] trying --- lib/sentry/plug.ex | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/lib/sentry/plug.ex b/lib/sentry/plug.ex index 471c7c5d..8c8d2761 100644 --- a/lib/sentry/plug.ex +++ b/lib/sentry/plug.ex @@ -1,33 +1,16 @@ defmodule Sentry.Plug do defmacro __using__(_env) do quote do - def call(conn, opts) do - try do - super(conn, opts) - catch - kind, reason -> - Sentry.Plug.__catch__(conn, kind, reason) - end + use Plug.ErrorHandler + + defp handle_errors(conn, %{kind: kind, reason: reason, stack: stack}) do + request = Sentry.Plug.build_request_interface_data(conn) + exception = Exception.normalize(kind, reason, stack) + Sentry.capture_exception(exception, [stacktrace: stack, request: request]) end end end - def __catch__(_conn, :error, %Plug.Conn.WrapperError{} = wrapper) do - %{conn: conn, kind: kind, reason: reason, stack: stack} = wrapper - __catch__(conn, kind, reason, stack) - end - - def __catch__(conn, kind, reason) do - __catch__(conn, kind, reason, System.stacktrace()) - end - - def __catch__(conn, kind, reason, stack) do - request = Sentry.Plug.build_request_interface_data(conn) - exception = Exception.normalize(kind, reason, stack) - Sentry.capture_exception(exception, [stacktrace: stack, request: request]) - :erlang.raise(kind, reason, stack) - end - def build_request_interface_data(%Plug.Conn{} = conn) do conn = conn |> Plug.Conn.fetch_cookies