public void ProcessConversations_PathFileOk_DoesNotThrowAndMatchesAllAssets()
 {
     #region Mocks
     MockRepository mockRepository = new MockRepository(MockBehavior.Default)
     {
         DefaultValue = DefaultValue.Empty
     };
     Mock <IFileManager> fileManagerMock = mockRepository.Create <IFileManager>();
     Mock <IUnscoredEmptyModelsService> unscoredEmptyModelsServiceMock = mockRepository.Create <IUnscoredEmptyModelsService>();
     Mock <IScoreCalculatorService>     scoreCalculatorServiceMock     = mockRepository.Create <IScoreCalculatorService>();
     var linesMock = GetLinesMock();
     var conversationDataModelsMock = GetConversationDataModelsMock();
     #endregion
     #region setup
     fileManagerMock.Setup(fm => fm.ReadLines(It.IsAny <string>())).Returns(linesMock);
     unscoredEmptyModelsServiceMock.Setup(ue => ue.GetNotScoredConversationModels(It.IsAny <string[]>(), It.IsAny <string>())).Returns(conversationDataModelsMock);
     scoreCalculatorServiceMock.Setup(sc => sc.RateConversations(It.IsAny <List <ConversationDataModel> >(), It.IsAny <string>(), It.IsAny <List <string> >(), It.IsAny <string>())).Returns(conversationDataModelsMock);
     var sut = new ConversationProcessor(fileManagerMock.Object, unscoredEmptyModelsServiceMock.Object, scoreCalculatorServiceMock.Object);
     #endregion
     #region Asserts
     NUnit.Framework.Assert.DoesNotThrow(() => sut.ProcessConversations());
     fileManagerMock.Verify(fm => fm.ReadLines(It.IsAny <string>()), Times.Once);
     unscoredEmptyModelsServiceMock.Verify(ue => ue.GetNotScoredConversationModels(It.IsAny <string[]>(), It.IsAny <string>()), Times.Once);
     scoreCalculatorServiceMock.Verify(sc => sc.RateConversations(It.IsAny <List <ConversationDataModel> >(), It.IsAny <string>(), It.IsAny <List <string> >(), It.IsAny <string>()), Times.Once);
     #endregion
 }
        public void ExportConversation(ConversationExporterConfiguration configuration)
        {
            Conversation = ConversationProcessor.ReadConversation(configuration.InputFilePath);

            if (configuration.FilterType == "IdFiltering")
            {
                Conversation = ConversationProcessor.FilterByID(Conversation);
            }
            else if (configuration.FilterType == "KeywordFiltering")
            {
                Conversation = ConversationProcessor.FilterByKeyword(Conversation);
            }

            Conversation = ConversationProcessor.CheckBlackListWithPath("blacklist.txt", Conversation);


            Conversation = ConversationProcessor.HidePhoneNumbers(Conversation);
            Conversation = ConversationProcessor.HideCreditCardNumbers(Conversation);


            ConversationWriter writer = ConversationProcessor.WriteConversation(Conversation, configuration.OutputFilePath);

            if (writer.Successful)
            {
                Console.WriteLine($"Conversation exported from {configuration.InputFilePath} to {configuration.OutputFilePath}");
            }
        }
Esempio n. 3
0
        public void TestGroupConversationsInWindow()
        {
            var sw = new Stopwatch();

            sw.Start();
            var table = OpenTable();

            Console.WriteLine($"--- LOADED --- [{sw.Elapsed}]");
            var firstPacketTime = DateTimeOffset.FromUnixTimeSeconds(table.FrameKeys.First().Epoch);
            var lastPacketTime  = DateTimeOffset.FromUnixTimeSeconds(table.FrameKeys.Last().Epoch);
            // create 10 windows
            var windowSpan = (lastPacketTime - firstPacketTime) / 10;
            var windows    = table.Conversations.GroupByWindow(firstPacketTime.DateTime, windowSpan);
            var processor  = ConversationProcessor.FromFunction((key, frames) => $"{key} : {frames.Count()}");

            foreach (var win in windows)
            {
                Console.WriteLine($"{win.Key} - {win.Key + windowSpan}:");
                var conversations = table.ProcessConversations(win, processor.ApplyToWindow(win.Key, windowSpan));
                foreach (var c in conversations)
                {
                    Console.WriteLine($"  {c}");
                }
            }
        }
Esempio n. 4
0
        private static int RunConversation(ConversationOptions options)
        {
            _log = LogFactory.Build(options.Verbose);
            _log.Info("Processing Conversations");

            // Validate options
            DateTime start, end;

            try
            {
                start = options.StartTime ?? DateTime.UtcNow.AddMinutes(-15);
                end   = options.EndTime ?? DateTime.UtcNow.AddMinutes(1);
            }
            catch (Exception e)
            {
                _log.Error(e.Message);
                return(1);
            }

            // Initialise connection
            var client = new FacebookClient(options.PageToken)
            {
                Version = "v2.10"
            };
            FacebookPageDetails page;

            try
            {
                page = client.Get <FacebookPageDetails>("me");
                _log.Info($"Connected: {page.id} ({page.name})");
            }
            catch (FacebookOAuthException fbex)
            {
                _log.Error($"Cannot connect: {fbex.Message}");
                return(1);
            }
            catch (Exception e)
            {
                _log.Error($"Something went wrong! {e.Message}");
                return(1);
            }

            // Process
            try
            {
                var processor = new ConversationProcessor(_log, client, page, start, end, options);
                processor.Process();
            }
            catch (Exception e)
            {
                _log.Error("Error during processing", e);
                return(1);
            }

            return(0);
        }