@@ -6,6 +6,7 @@ defmodule CodeCorps.StripeService.WebhookProcessing.WebhookProcessor do
66 alias CodeCorps.StripeEvent
77 alias CodeCorps.Repo
88 alias CodeCorps.StripeService.WebhookProcessing . { ConnectEventHandler , PlatformEventHandler }
9+ alias CodeCorps.StripeService.Adapters.StripeEventAdapter
910
1011 @ api Application . get_env ( :code_corps , :stripe )
1112
@@ -47,9 +48,9 @@ defmodule CodeCorps.StripeService.WebhookProcessing.WebhookProcessor do
4748 end
4849
4950 defp do_process ( id , user_id , handler , json ) do
50- with { :ok , % Stripe.Event { id: api_event_id , type: api_event_type , user_id: api_user_id } } <- retrieve_event_from_api ( id , user_id ) ,
51+ with { :ok , % Stripe.Event { } = event } <- retrieve_event_from_api ( id , user_id ) ,
5152 { :ok , endpoint } <- infer_endpoint_from_handler ( handler ) ,
52- { :ok , % StripeEvent { } = event } <- find_or_create_event ( api_event_id , api_event_type , api_user_id , endpoint )
53+ { :ok , % StripeEvent { } = event } <- find_or_create_event ( event , endpoint )
5354 do
5455 handle_event ( json , event , handler )
5556 else
@@ -64,11 +65,11 @@ defmodule CodeCorps.StripeService.WebhookProcessing.WebhookProcessor do
6465 end
6566 end
6667
67- defp find_or_create_event ( id_from_stripe , type , user_id , endpoint ) do
68- case find_event ( id_from_stripe ) do
68+ defp find_or_create_event ( % Stripe.Event { } = event , endpoint ) do
69+ case find_event ( event . id ) do
6970 % StripeEvent { status: "processing" } -> { :error , :already_processing }
7071 % StripeEvent { } = event -> { :ok , event }
71- nil -> create_event ( id_from_stripe , endpoint , type , user_id )
72+ nil -> create_event ( event , endpoint )
7273 end
7374 end
7475
@@ -86,13 +87,14 @@ defmodule CodeCorps.StripeService.WebhookProcessing.WebhookProcessor do
8687
8788 defp infer_endpoint_from_handler ( ConnectEventHandler ) , do: { :ok , "connect" }
8889 defp infer_endpoint_from_handler ( PlatformEventHandler ) , do: { :ok , "platform" }
89- defp infer_endpoint_from_handler ( _ ) , do: { :error , :invalid_handler }
9090
9191 defp retrieve_event_from_api ( id , nil ) , do: @ api . Event . retrieve ( id )
9292 defp retrieve_event_from_api ( id , user_id ) , do: @ api . Event . retrieve ( id , connect_account: user_id )
9393
94- defp create_event ( id_from_stripe , endpoint , type , user_id ) do
95- % StripeEvent { } |> StripeEvent . create_changeset ( % { endpoint: endpoint , id_from_stripe: id_from_stripe , type: type , user_id: user_id } ) |> Repo . insert
94+ defp create_event ( % Stripe.Event { } = event , endpoint ) do
95+ with { :ok , params } <- StripeEventAdapter . to_params ( event , % { "endpoint" => endpoint } ) do
96+ % StripeEvent { } |> StripeEvent . create_changeset ( params ) |> Repo . insert
97+ end
9698 end
9799
98100 defp set_errored ( % StripeEvent { } = event ) do
0 commit comments