示例#1
0
        public async Task CanGetStringFromExternalSite()
        {
            var requestor = new WebRequestor(this.httpClient);
            var res       = await requestor.GetString(new Uri("http://yandex.ru")).ConfigureAwait(false);

            Assert.IsNotEmpty(res);
        }
示例#2
0
        static void VisitPage(string url)
        {
            Console.WriteLine("Submitting request...");

            var response = WebRequestor.Get(url);

            Console.WriteLine("Response received.");
        }
示例#3
0
        public async Task CanGetStringFromFinamResource()
        {
            var requestor = new WebRequestor(this.httpClient);
            var res       = await requestor.GetString(new Uri("https://www.finam.ru/cache/icharts/icharts.js")).ConfigureAwait(false);

#if DEBUG
            Console.WriteLine(res);
#endif
            Assert.IsNotEmpty(res);
        }
        private IVehicleTypeDocumentRequestor createVehicleTypeDRObj(string vehicleTypeUrl, string content)
        {
            Mock <VehicleTypeDocumentRequestor> mockDRVehicleType = new Mock <VehicleTypeDocumentRequestor>(vehicleTypeUrl);
            WebRequestor webRequestor    = new WebRequestor();
            HtmlDocument vehicleTypePage = webRequestor.CreateHtmlDocument(content);

            mockDRVehicleType.Setup(dr => dr.GetHtml()).Returns(vehicleTypePage);
            IVehicleTypeDocumentRequestor documentRequester = mockDRVehicleType.Object;

            return(documentRequester);
        }
        /*
         * [TestMethod]
         * public void CreatePlan_NoTypeGiven_VehicleTypesLengthEquals4()
         * {
         *  try
         *  {
         *      //Arrange
         *      IInitialPageDocumentRequestor drInitialPage = createInitialPageDRObj();
         *      string vehicleType1Url = "http://catalog.mann-filter.com/EU/tur/vehicle/MANN-FILTER%20Katalog%20Europa/Ara%C3%A7lar/Otomobiller%20%2B%20Ticari%20Ara%C3%A7lar";
         *      string vehicleType2Url = "http://catalog.mann-filter.com/EU/tur/vehicle/MANN-FILTER%20Katalog%20Europa/Ara%C3%A7lar/Kamyon%20%2B%20Otob%C3%BCs";
         *      string vehicleType3Url = "http://catalog.mann-filter.com/EU/tur/vehicle/MANN-FILTER%20Katalog%20Europa/Ara%C3%A7lar/Off%20Highway%20uygulamalar%C4%B1";
         *      string vehicleType4Url = "http://catalog.mann-filter.com/EU/tur/vehicle/MANN-FILTER%20Katalog%20Europa/Ara%C3%A7lar/Motosiklet";
         *      IVehicleTypeDocumentRequestor drVehicleType1 = createVehicleTypeDRObj(vehicleType1Url, Resources.MANNFILTER_Araclar_Otomobiller_Ticari_Araclar);
         *      IVehicleTypeDocumentRequestor drVehicleType2 = createVehicleTypeDRObj(vehicleType2Url, Resources.MANNFILTER_Araclar_Kamyon_Otobus);
         *      IVehicleTypeDocumentRequestor drVehicleType3 = createVehicleTypeDRObj(vehicleType3Url, Resources.MANNFILTER_Araclar_Off_Highway_uygulamalari);
         *      IVehicleTypeDocumentRequestor drVehicleType4 = createVehicleTypeDRObj(vehicleType4Url, Resources.MANNFILTER_Araclar_Motosiklet);
         *
         *      //Act
         *      var executionPlan = new MannDBExecutionPlan(drInitialPage, new[]{ "Kategori", "Üretici", "Model Adı", "Tipi", "Motor Kodu", "kW", "PS", "Yıl", "Hava Filtresi", "Ölçü Hava", "Yağ Filtresi", "Ölçü Yağ", "Benzin Filtresi", "Ölçü Benzin", "İç Mekan Filtresi", "Ölçü İç Mekan", "Diğer Filtreler", "Ölçü Diğer" });
         *      executionPlan.CreatePlan();
         *      executionPlan.ExecutePlan();
         *
         *      //Assert
         *      Assert.IsTrue(executionPlan.VehicleTypes.Length == 4);
         *      Assert.IsTrue(executionPlan.VehicleTypeProducers.Count == 4);
         *      Assert.IsTrue(executionPlan.VehicleTypeProducers["Otomobiller + Ticari Araçlar"].Length == 123);
         *      Assert.IsTrue(executionPlan.VehicleTypeProducers["Kamyon + Otobüs"].Length == 129);
         *      Assert.IsTrue(executionPlan.VehicleTypeProducers["Off Highway uygulamaları"].Length == 404);
         *      Assert.IsTrue(executionPlan.VehicleTypeProducers["Motosiklet"].Length == 48);
         *  }
         *  catch (Exception exc)
         *  {
         *      Assert.Fail(exc.Message);
         *  }
         * }
         */
        private IInitialPageDocumentRequestor createInitialPageDRObj()
        {
            string initialPageUrl = "http://catalog.mann-filter.com/EU/tur/vehicle/MANN-FILTER%20Katalog%20Europa/Ara%C3%A7lar";
            Mock <InitialPageDocumentRequestor> mockDocumentRequester = new Mock <InitialPageDocumentRequestor>(initialPageUrl);
            WebRequestor webRequestor = new WebRequestor();
            HtmlDocument initialPage  = webRequestor.CreateHtmlDocument(Resources.mannfilter_initial_page);

            mockDocumentRequester.Setup(dr => dr.GetHtml()).Returns(initialPage);
            IInitialPageDocumentRequestor documentRequester = mockDocumentRequester.Object;

            return(documentRequester);
        }
