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(); }
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(); }
//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); }