From 0a6fb010084ad75e747044f4b6d52a37fd97a92f Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 20 Jan 2021 14:09:02 +0100 Subject: [PATCH] =?UTF-8?q?MetadataMapping:=20restructuration=20l=C3=A9g?= =?UTF-8?q?=C3=A8re=20du=20code=20pour=20lisibilit=C3=A9=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/email_action/metadata_mapping.rb | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/app/services/email_action/metadata_mapping.rb b/app/services/email_action/metadata_mapping.rb index c3b3d50..424cea5 100644 --- a/app/services/email_action/metadata_mapping.rb +++ b/app/services/email_action/metadata_mapping.rb @@ -23,8 +23,11 @@ module EmailAction binding.pry end + private + def metadata_inputs(email) inputs = [] + # add mail addresses and hostnames from headers inputs << ["To", "Delivered-To", "X-Original-To", "From", "Subject"].filter_map { |header_name| email.header_values(header_name) @@ -33,31 +36,43 @@ module EmailAction }.flatten.filter_map() { |value| clean_subdomains(value) }.flatten + # add other values from headers - inputs << email.header_values("X-Client-Id") + inputs << ["X-Client-Id", "X-Entity-Id"].filter_map { |header_name| + email.header_values(header_name) + }.flatten.uniq inputs.flatten.uniq end def keep_email_and_hostnames(string) - pattern = /\b((?:([-a-zA-Z0-9\._]+)@)?((?:[-a-zA-Z0-9\._]*)(?:\.[a-z]{2,})))\b/ - results = string.scan(pattern) + results = string.scan(email_and_hostnames_pattern) + if results.present? results.map(&:first) end end def clean_subdomains(value) - [ - [/[-a-zA-Z0-9\._]+@([-a-zA-Z0-9]+).evolix.net/, '@\1'] - ].filter_map { |item| - if value.match?(item[0]) - value.gsub!(item[0], item[1]) + clean_subdomains_patterns.filter_map { |pattern| + if value.match?(pattern[:search]) + value.gsub!(pattern[:search], pattern[:replace]) else value end } end + def email_and_hostnames_pattern + /\b((?:([-a-zA-Z0-9\._]+)@)?((?:[-a-zA-Z0-9\._]*)(?:\.[a-z]{2,})))\b/ + end + + def clean_subdomains_patterns + [{ + search: /[-a-zA-Z0-9\._]+@([-a-zA-Z0-9]+).evolix.net/, + replace: '@\1' + }] + end + end end