Example #1
0
        public async Task InvokeAsyncInvalidShouldLogError()
        {
            var testOptions = new Mock <IOptions <TwitterOptions> >();

            testOptions.SetupGet(x => x.Value).Returns(_twitterOptions.Object);

            var adapter = new TwitterAdapter(testOptions.Object);

            var httpResponse = new Mock <HttpResponse>();

            httpResponse.SetupAllProperties();
            httpResponse.Object.Body = new MemoryStream();

            var request = new Mock <HttpRequest>();

            request.SetupAllProperties();
            request.Object.Method = HttpMethods.Get;
            request.Setup(req => req.Query.TryGetValue("crc_token", out _values)).Returns(false);

            var context = new Mock <HttpContext>();

            context.SetupGet(x => x.Response).Returns(httpResponse.Object);
            context.SetupGet(x => x.Request).Returns(request.Object);

            var middleware = new WebhookMiddleware(testOptions.Object, _testLogger.Object, _testBot.Object, adapter);

            await middleware.InvokeAsync(context.Object, _testDelegate.Object);

            _testLogger.Verify(x => x.Log(LogLevel.Error, 0, It.IsAny <FormattedLogValues>(), null, It.IsAny <Func <object, Exception, string> >()), Times.Once);
        }
Example #2
0
        public async Task InvokeAsyncValidShouldSucceed()
        {
            var testOptions = new Mock <IOptions <TwitterOptions> >();

            testOptions.SetupGet(x => x.Value).Returns(_twitterOptions.Object);

            var adapter = new TwitterAdapter(testOptions.Object);

            var httpResponse = new Mock <HttpResponse>();

            httpResponse.SetupAllProperties();
            httpResponse.Object.Body = new MemoryStream();

            var request = new Mock <HttpRequest>();

            request.SetupAllProperties();
            request.Object.Method = HttpMethods.Get;
            request.Setup(req => req.Query.TryGetValue("crc_token", out _values)).Returns(true);

            var context = new Mock <HttpContext>();

            context.SetupGet(x => x.Response).Returns(httpResponse.Object);
            context.SetupGet(x => x.Request).Returns(request.Object);

            var middleware = new WebhookMiddleware(testOptions.Object, _testLogger.Object, _testBot.Object, adapter);

            await middleware.InvokeAsync(context.Object, _testDelegate.Object);

            Assert.AreEqual(httpResponse.Object.StatusCode, (int)HttpStatusCode.OK);
        }
        public void UseWithMiddlewareShouldSucceed()
        {
            var adapter    = new TwitterAdapter(_testOptions.Object);
            var middleware = new Mock <IMiddleware>();
            var result     = adapter.Use(middleware.Object);

            Assert.IsFalse(result.MiddlewareSet.IsNullOrEmpty());
        }
Example #4
0
        public string LinuxTweets()
        {
            string url             = configuration.GetSection("Twitter").GetSection("url").Value;
            string consumer_key    = configuration.GetSection("Twitter").GetSection("consumer_key").Value;
            string consumer_secret = configuration.GetSection("Twitter").GetSection("consumer_secret").Value;

            return(TwitterAdapter.TweeterCall(url, consumer_key, consumer_secret));
        }
        public async Task ProcessActivityShouldReturnNullReferenceException()
        {
            var adapter = new TwitterAdapter(_testOptions.Object);

            await Assert.ThrowsExceptionAsync <NullReferenceException>(async() =>
            {
                await adapter.ProcessActivity(null, null);
            });
        }
Example #6
0
 public WebhookMiddleware(IOptions <TwitterOptions> options, ILogger <WebhookMiddleware> logger, IBot bot,
                          TwitterAdapter adapter)
 {
     _logger      = logger;
     _bot         = bot;
     _adapter     = adapter;
     _options     = options.Value;
     _interceptor = new WebhookInterceptor(_options.ConsumerSecret);
 }
Example #7
0
        private static async Task <List <SocialFeedItem> > SearchTwitterAsync(string query)
        {
            TwitterAdapter.ConsumerKey    = ConfigurationManager.AppSettings["TwitterConsumerKey"].ToString();
            TwitterAdapter.ConsumerSecret = ConfigurationManager.AppSettings["TwitterConsumerSecret"].ToString();

            var results = await TwitterAdapter.SearchAsync(query);

            return(results);
        }
Example #8
0
        public async Task <ActionResult> TwitterSearchAsync(string query)
        {
            TwitterAdapter.ConsumerKey    = TwitterConfiguration.ConsumerKeyApiKey;
            TwitterAdapter.ConsumerSecret = TwitterConfiguration.ConsumerSecretApiSecret;
            var results = TwitterAdapter.SearchAsync(query);

            var model = new TwitterSearch {
                Query = query, TwitterResult = results
            };

            return(View(model));
        }
        public async Task SendActivitiesAsyncShouldReturnEmptyResponsesWithEmptyActivities()
        {
            var adapter  = new TwitterAdapter(_testOptions.Object);
            var activity = new Activity();

            using (var turnContext = new TurnContext(adapter, activity))
            {
                var result = await adapter.SendActivitiesAsync(turnContext, new Activity[0], default);

                Assert.IsTrue(result.IsNullOrEmpty());
            }
        }
        public async Task UpdateActivityAsyncShouldReturnNotSupportedException()
        {
            var adapter  = new TwitterAdapter(_testOptions.Object);
            var activity = new Activity();

            using (var turnContext = new TurnContext(adapter, activity))
            {
                await Assert.ThrowsExceptionAsync <NotSupportedException>(async() =>
                {
                    await adapter.UpdateActivityAsync(turnContext, activity, default);
                });
            }
        }
        public async Task <ActionResult> TwitterSearchAsync(string query)
        {
            TwitterAdapter.ConsumerKey    = System.Web.HttpContext.Current.Application["TwitterConsumerKey"].ToString();
            TwitterAdapter.ConsumerSecret = System.Web.HttpContext.Current.Application["TwitterConsumerSecret"].ToString();
            var results = await TwitterAdapter.SearchAsync(query);

            var model = new TwitterSearch()
            {
                Query = query, ResultsXml = results
            };

            return(this.View(model));
        }