示例#6
0
        public async Task <string> LoadData(Symbol symbol, Period period, DateTime fromDate, DateTime toDate)
        {
            var requestUrl = new QueryBuilder()
                             .WithDateRange(fromDate, toDate, period)
                             .WithSymbol(symbol)
                             .GetUrl(this.config.ExportDataUrl);

            using (var client = new HttpClient())
            {
                var requestor = new WebRequestor(client);
                return(await requestor.GetString(requestUrl).ConfigureAwait(false));
            }
        }
示例#7
0
        public void Update()
        {
            using (var client = new HttpClient())
            {
                var requestor = new WebRequestor(client);
                var updater   = new MetadataUpdater(requestor, config.MarketsFeedUrl, config.SymbolsFeedUrl);

                var markets = updater.LoadMarkets().Result;
                var symbols = updater.LoadSymbols().Result;

                this.persister.SaveMarkets(markets);
                this.persister.SaveSymbols(symbols);
            }
        }
 /// <summary>
 /// Tell the reporter to use magic AWS REST address to get the AWS instance Id
 /// </summary>
 /// <returns>this</returns>
 public SignalFxReporterBuilder WithAWSInstanceIdDimension(IWebRequestor awsRequestor = null)
 {
     if (awsRequestor == null)
     {
         awsRequestor = new WebRequestor("http://169.254.169.254/latest/meta-data/instance-id")
                        .WithTimeout(1000 * 60)
                        .WithMethod("GET");
     }
     using (var resp = awsRequestor.Send())
     {
         string source = new StreamReader(resp).ReadToEnd();
         defaultDimensions[INSTANCE_ID_DIMENSION] = source;
         return(this);
     }
 }
示例#9
0
        static void Main(string[] args)
        {
            WebRequestor.Init();
            ProgramInit();

            NewItemNotifierService newItemService = new NewItemNotifierService();

            newItemService.CheckAllNewItemsFromGumtree();

            //var items = GumtreeHtmlReader.GetAdvertItems("https://www.gumtree.com.au/s-miscellaneous-goods/perth/cardboard+boxes/k0c18319l3008303");
            //InsertAdvertItems(items);

            //DoDatabaseStuff();
            //VisitPage("https://www.gumtree.com.au/s-miscellaneous-goods/perth/cardboard+boxes/k0c18319l3008303");
            //VisitPage("https://intranet.health.wa.gov.au");
        }
