@@ -98,9 +98,48 @@ defmodule AstarteE2E.DataTrigger do
9898 % { "value" => value } = event
9999
100100 case pop_trigger ( state . messages , trigger , value ) do
101- { :ok , [ ] } -> { :stop , :normal , : ok, % { state | messages: [ ] } }
101+ { :ok , [ ] } -> { :reply , :ok , % { state | messages: [ ] } , { :continue , :delete_triggers } }
102102 { :ok , new_messages } -> { :reply , :ok , % { state | messages: new_messages } }
103- { :error , :not_found } -> { :reply , { :error , :not_founnd } , state }
103+ { :error , :not_found } -> { :reply , { :error , :not_found } , state }
104+ end
105+ end
106+
107+ @ impl GenServer
108+ def handle_continue ( :delete_triggers , state ) do
109+ base_url = Config . realm_management_url! ( )
110+ realm = Config . realm! ( )
111+ astarte_jwt = Config . jwt! ( ) || raise "Missing JWT"
112+
113+ headers = [
114+ { "Authorization" , "Bearer #{ astarte_jwt } " }
115+ ]
116+
117+ triggers = [ @ properties_trigger , @ datastream_trigger ]
118+
119+ result =
120+ Enum . reduce_while ( triggers , :ok , fn trigger , :ok ->
121+ url = Path . join ( [ base_url , "v1" , realm , "triggers" , trigger ] )
122+
123+ case HTTPoison . delete ( url , headers ) do
124+ { :ok , % HTTPoison.Response { status_code: code } } when code in [ 200 , 202 , 204 ] ->
125+ { :cont , :ok }
126+
127+ { :ok , % HTTPoison.Response { status_code: code , body: body } } ->
128+ { :halt , { :error , % { status: code , body: body } } }
129+
130+ { :error , % HTTPoison.Error { } = error } ->
131+ { :halt , { :error , error } }
132+ end
133+ end )
134+
135+ case result do
136+ :ok ->
137+ Logger . info ( "Http Data Triggers deleted successfully" )
138+ { :stop , :normal , state }
139+
140+ { :error , error } ->
141+ Logger . error ( "Failed to delete triggers: #{ inspect ( error ) } " )
142+ { :stop , error , state }
104143 end
105144 end
106145
0 commit comments