示例#1
0
        public void NoDirtyWords()
        {
            var censor = new Censor(new []{"helloworld"});
            var test = "The dirty word is not here";
            var correct = "The dirty word is not here";

            var result = censor.CensorText(test);

            Assert.IsFalse(censor.HasCensoredWord(test), "The text is not dirty, but returned true");
            Assert.AreEqual(result, correct, "All words were not censored correctly");
        }
示例#2
0
        public void DirtyWordsWithSpaces()
        {
            var test    = "The dirty word hello world and Hello World";
            var censor  = new Censor(new [] { "hello world" });
            var correct = "The dirty word *********** and ***********";

            var result = censor.CensorText(test);

            Assert.IsTrue(censor.HasCensoredWord(test), "The text is dirty, but returned false");
            Assert.AreEqual(result, correct, "All words were not filtered");
        }
示例#3
0
        public void NoDirtyWords()
        {
            var censor  = new Censor(new [] { "helloworld" });
            var test    = "The dirty word is not here";
            var correct = "The dirty word is not here";

            var result = censor.CensorText(test);

            Assert.IsFalse(censor.HasCensoredWord(test), "The text is not dirty, but returned true");
            Assert.AreEqual(result, correct, "All words were not censored correctly");
        }
示例#4
0
        public void DirtyWordsWithSpaces()
        {
            var test = "The dirty word hello world and Hello World";
            var censor = new Censor(new []{"hello world"});
            var correct = "The dirty word *********** and ***********";

            var result = censor.CensorText(test);

            Assert.IsTrue(censor.HasCensoredWord(test), "The text is dirty, but returned false");
            Assert.AreEqual(result, correct, "All words were not filtered");

        }
示例#5
0
        public async Task <string> Get()
        {
            try
            {
                var tweets    = new List <Tweet>();
                var tweetsObj = cache.GetValue("tweets");

                if (tweetsObj != null)
                {
                    tweets = tweetsObj as List <Tweet>;
                }

                if (tweets == null)
                {
                    tweets = new List <Tweet>();
                }

                if (tweets.Count > 0)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(tweets));
                }



                var auth = new ApplicationOnlyAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = ConfigurationManager.AppSettings["TwitterConsumerKey"],
                        ConsumerSecret = ConfigurationManager.AppSettings["TwitterConsumerSecret"],
                    },
                };
                await auth.AuthorizeAsync();

                var twitterContext = new TwitterContext(auth);

                var queryResponse = await
                                        (from tweet in twitterContext.Search
                                        where tweet.Type == SearchType.Search &&
                                        (tweet.Query == "#devspace") &&
                                        tweet.Count == 100
                                        select tweet).SingleOrDefaultAsync();

                if (queryResponse == null || queryResponse.Statuses == null)
                {
                    return(string.Empty);
                }

                tweets =
                    (from tweet in queryResponse.Statuses
                     where tweet.RetweetedStatus.StatusID == 0 && !tweet.PossiblySensitive && !censor.HasCensoredWord(tweet.Text)
                     select new Tweet
                {
                    TweetedImage = tweet.Entities?.MediaEntities.Count > 0 ? tweet.Entities?.MediaEntities?[0].MediaUrlHttps ?? string.Empty : string.Empty,
                    ScreenName = tweet.User?.ScreenNameResponse ?? string.Empty,
                    Text = tweet.Text,
                    Name = tweet.User.Name,
                    CreatedDate = tweet.CreatedAt,
                    Url = string.Format("https://twitter.com/{0}/status/{1}", tweet.User.ScreenNameResponse, tweet.StatusID),
                    Image = (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                             tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
                }).Take(15).ToList();


                cache.Add("tweets", tweets, DateTimeOffset.UtcNow.AddMinutes(1));

                return(Newtonsoft.Json.JsonConvert.SerializeObject(tweets));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }


            return(string.Empty);
        }
