Exemplo n.º 1
0
        public async Task <ActionResult> Search(string Query, DateTime DateFrom, DateTime DateTo)
        {
            DataManagement.Search model  = null;
            SearchService         search = new Services.SearchService();

            if (User.Identity.IsAuthenticated)
            {
                //some stuff
                model = await search.Search(Query, DateFrom, DateTo, User.Identity.Name);
            }
            else
            {
                model = await search.Search(Query, DateFrom, DateTo, "");
            }
            //ThreadPool.QueueUserWorkItem(_ => search.Search(model.Query, new DateTime(2014, 05, 02), new DateTime(2014, 05, 03)));
            //Thread thread = new Thread(_ => search.Search(Query, new DateTime(2014, 05, 02), new DateTime(2014, 05, 03)));
            //thread.Start();

            /* DataManagement.Search model = new DataManagement.Search();
             * model.Query = Query;
             * model.From = DateFrom;
             * model.To = DateTo;
             * model.SDate = DateTime.Now;
             * Task.Run(async () => await search.Search(model));*/
            if (User.Identity.IsAuthenticated)
            {
                DataManagementService service = new DataManagementService();
                ViewBag.UserData = service.LoadSearch(User.Identity.Name).ToList();
            }
            return(View("Index", model));
        }
Exemplo n.º 2
0
 public ActionResult RefreshMap(DataManagement.Search model)
 {
     /*DataManagementService service = new DataManagementService();
      * var result = service.LoadSearch(model.Id);
      * if(result.Count() != 0)
      * {
      *  return View("Search", result.First());
      * }*/
     return(View("Search", model));
 }
Exemplo n.º 3
0
        public async Task <DataManagement.Search> Search(string query, DateTime DFrom, DateTime DTo, string UserName)
        {
            var result = DMService.CheckIfSearchExists(query, DFrom, DTo);

            if (result != null)
            {
                return(result);
            }
            CurrentSearch       = new DataManagement.Search();
            CurrentSearch.Query = query;
            CurrentSearch.From  = DFrom;
            CurrentSearch.To    = DTo;
            CurrentSearch.SDate = DateTime.Now;

            if (UserName == "")
            {
                DMService.SaveSearch(CurrentSearch);
            }
            else
            {
                var User = DMService.GetUserByName(UserName);
                User.Searches.Add(CurrentSearch);
                DMService.SaveChanges();
            }


            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey    = ConfigurationManager.AppSettings["consumerKey"],
                    ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"],
                    //AccessToken = ConfigurationManager.AppSettings["accessToken"],
                    //AccessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"]
                }
            };
            ulong idfrom = 0, idto = long.MaxValue;

            using (var twitterCtx = new TwitterContext(auth))
            {
                //Getting oldest tweet id from DateTime(tfrom)

                var searchResponse = await
                                         (from search in twitterCtx.Search
                                         where search.Type == SearchType.Search &&
                                         search.Query == "\"" + query + "\"" &&
                                         search.Count == 1 &&
                                         search.Until == DFrom
                                         select search).SingleOrDefaultAsync();
                if (searchResponse != null && searchResponse.Statuses != null &&
                    searchResponse.Statuses.Count != 0)
                {
                    idfrom = searchResponse.Statuses.First().StatusID;
                }

                //Getting tweets that match search string
                do
                {
                    searchResponse = await
                                         (from search in twitterCtx.Search
                                         where search.Type == SearchType.Search &&
                                         search.Query == "\"" + query + "\"" &&
                                         search.Count == 100 &&
                                         search.SinceID == idfrom &&
                                         search.Until == DTo &&
                                         search.MaxID == idto
                                         select search).SingleOrDefaultAsync();
                    if (searchResponse != null && searchResponse.Statuses != null)
                    {
                        foreach (var tweet in searchResponse.Statuses)
                        {
                            if (tweet.Coordinates != null && tweet.Coordinates.Latitude != 0 && tweet.Coordinates.Longitude != 0)
                            {
                                CurrentSearch.Tweets.Add(new DataManagement.Tweet
                                {
                                    User      = tweet.User.ScreenNameResponse,
                                    Text      = tweet.Text,
                                    Latitude  = tweet.Coordinates.Latitude,
                                    Longitude = tweet.Coordinates.Longitude,
                                    Location  = tweet.User.Location
                                });
                            }
                        }
                        if (searchResponse.Statuses.Count != 0 &&
                            idto != searchResponse.Statuses.Last().StatusID)
                        {
                            idto = searchResponse.Statuses.Last().StatusID;
                        }
                        else
                        {
                            break;
                        }
                    }
                    DMService.SaveChanges();
                    System.Threading.Thread.Sleep(2000);        // 450/15min = 1/2s
                } while (searchResponse.Statuses.Count != 0);
                return(CurrentSearch);
            }
        }