示例#10
0
        public async Task CanDownloadDataFromFinam()
        {
            // TODO: Refactor this: Load from Metadata Repo
            var sber = new Symbol()
            {
                MarketId = 8,
                Id       = 81075,
                Code     = "SBER"
            };

            var request = new QueryBuilder()
                          .WithDateRange(new DateTime(2016, 01, 01), new DateTime(2016, 08, 31), Period.H1)
                          .WithSymbol(sber)
                          .GetUrl(CONST_FinamExportHost);

            using (var client = new HttpClient())
            {
                var requestor = new WebRequestor(client);
                var data      = await requestor.GetString(request).ConfigureAwait(false);

                Console.WriteLine(data);
            }
        }
        private SignalFxBackendConfiguration parseConfig(XElement configElement)
        {
            var apiToken = getRequiredStringConfig(configElement, "apiToken");
            var defaultDimensionsNode = configElement.Element("defaultDimensions");
            IDictionary <string, string> defaultDimensions = new Dictionary <string, string>();

            if (defaultDimensionsNode != null)
            {
                foreach (var defaultDimensionNode in defaultDimensionsNode.Elements("defaultDimension"))
                {
                    string name  = getRequiredStringConfig(defaultDimensionNode, "name");
                    string value = getRequiredStringConfig(defaultDimensionNode, "value");
                    if (!String.IsNullOrEmpty(name) && !String.IsNullOrEmpty(value))
                    {
                        defaultDimensions[name] = value;
                    }
                }
            }

            var awsIntegrationNode = configElement.Attribute("awsIntegration");

            if (awsIntegrationNode != null && configElement.ToBoolean("awsIntegration"))
            {
                var awsRequestor = new WebRequestor("http://169.254.169.254/latest/meta-data/instance-id")
                                   .WithTimeout(1000 * 60)
                                   .WithMethod("GET");

                using (var resp = awsRequestor.Send())
                {
                    defaultDimensions[INSTANCE_ID_DIMENSION] = new StreamReader(resp).ReadToEnd();
                }
            }

            var baseURI = getOptionalStringConfig(configElement, "baseURI", DEFAULT_URI);

            var    sourceType = getRequiredStringConfig(configElement, "sourceType");
            string source;

            switch (sourceType)
            {
            case "netbios":
                source = System.Environment.MachineName;
                break;

            case "dns":
                source = System.Net.Dns.GetHostName();
                break;

            case "fqdn":
                string domainName = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;
                string hostName   = System.Net.Dns.GetHostName();

                if (!hostName.EndsWith(domainName))     // if hostname does not already include domain name
                {
                    hostName += "." + domainName;       // add the domain name part
                }
                source = hostName;
                break;

            case "custom":
                source = getRequiredStringConfig(configElement, "sourceValue", " when \"sourceType\" is \"custom\"");
                break;

            default:
                throw new Exception("sourceType attribute must be one of netbios, dns, fqdn, or custom(with source attribute set) on " + configElement);
            }

            var maxBatchSize          = getOptionalIntConfig(configElement, "maxBatchSize", MAX_DATAPOINTS_PER_MESSAGE);
            var maxTimeBetweenBatches = getOptionalTimeConfig(configElement, "maxWaitBetweenBatches", Utility.ConvertToTimespan("5s"));
            var retryDelay            = getOptionalTimeConfig(configElement, "retryDelay", Utility.ConvertToTimespan("1s"));
            var postTimeout           = getOptionalTimeConfig(configElement, "postTimeout", Utility.ConvertToTimespan("1s"));

            return(new SignalFxBackendConfiguration(apiToken, defaultDimensions, baseURI, maxBatchSize, source,
                                                    maxTimeBetweenBatches, retryDelay, postTimeout));
        }
示例#12
0
 public MetadataUpdater(WebRequestor requestor, string marketsFeedUrl, string symbolsFeedUrl)
 {
     this.requestor      = requestor;
     this.marketsFeedUrl = new Uri(marketsFeedUrl);
     this.symbolsFeedUrl = new Uri(symbolsFeedUrl);
 }
示例#13
0
 public VehicleTypeDocumentRequestor(WebRequestor webRequestor, string url) : base(webRequestor, url)
 {
 }
示例#14
0
 public ModelDocumentRequestor(WebRequestor webRequestor, string url) : base(webRequestor, url)
 {
 }
