Exemplo n.º 1
0
        public TweetRepositoryFixture()
        {
            // Secrets.
            secretManager = new UserSecretManager();
            integrationConnectionString = secretManager.GetDataConnectionStringApiKey("integration");
            twitterApiKey = secretManager.GetTwitterApiKey();

            // Mappper.
            var mapper = new MapperConfiguration(cfg => cfg.AddProfile(typeof(DataMapperProfile)))
                         .CreateMapper();

            this.mapper = mapper;

            // Twitter Services.
            recentSearchService = new RecentSearchService(twitterApiKey);

            // Inmemory DB.
            var contextOptions = new DbContextOptionsBuilder <ToritoContext>()
                                 .UseInMemoryDatabase("ToritoDevInMemory")
                                 .Options;

            // Context and repositories.
            toritoContext = new ToritoContext(contextOptions);
            var isCreated = toritoContext.Database.EnsureCreated();

            tweetDbRepository     = new TweetDbRepository(toritoContext, mapper);
            tweetClientRepository = new TweetClientRepository(recentSearchService);
            cachedtweetService    = new CachedTweetService(tweetClientRepository, tweetDbRepository, this.mapper);

            // Cached task.
            cachedLast100TweetsTask = cachedtweetService.FetchAndUpdateLast100Tweets();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            try
            {
                //Iniciando a lista de hashtags
                List <string> hastags = new List <string>();

                hastags.Add("openbanking");
                hastags.Add("apifirst");
                hastags.Add("devops");
                hastags.Add("cloudfirst");
                hastags.Add("microservices");
                hastags.Add("apigateway");
                hastags.Add("oauth");
                hastags.Add("swagger");
                hastags.Add("raml");
                hastags.Add("openapis");

                var repositorioAPI = new TweetAPIRepository();
                var repositorioDB  = new TweetDbRepository();

                WriteLine("Limpando Base de dados");
                repositorioDB.ZerarBaseTweets();

                //Iterando na coleção de hashtags para consulta-las e persisti-las
                foreach (string hashtag in hastags)
                {
                    WriteLine("Acessando a API do Twitter filtrando pela hashtag: #" + hashtag);
                    var tweetsTask = repositorioAPI.ObterTweetsPorHashtagAsync(hashtag);

                    tweetsTask.ContinueWith(task =>
                    {
                        var tweets = task.Result;
                        foreach (var tweet in tweets)
                        {
                            WriteLine("Inserindo o tweet coletado na base Mongo para a hashtag: " + hashtag);

                            repositorioDB.SalvarTweetAsync(tweet);
                        }
                    },
                                            TaskContinuationOptions.OnlyOnRanToCompletion);
                }
            }
            catch (Exception ex)
            {
                WriteLine(ex.Message);
                WriteLine(ex.StackTrace);
                throw ex;
            }

            //Impede o encerramento do programa enquanto as tasks assincronas estão executando
            ReadKey();
        }
Exemplo n.º 3
0
        //internal readonly Task<GeoCodeResponse> geoCodeResponseTask;
        public ToritoCoreTestsFixture()
        {
            SecretManager = new UserSecretManager();
            var gmapsApiKey = SecretManager.GetGmapsGeocodeApiKey();

            GmapsGeocodeClient = new GmapsGeocodeClient(gmapsApiKey);

            // Mappper.
            var mapper = new MapperConfiguration(cfg => cfg.AddProfile(typeof(DataMapperProfile)))
                         .CreateMapper();

            Mapper = mapper;

            // Cleaners.
            AddressCleanReceiver     = new AddressCleanReceiver();
            ParenthesisCleanReceiver = new ParenthesisCleanReceiver();
            RetweetCleanReceiver     = new RetweetCleanReceiver();
            HashtagsCleanReceiver    = new HashtagsCleanReceiver();

            // Cleaner Handler.
            TweetDboCleanerHandler = new TweetDboAddressCleanHandler(
                new IReceiver <TweetDbo>[]
            {
                AddressCleanReceiver,
                AlcoholimetroCleanReceiver,
                RetweetCleanReceiver,
                ParenthesisCleanReceiver,
                HashtagsCleanReceiver,
            });
            // Clean Service.
            AddressCleanService = new AddressCleanService(TweetDboCleanerHandler);

            // Inmemory DB.
            var contextOptions = new DbContextOptionsBuilder <ToritoContext>()
                                 .UseInMemoryDatabase("ToritoDevInMemory")
                                 .Options;

            // Db.
            ToritoContext = new ToritoContext(contextOptions);
            ToritoContext.Database.EnsureCreated();
            TweetDbRepository = new TweetDbRepository(ToritoContext, mapper);
            LocationService   = new TweetLocationService(TweetDbRepository, AddressCleanService, GmapsGeocodeClient, Mapper);
        }