Example #12
0
        public async Task <ActionResult> TwitterSearchAsync(string query, int maxNumberOfResults, int dataSourceId)
        {
            TwitterAdapter.ConsumerKey    = System.Web.HttpContext.Current.Application["TwitterConsumerKey"].ToString();
            TwitterAdapter.ConsumerSecret = System.Web.HttpContext.Current.Application["TwitterConsumerSecret"].ToString();

            var results = await TwitterAdapter.SearchAsync(query, maxNumberOfResults);

            var json = JsonConvert.SerializeObject(results);

            DEV_DB_LICEntities2 db = new DEV_DB_LICEntities2();

            UserSearch usearch = new UserSearch()
            {
                QueryText = query, DataSourceId = dataSourceId, JsonResult = json, CreatedOn = DateTime.Now
            };

            db.UserSearches.Add(usearch);

            /*var model = new TwitterSearch() { Query = query, ResultsXml = results };*/

            db.SaveChanges();

            db.Database.ExecuteSqlCommand("usp_ImportTweetsBySearchId @param1", new SqlParameter("param1", usearch.Id));

            var resultsList = db.SearchResults.Where(r => r.UserSearchId == usearch.Id);

            List <TweetSentiment> tweetSentiments = new List <TweetSentiment>();

            foreach (var r in resultsList)
            {
                tweetSentiments.Add(new TweetSentiment(r.Id.ToString(), r.TweetText));
            }

            string apiKey = System.Web.HttpContext.Current.Application["CognitiveServicesKey"].ToString();

            var sentimentResults = await SentimentAnalyzer.AnalyzeAsync(tweetSentiments, apiKey);

            foreach (var s in sentimentResults)
            {
                var recordToUpdate = db.SearchResults.SingleOrDefault(r => r.Id.ToString() == s.Id);
                if (recordToUpdate != null)
                {
                    recordToUpdate.Score      = s.Score;
                    recordToUpdate.KeyPhrases = s.KeyPhrases;
                }
            }

            db.SaveChanges();

            return(this.RedirectToAction("Details", "UserSearches", new { id = usearch.Id }));
        }
Example #13
0
        internal static AlexaResponse PickAWinnerIntentHandler(Request request)
        {
            TwitterAdapter.ConsumerKey    = TwitterConfiguration.ConsumerKeyApiKey;
            TwitterAdapter.ConsumerSecret = TwitterConfiguration.ConsumerSecretApiSecret;
            var query   = TwitterConfiguration.DefaultQuery;
            var results = TwitterAdapter.SearchAsync(query);

            var model = new TwitterSearch {
                Query = query, TwitterResult = results
            };
            var result = model.TwitterResult[new Random().Next(model.TwitterResult.Count)];

            using (var db = new alexaskilldemoEntities())
            {
                var competitionWinner = db.CompetitionWinners.FirstOrDefault();

                if (competitionWinner == null)
                {
                    db.CompetitionWinners.Add(new CompetitionWinner
                    {
                        Name            = result.ScreenNameResponse,
                        Tweet           = result.Text,
                        CreatedDate     = result.CreatedAt,
                        ProfileImageUrl = result.ProfileImageUrl,
                        UpdatedDate     = DateTime.UtcNow
                    });
                }
                else
                {
                    competitionWinner.Name            = result.ScreenNameResponse;
                    competitionWinner.Tweet           = result.Text;
                    competitionWinner.CreatedDate     = result.CreatedAt;
                    competitionWinner.ProfileImageUrl = result.ProfileImageUrl;
                    competitionWinner.UpdatedDate     = DateTime.UtcNow;
                }

                db.SaveChanges();
            }

            var text = "I have selected user <prosody volume=\"x-loud\">" + result.ScreenNameResponse + "</prosody><emphasis level=\"moderate\"> Tweet <break time=\"1s\"/>" + result.Text + "</emphasis>" +
                       "<audio src='https://s3.amazonaws.com/ask-soundlibrary/human/amzn_sfx_crowd_cheer_med_01.mp3'/> " +
                       "<audio src='https://s3.amazonaws.com/ask-soundlibrary/human/amzn_sfx_crowd_applause_05.mp3'/>";
            var response = new AlexaResponse(text, new SimpleCard()
            {
                Title   = "Sitecore storefront",
                Content = text
            }, true, text);

            return(response);
        }
        public async Task ProcessActivityShouldSucceed()
        {
            var adapter            = new TwitterAdapter(_testOptions.Object);
            var directMessageEvent = new DirectMessageEvent();
            var bot = new Mock <IBot>();

            directMessageEvent.MessageText          = "test message text";
            directMessageEvent.Sender               = new TwitterUser();
            directMessageEvent.Recipient            = new TwitterUser();
            directMessageEvent.Sender.Id            = string.Empty;
            directMessageEvent.Sender.ScreenName    = string.Empty;
            directMessageEvent.Recipient.Id         = string.Empty;
            directMessageEvent.Recipient.ScreenName = string.Empty;
            bot.SetupAllProperties();

            await adapter.ProcessActivity(directMessageEvent, bot.Object.OnTurnAsync);

            bot.Verify(b => b.OnTurnAsync(It.IsAny <TurnContext>(), It.IsAny <CancellationToken>()), Times.Once);
        }