Esempio n. 1
0
 public void Handle(TlsEntityState state, Common.Messaging.Abstractions.Message message, List <string> domains)
 {
     foreach (IChangeNotifier changeNotifier in _notifiers)
     {
         changeNotifier.Handle(state, message, domains);
     }
 }
 public void Handle(MxEntityState state, Common.Messaging.Abstractions.Message message)
 {
     foreach (IChangeNotifier changeNotifier in _notifiers)
     {
         changeNotifier.Handle(state, message);
     }
 }
        public void Handle(DkimEntityState state, Common.Messaging.Abstractions.Message message)
        {
            if (message is DkimRecordEvaluationResult evaluationResult)
            {
                List <DkimSelector> newRecordsIgnoringEmptyResults = evaluationResult.ToDkimSelectors().Where(x => x.Records != null).ToList();

                List <SelectorMessage> currentSelectorMessages = CreateFlattenedSelectorMessages(state.Selectors);
                List <SelectorMessage> newSelectorMessages     = CreateFlattenedSelectorMessages(newRecordsIgnoringEmptyResults);

                List <SelectorMessages> addedMessages = CreateExclusiveSelectorMessages(newSelectorMessages, currentSelectorMessages);
                if (addedMessages.Any())
                {
                    DkimAdvisoryAdded dkimAdvisoryAdded = new DkimAdvisoryAdded(state.Id, addedMessages);
                    _dispatcher.Dispatch(dkimAdvisoryAdded, _dkimEntityConfig.SnsTopicArn);
                }

                List <SelectorMessages> removedMessages = CreateExclusiveSelectorMessages(currentSelectorMessages, newSelectorMessages);
                if (removedMessages.Any())
                {
                    DkimAdvisoryRemoved dkimAdvisoryRemoved = new DkimAdvisoryRemoved(state.Id, removedMessages);
                    _dispatcher.Dispatch(dkimAdvisoryRemoved, _dkimEntityConfig.SnsTopicArn);
                }
            }
        }
        public void Handle(DkimEntityState state, Common.Messaging.Abstractions.Message message)
        {
            if (message is DkimRecordsPolled polled)
            {
                List <SelectorRecord> currentSelectorRecords = state.Selectors
                                                               .SelectMany(x => x.Records, (y, z) => new SelectorRecord(y.Selector, z.DnsRecord.Record)).ToList();

                List <SelectorRecord> newSelectorRecords = polled.DkimSelectorRecords
                                                           .Where(x => x.Records != null)
                                                           .SelectMany(x => x.Records, (y, z) => new SelectorRecord(y.Selector, z.Record)).ToList();

                List <SelectorRecord> addedRecords = newSelectorRecords.Except(currentSelectorRecords, _selectorRecordEqualityComparer).ToList();
                if (addedRecords.Any())
                {
                    List <SelectorRecords> selectorRecords = addedRecords
                                                             .GroupBy(x => x.Selector, y => y.Record)
                                                             .Select(x => new SelectorRecords(x.Key, x.ToList()))
                                                             .ToList();

                    DkimRecordAdded dkimDnsRecordAdded = new DkimRecordAdded(state.Id, selectorRecords);
                    _dispatcher.Dispatch(dkimDnsRecordAdded, _dkimEntityConfig.SnsTopicArn);
                }

                List <SelectorRecord> removedRecords = currentSelectorRecords.Except(newSelectorRecords, _selectorRecordEqualityComparer).ToList();
                if (removedRecords.Any())
                {
                    List <SelectorRecords> selectorRecords = removedRecords
                                                             .GroupBy(x => x.Selector, y => y.Record)
                                                             .Select(x => new SelectorRecords(x.Key, x.ToList()))
                                                             .ToList();

                    DkimRecordRemoved dkimDnsRecordRemoved = new DkimRecordRemoved(state.Id, selectorRecords);
                    _dispatcher.Dispatch(dkimDnsRecordRemoved, _dkimEntityConfig.SnsTopicArn);
                }
            }
        }