diff --git a/bin/summarize-user-events b/bin/summarize-user-events index 9d2b72dfc66..056e330f6dc 100755 --- a/bin/summarize-user-events +++ b/bin/summarize-user-events @@ -45,6 +45,7 @@ class SummarizeUserEvents def matchers @matchers ||= [ EventSummarizer::ExampleMatcher.new, + EventSummarizer::AccountDeletionMatcher.new, EventSummarizer::IdvMatcher.new, ] end diff --git a/lib/event_summarizer/account_deletion_matcher.rb b/lib/event_summarizer/account_deletion_matcher.rb new file mode 100644 index 00000000000..ec21f689cce --- /dev/null +++ b/lib/event_summarizer/account_deletion_matcher.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +module EventSummarizer + class AccountDeletionMatcher + ACCOUNT_DELETION_STARTED_EVENT = 'Account Reset: request' + ACCOUNT_DELETION_SUBMITTED_EVENT = 'Account Reset: delete' + ACCOUNT_DELETION_CANCELED_EVENT = 'Account Reset: cancel' + + EVENT_PROPERTIES = ['@message', 'properties', 'event_properties'].freeze + + attr_accessor :account_deletion_events, :event_summaries + + def initialize + @account_deletion_events = Array.new + @event_summaries = Array.new + account_deletion_events + end + + def handle_cloudwatch_event(event) + case event['name'] + when ACCOUNT_DELETION_STARTED_EVENT + process_account_reset_request(event) + when ACCOUNT_DELETION_SUBMITTED_EVENT + process_account_reset_delete(event) + when ACCOUNT_DELETION_CANCELED_EVENT + process_account_reset_cancel(event) + end + end + + def finish + event_summaries + end + + private + + def process_account_reset_request(event) + event_message = { + title: 'Account deletion Request', + attributes: [ + { type: :account_deletion_request, + description: "On #{event["@timestamp"]} user initiated account deletion" }, + ], + } + event_summaries.push(event_message) + end + + def process_account_reset_cancel(event) + event_message = { + title: 'Account deletion cancelled', + attributes: [ + { type: :account_deletion_cancelled, + description: "On #{event["@timestamp"]} user canceled account deletion" }, + ], + } + event_summaries.push(event_message) + end + + def process_account_reset_delete(event) + message = event['@message'] + age = message['properties']['event_properties']['account_age_in_days'] + date = event['@timestamp'] + event_message = { + title: 'Account deleted', + attributes: [ + { + type: :account_deleted, + description: "On #{date} user deleted their account which was #{age} days old", + }, + ], + } + event_summaries.push(event_message) + end + end +end