示例#15
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile($"appsettings.json", true, true);


            var configuration = builder.Build();

            var webClient = new WebClient();

            var fileProvider        = new FileSystemProvider();
            var telegramBotSettings = configuration.GetSection("TelegramBotSettings").Get <TelegramBotSettings>();

            var webRequestor       = new WebRequestor(webClient);
            var chatUpdateReader   = new TelegramUpdatesReader(telegramBotSettings, webRequestor);
            var publishBotReaction = new TelegramChatMessagePublisher(telegramBotSettings, webRequestor);
            var chatBotState       = new ChatBotState(fileProvider);

            chatBotState.LoadState();

            var pollingWatcher = new TelegramChatUpdatesPollingWatcher(chatUpdateReader, chatBotState);

            var cancellationTokenSource = new CancellationTokenSource();


            var hellow     = new HellowAnswer(publishBotReaction);
            var Say        = new SayUserInformation(publishBotReaction);
            var weather    = new WeatherAnswer(publishBotReaction);
            var vedomosti  = new Vedomosti(publishBotReaction);
            var dw         = new EconomicsDw(publishBotReaction);
            var cbr        = new Cbr(publishBotReaction);
            var news       = new NewsRu(publishBotReaction);
            var prime      = new PrimeRu(publishBotReaction);
            var sport      = new Sport(publishBotReaction);
            var utkin      = new Utkin(publishBotReaction);
            var nike       = new Nike(publishBotReaction);
            var legislat   = new Legislation(publishBotReaction);
            var reebok     = new Reebok(publishBotReaction);
            var newbalance = new Newbalance(publishBotReaction);
            var answers    = new List <IBotAnswer>()
            {
                hellow, Say, weather, vedomosti, dw, cbr, news, prime, sport, utkin, nike, legislat, reebok, newbalance
            };
            var asker = new Asker(answers);



            pollingWatcher.OnMessageArrived += (msg) =>
            {
                Console.WriteLine($"{msg.text} from {msg.from.username} with id { msg.chat.id} {msg.from.id} ");

                if (msg.text == "/start")
                {
                    publishBotReaction.SendMessage("Приветствую вас! Я  готов к работе. Команды бота:\n1) Скажи погоду: [место].\n2)Скажи информацию про состояние атмосферы в городе: [название города].\n3)Сколько времени в городе: [название города].\nСобытия в мире экономики по версии:\n4)Газета ведомости -\n/EconomicsVedomosti.\n5)Cайт dw.com\n/EconomicsDw\n6)Сайт ЦБ РФ-\n/EconomicsCbr.\n7)Сайт news.ru-\n/EconomicsNewsRu.\n8)Сайт 1prime.ru-\n/EconomicsPrimeRu.\nНОВОСТИ СПОРТА:\n9)Cайт sports.ru-\n/SportsNews\n10)Блог Уткина-\n/UtkinSportsNews\nНОВЫЕ ЗАКОНЫ:\n11)Сайт с обновлениями законодательства РФ-\n/LegislationChanges.\nНОВОСТИ БРЕНДОВ ОДЕЖДЫ:\n12)Nike-\n/NikenewsFeed\n13)Reebok-\n/ReebokNewsGlobal\n14)NewBalance-\n/NewBalanceNewsMarket.", msg.chat.id);
                }



                TimeAnswer response = new TimeAnswer(publishBotReaction, msg);
                response.CanWork(msg.text);
                if (response.CanWork(msg.text) == true)
                {
                    response.Answer();
                }
                asker.Ask(msg.text, msg);
            };

            pollingWatcher.StartWatch(cancellationTokenSource.Token);

            var stop = Console.ReadLine();

            if (stop == "stop bot")
            {
                Console.WriteLine("Работа Бота остановлена. Сохранение.");
                cancellationTokenSource.Cancel();

                chatBotState.SaveState();
            }
        }
 public InitialPageDocumentRequestor(WebRequestor webRequestor, string url, VehicleTypes?vehicleType = null) : base(webRequestor, url)
 {
     this.vehicleType = vehicleType;
 }
 public InitialPageDocumentRequestor(WebRequestor webRequestor, string url) : base(webRequestor, url)
 {
 }
示例#18
0
 public FilterPageDocumentRequestor(WebRequestor webRequestor, string url) : base(webRequestor, url)
 {
 }
示例#19
0
 public void OneTimeSetup()
 {
     this.requestor = new WebRequestor(new HttpClient());
 }