Exemplo n.º 4
0
        public async Task<DataManagement.Search> Search(string query, DateTime DFrom, DateTime DTo, string UserName)
        {
            var result = DMService.CheckIfSearchExists(query, DFrom, DTo);
            if (result != null)
            {
                return result;
            }
            CurrentSearch = new DataManagement.Search();
            CurrentSearch.Query = query;
            CurrentSearch.From = DFrom;
            CurrentSearch.To = DTo;
            CurrentSearch.SDate = DateTime.Now;

            if (UserName == "")
            {
                DMService.SaveSearch(CurrentSearch);
            }
            else
            {
                var User = DMService.GetUserByName(UserName);
                User.Searches.Add(CurrentSearch);
                DMService.SaveChanges();
            }
            

            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey = ConfigurationManager.AppSettings["consumerKey"],
                    ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"],
                    //AccessToken = ConfigurationManager.AppSettings["accessToken"],
                    //AccessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"]
                }
            };
            ulong idfrom = 0, idto = long.MaxValue;

            using (var twitterCtx = new TwitterContext(auth))
            {
                //Getting oldest tweet id from DateTime(tfrom)

                var searchResponse = await
                    (from search in twitterCtx.Search
                     where search.Type == SearchType.Search &&
                           search.Query == "\"" + query + "\"" &&
                           search.Count == 1 &&
                           search.Until == DFrom
                     select search).SingleOrDefaultAsync();
                if (searchResponse != null && searchResponse.Statuses != null
                    && searchResponse.Statuses.Count != 0)
                    idfrom = searchResponse.Statuses.First().StatusID;

                //Getting tweets that match search string
                do
                {
                    searchResponse = await
                        (from search in twitterCtx.Search
                         where search.Type == SearchType.Search &&
                               search.Query == "\"" + query + "\"" &&
                               search.Count == 100 &&
                               search.SinceID == idfrom &&
                               search.Until == DTo &&
                               search.MaxID == idto
                         select search).SingleOrDefaultAsync();
                    if (searchResponse != null && searchResponse.Statuses != null)
                    {
                        foreach (var tweet in searchResponse.Statuses)
                        {
                            if(tweet.Coordinates != null && tweet.Coordinates.Latitude != 0 && tweet.Coordinates.Longitude != 0)
                            {
                                CurrentSearch.Tweets.Add(new DataManagement.Tweet
                                {
                                    User = tweet.User.ScreenNameResponse,
                                    Text = tweet.Text,
                                    Latitude = tweet.Coordinates.Latitude,
                                    Longitude = tweet.Coordinates.Longitude,
                                    Location = tweet.User.Location
                                });
                            }
                        }
                        if (searchResponse.Statuses.Count != 0
                            && idto != searchResponse.Statuses.Last().StatusID)
                        {
                            idto = searchResponse.Statuses.Last().StatusID;
                        }
                        else { break; }
                    }
                    DMService.SaveChanges();
                    System.Threading.Thread.Sleep(2000);        // 450/15min = 1/2s 
                } while (searchResponse.Statuses.Count != 0);
                return CurrentSearch;
            }
        }