static int Main(string[] args)
        {
            var rootCommand = new RootCommand
                              (
                "Sends HTTP `HEAD` requests to the specified URL."
                              )
            {
                Name = "./RequestsGalore",
            };

            rootCommand.AddOption(UrlOption);
            rootCommand.AddOption(RequestsOption);
            rootCommand.AddOption(ConcurrencyLevelOption);

            rootCommand.Handler = CommandHandler.Create <string, int?, int?>((url, numberOfRequests, numberOfConcurrentRequestsPerRequest) =>
            {
                // TODO: The following is a hack to make validation work as the
                // CommandLine API is not fully fleshed out yet.
                OptionValidation.ValidateOptions(url, numberOfRequests, numberOfConcurrentRequestsPerRequest);

                var urlRequestService = new UrlRequestService(Client);
                var urlController     = new UrlController(urlRequestService);

                var urlRequestResponses = urlController.GetUrlRequestResponses(url, numberOfRequests.Value, numberOfConcurrentRequestsPerRequest.Value);

                for (int i = 0; i < urlRequestResponses.Count; i++)
                {
                    var response = urlRequestResponses[i];
                    Console.WriteLine($"Request {i} -> [{response.StatusCode}]");
                }
            });

            return(rootCommand.InvokeAsync(args).Result);
        }
Exemple #2
0
 public MainViewModel()
 {
     ReportCollection   = new ObservableCollection <UrlReportViewModel>();
     mUrlReportBuilder  = new UrlReportBuilder();
     mUrlRequestService = new UrlRequestService();
     mUrlParseService   = new UrlParseService();
     UrlFilePath        = Constants.cUrlFilePath;
 }
 /// <summary>
 /// Запрос на отмену операции обработки
 /// </summary>
 public async Task CancelRequest()
 {
     await Task.Run(() =>
     {
         this.mCancellationTokenSource.Cancel();
         this.mMaxReferenceCountSelectDelegateInvoker = null;
         this.mUrlRequestService = null;
         this.mUrlParseService   = null;
         this.RequestWrapper     = null;
     });
 }
 public UrlReportViewModel(
     UrlRequestService urlRequestService,
     UrlParseService urlParseService,
     MaxReferenceCountSelectDelegate maxReferenceCountSelectDelegate)
 {
     mMaxReferenceCountSelectDelegateInvoker = maxReferenceCountSelectDelegate;
     mUrlRequestService  = urlRequestService;
     mUrlParseService    = urlParseService;
     this.RequestWrapper = new WrapAsyncResult <int?>((source, completionSource) =>
     {
         mCancellationTokenSource = source;
     });
 }
        /// <summary>
        /// Получение списка url
        /// </summary>
        /// <param name="urlFilePath"></param>
        /// <param name="urlRequestService"></param>
        /// <param name="urlParseService"></param>
        /// <param name="maxReferenceSelectDelegate"></param>
        /// <returns></returns>
        public async Task <IEnumerable <UrlReportViewModel> > GetUrlReportsAsync(
            string urlFilePath,
            UrlRequestService urlRequestService,
            UrlParseService urlParseService,
            MaxReferenceCountSelectDelegate maxReferenceSelectDelegate)
        {
            Func <Task <IEnumerable <string> > > getUrlsFunc = async() => await mUrlFileReadService.GetUrlsAsync(urlFilePath);

            IEnumerable <string> urls = await getUrlsFunc.WithTry(Enumerable.Empty <string>, (str) => MessageBox.Show(str, "Ошибка чтения файла", MessageBoxButton.OK, MessageBoxImage.Error));

            return(urls.Select(x => new UrlReportViewModel(urlRequestService, urlParseService, maxReferenceSelectDelegate)
            {
                Url = x
            }));
        }
Exemple #6
0
        public void Execute(IJobExecutionContext context)
        {
            //var mapper = context.JobDetail.JobDataMap;
            //var url = mapper.GetString("pingUrl");

            //var request = (HttpWebRequest)WebRequest.Create(url);

            //request.ContentLength = 0;
            //request.Headers.Add("Accept-Language", "en;q=0.8");
            //request.ContentType = "text/html";
            //request.Method = "GET";

            //try
            //{
            //    var response = (HttpWebResponse)request.GetResponse();
            //    _log.Info("Ran Quartz UrlJob : " + url);
            //}
            //catch (WebException e)
            //{
            //    var response = (HttpWebResponse)e.Response;

            //    _log.Error("Failed Quartz UrlJob : " + url + " Status :" + response.StatusCode, e);
            //}
            var requestService = new UrlRequestService();
            var runningService = new UrlRunningService(requestService);

            var query = new Sql()
                        .Select("*")
                        .From("TD_ScheduleUrl")
                        //.Where("LastRun < @0", DateTime.UtcNow.AddSeconds(-6.5))
                        //.Where("NextRun > @0", DateTime.UtcNow)
                        //.Where("NextRun < @0", DateTime.UtcNow.AddMinutes(1))
                        .Where("Disabled = @0", false);

            var urls = ApplicationContext.Current.DatabaseContext.Database.Fetch <ScheduleUrl>(query);

            try
            {
                var response = runningService.GetAndRunUrls(urls);
                _log.Info("Ran TechDevils Job : " + response);
            }
            catch (Exception e)
            {
                _log.Error("Failed TechDevils Job", e);
            }
        }
        public string RunTaskNow(int id)
        {
            //ToDo: Get run now task to update the last manual run and not to update the nex run time
            var sql = new Sql().Select("*").From <ScheduleUrl>().Where("id = " + id);

            var records = DatabaseContext.Database.Fetch <ScheduleUrl>(sql);

            var rs = new UrlRequestService();
            var urlRunningService = new UrlRunningService(rs);

            try
            {
                urlRunningService.CallUrls(records);
            }
            catch (Exception e)
            {
                _log.Error("Error running 'Run Now' task", e);
                return("Failed to run please see log for more information");
            }

            return(DateTime.UtcNow.ToString("dd/MM/yyyy hh:mm:ss.fff"));
        }