示例#6
0
        public async Task <string> Get()
        {
            try
            {
                var tweets    = new List <Tweet>();
                var tweetsObj = cache.GetValue("tweets");

                if (tweetsObj != null)
                {
                    tweets = tweetsObj as List <Tweet>;
                }

                if (tweets == null)
                {
                    tweets = new List <Tweet>();
                }

                if (tweets.Count > 0)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(tweets));
                }

                var auth = new ApplicationOnlyAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = ConfigurationManager.AppSettings["TwitterConsumerKey"],
                        ConsumerSecret = ConfigurationManager.AppSettings["TwitterConsumerSecret"],
                    },
                };
                await auth.AuthorizeAsync();

                var twitterContext = new TwitterContext(auth);

                // Find tweets by user
                //var user =
                //   await
                //   (from u in twitterContext.User
                //    where u.Type == UserType.Lookup
                //    && u.ScreenNameList == FeatureFlags.TwitterHandle.Replace("@", "")
                //    select u).ToListAsync();

                //if (user != null)
                //{
                //    tweets.AddRange(from s in user
                //                    where s.Status != null
                //                    select new Tweet
                //                    {
                //                        TweetedImage = s.Status.Entities?.MediaEntities.Count > 0 ? s.Status.Entities?.MediaEntities?[0].MediaUrlHttps ?? string.Empty : string.Empty,
                //                        ScreenName = s.ScreenNameResponse ?? string.Empty,
                //                        Text = s.Status.Text,
                //                        Name = s.Status.User.Name,
                //                        CreatedDate = s.Status.CreatedAt,
                //                        Url = string.Format("https://twitter.com/{0}/status/{1}", s.Status.User.ScreenNameResponse, s.Status.StatusID),
                //                        Image = (s.Status.RetweetedStatus != null && s.Status.RetweetedStatus.User != null ?
                //                         s.Status.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : s.Status.User.ProfileImageUrl.Replace("http://", "https://"))
                //                    });
                //}

                var queryResponse = await
                                        (from tweet in twitterContext.Search
                                        where tweet.Type == SearchType.Search &&
                                        (tweet.Query == $"{FeatureFlags.TwitterHashtag} OR {FeatureFlags.TwitterHandle}") &&
                                        tweet.Count == 100
                                        select tweet).SingleOrDefaultAsync();

                if (queryResponse?.Statuses != null)
                {
                    tweets.AddRange(
                        (from tweet in queryResponse.Statuses
                         where tweet.RetweetedStatus.StatusID == 0 && !tweet.PossiblySensitive && !censor.HasCensoredWord(tweet.Text)
                         select new Tweet
                    {
                        TweetedImage = tweet.Entities?.MediaEntities.Count > 0 ? tweet.Entities?.MediaEntities?[0].MediaUrlHttps ?? string.Empty : string.Empty,
                        ScreenName = tweet.User?.ScreenNameResponse ?? string.Empty,
                        Text = tweet.Text,
                        Name = tweet.User.Name,
                        CreatedDate = tweet.CreatedAt,
                        Url = string.Format("https://twitter.com/{0}/status/{1}", tweet.User.ScreenNameResponse, tweet.StatusID),
                        Image = (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                                 tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
                    }).Take(15).ToList());
                }

                tweets = tweets.OrderByDescending(t => t.CreatedDate).ToList();

                cache.Add("tweets", tweets, DateTimeOffset.UtcNow.AddMinutes(1));

                return(Newtonsoft.Json.JsonConvert.SerializeObject(tweets));
            }
            catch (Exception e)
            {
                //return e.ToString();
            }


            return(string.Empty);
        }
示例#7
0
        public static int Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var path          = args[0];
            var censoredWords = args[1];


            if (string.IsNullOrWhiteSpace(path))
            {
                Console.WriteLine($"Wrong path was send as argument.");
                return(-1);
            }

            if (string.IsNullOrWhiteSpace(censoredWords))
            {
                Console.WriteLine("No censored words were given");
                return(-1);
            }

            var directoryInfo = new DirectoryInfo(path);

            if (!directoryInfo.Exists)
            {
                return(-1);
            }

            var censorResults = new List <CensoredResult>();

            var censor = new Censor(censoredWords.Split(","));

            foreach (var file in directoryInfo.EnumerateFiles("*.md", SearchOption.AllDirectories))
            {
                try
                {
                    using (var stream = file.OpenText())
                    {
                        int    lineNumber = 0;
                        string line;
                        while ((line = stream.ReadLine()) != null)
                        {
                            lineNumber++;
                            if (censor.HasCensoredWord(line))
                            {
                                var censoredResult = new CensoredResult();
                                censoredResult.FileName     = file.FullName;
                                censoredResult.LineNumber   = lineNumber;
                                censoredResult.CensoredLine = censor.CensorText(line);
                                censorResults.Add(censoredResult);
                            }
                        }
                    }
                }
                catch
                {
                    continue;
                }
            }

            if (censorResults.Count > 0)
            {
                Console.WriteLine($"{censorResults.Count} Censors found");
                var jsonString = JsonConvert.SerializeObject(censorResults, Formatting.Indented);
                Console.WriteLine(jsonString);
                return(-1);
            }

            return(0);
        }
示例#8
0
        public async Task <IEnumerable <Tweet> > GetTweets()
        {
            var tweets = new List <Tweet>();

            var auth = new ApplicationOnlyAuthorizer()
            {
                CredentialStore = new InMemoryCredentialStore
                {
                    ConsumerKey    = Clients.Portable.Settings.Current.TwitterApiKey,
                    ConsumerSecret = Clients.Portable.Settings.Current.TwitterApiSecret
                },
            };
            await auth.AuthorizeAsync();

            var twitterContext = new TwitterContext(auth);

            var queryResponse = await
                                //twitterContext.Search.W
                                    (from tweet in twitterContext.Search
                                    where tweet.Type == SearchType.Search &&
                                    (tweet.Query == "%23CWITC") &&
                                    tweet.Count == 100
                                    select tweet).SingleOrDefaultAsync();

            if (queryResponse == null || queryResponse.Statuses == null)
            {
                return(tweets);
            }

            tweets =
                (from tweet in queryResponse.Statuses
                 where tweet.RetweetedStatus.StatusID == 0 && !tweet.PossiblySensitive && !censor.HasCensoredWord(tweet.Text)
                 select new Tweet
            {
                TweetedImage = tweet.Entities?.MediaEntities.Count > 0 ? tweet.Entities?.MediaEntities?[0].MediaUrlHttps ?? string.Empty : string.Empty,
                ScreenName = tweet.User?.ScreenNameResponse ?? string.Empty,
                Text = tweet.Text,
                Name = tweet.User.Name,
                CreatedDate = tweet.CreatedAt,
                Url = string.Format("https://twitter.com/{0}/status/{1}", tweet.User.ScreenNameResponse, tweet.StatusID),
                Image = (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                         tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
            }).Take(15).ToList();

            return(tweets);
        }