コード例 #1
0
        private static HttpJobItem PrepareRemoveHttpJobItem(string hangfireServerUrl, string jobName, bool isBackground = false, HangfireServerPostOption option = null)
        {
            if (string.IsNullOrEmpty(hangfireServerUrl))
            {
                throw new ArgumentNullException(nameof(hangfireServerUrl));
            }
            if (string.IsNullOrEmpty(jobName))
            {
                throw new ArgumentNullException(nameof(jobName));
            }

            var recurringJob = new RecurringJob {
                JobName = jobName
            };

            if (option == null)
            {
                option = new HangfireServerPostOption();
            }
            option.HttpClient = !string.IsNullOrEmpty(option.ProxyUrl) ?
                                HangfireJobHttpClientFactory.GetProxiedHttpClient(option.ProxyUrl) :
                                HangfireJobHttpClientFactory.GetHttpClient(hangfireServerUrl);

            var url = hangfireServerUrl.EndsWith("/httpjob?op=deljob")
                ? hangfireServerUrl
                : hangfireServerUrl + "/httpjob?op=deljob";
            HttpJobItem jobItem = new HttpJobItem(url, option)
            {
                JobName     = recurringJob.JobName,
                Url         = "#",
                ContentType = "application/json",
                Data        = isBackground? "backgroundjob" : ""
            };

            return(jobItem);
        }
コード例 #2
0
 public HttpJobItem(string hangfireUrl, HangfireServerPostOption option) : this()
 {
     _hangfireUrl    = hangfireUrl;
     _httpPostOption = option;
 }
コード例 #3
0
        private static HttpJobItem PrepareAddBackgroundHttpJobItem(string hangfireServerUrl, BackgroundJob backgroundJob,
                                                                   HangfireServerPostOption option = null)
        {
            if (string.IsNullOrEmpty(hangfireServerUrl))
            {
                throw new ArgumentNullException(nameof(hangfireServerUrl));
            }

            if (backgroundJob == null)
            {
                throw new ArgumentNullException(nameof(backgroundJob));
            }

            if (string.IsNullOrEmpty(backgroundJob.Url))
            {
                throw new ArgumentNullException(nameof(backgroundJob.Url));
            }

            if (string.IsNullOrEmpty(backgroundJob.JobName))
            {
                throw new ArgumentNullException(nameof(backgroundJob.JobName));
            }

            CheckChildJob(backgroundJob.Success, backgroundJob.Fail);

            if (option == null)
            {
                option = new HangfireServerPostOption();
            }
            option.HttpClient = !string.IsNullOrEmpty(option.ProxyUrl) ?
                                HangfireJobHttpClientFactory.GetProxiedHttpClient(option.ProxyUrl) :
                                HangfireJobHttpClientFactory.GetHttpClient(hangfireServerUrl);
            var _data = string.Empty;

            if (backgroundJob.Data != null)
            {
                if (backgroundJob.Data is string _dataStr)
                {
                    _data = _dataStr;
                }
                else
                {
                    _data = JsonConvert.SerializeObject(backgroundJob.Data);
                }
            }
            var url = hangfireServerUrl.EndsWith("/httpjob?op=backgroundjob")
                ? hangfireServerUrl
                : hangfireServerUrl + "/httpjob?op=backgroundjob";

            HttpJobItem jobItem = new HttpJobItem(url, option)
            {
                Url                  = backgroundJob.Url,
                Method               = backgroundJob.Method,
                Data                 = _data,
                ContentType          = backgroundJob.ContentType,
                Timeout              = backgroundJob.Timeout,
                DelayFromMinutes     = backgroundJob.DelayFromMinutes,
                JobName              = backgroundJob.JobName,
                SendSucMail          = backgroundJob.SendSucMail,
                SendFaiMail          = backgroundJob.SendFaiMail,
                Mail                 = backgroundJob.Mail != null && backgroundJob.Mail.Any() ? string.Join(",", backgroundJob.Mail) : "",
                EnableRetry          = backgroundJob.EnableRetry,
                RetryTimes           = backgroundJob.RetryTimes,
                RetryDelaysInSeconds = backgroundJob.RetryDelaysInSeconds,
                BasicUserName        = backgroundJob.BasicUserName,
                BasicPassword        = backgroundJob.BasicPassword,
                AgentClass           = backgroundJob.AgentClass,
                Headers              = backgroundJob.Headers,
                CallbackEL           = backgroundJob.CallbackEL,
                QueueName            = backgroundJob.QueueName
            };

            AppendChildJob(jobItem, backgroundJob.Success, backgroundJob.Fail);
            return(jobItem);
        }
コード例 #4
0
 /// <summary>
 /// AddBackgroundJob
 /// </summary>
 /// <param name="hangfireServerUrl">hangfire的dashbord的根目录地址</param>
 /// <param name="backgroundJob">job参数</param>
 /// <param name="option">提交httprequest的其他配置</param>
 /// <returns></returns>
 public static AddBackgroundHangfirJobResult AddBackgroundJob(string hangfireServerUrl, BackgroundJob backgroundJob, HangfireServerPostOption option = null)
 {
     return(PrepareAddBackgroundHttpJobItem(hangfireServerUrl, backgroundJob, option).Post <AddBackgroundHangfirJobResult>());
 }
コード例 #5
0
 public static HangfirJobResult RemoveRecurringJob(string hangfireServerUrl, string jobName, HangfireServerPostOption option = null)
 {
     return(PrepareRemoveHttpJobItem(hangfireServerUrl, jobName, false, option).Post <HangfirJobResult>());
 }
コード例 #6
0
 public static HangfirJobResult RemoveBackgroundJob(string hangfireServerUrl, string jobId, HangfireServerPostOption option = null)
 {
     return(PrepareRemoveHttpJobItem(hangfireServerUrl, jobId, true, option).Post <HangfirJobResult>());
 }
コード例 #7
0
 /// <summary>
 /// AddRecurringJob
 /// </summary>
 /// <param name="hangfireServerUrl">hangfire的dashbord的根目录地址</param>
 /// <param name="recurringJob">job参数</param>
 /// <param name="option">提交httprequest的其他配置</param>
 /// <returns></returns>
 public static HangfirJobResult AddRecurringJob(string hangfireServerUrl, RecurringJob recurringJob, HangfireServerPostOption option = null)
 {
     return(PrepareAddRecurringHttpJobItem(hangfireServerUrl, recurringJob, option).Post <HangfirJobResult>());
 }
コード例 #8
0
        private static HttpJobItem PrepareAddRecurringHttpJobItem(string hangfireServerUrl, RecurringJob recurringJob,
                                                                  HangfireServerPostOption option = null)
        {
            if (string.IsNullOrEmpty(hangfireServerUrl))
            {
                throw new ArgumentNullException(nameof(hangfireServerUrl));
            }

            if (recurringJob == null)
            {
                throw new ArgumentNullException(nameof(recurringJob));
            }

            if (string.IsNullOrEmpty(recurringJob.Url))
            {
                throw new ArgumentNullException(nameof(recurringJob.Url));
            }

            if (string.IsNullOrEmpty(recurringJob.JobName))
            {
                throw new ArgumentNullException(nameof(recurringJob.JobName));
            }

            if (string.IsNullOrEmpty(recurringJob.Cron))
            {
                throw new ArgumentNullException(nameof(recurringJob.Cron));
            }

            if (option == null)
            {
                option = new HangfireServerPostOption();
            }
            option.HttpClient = !string.IsNullOrEmpty(option.ProxyUrl) ?
                                HangfireJobHttpClientFactory.GetProxiedHttpClient(option.ProxyUrl) :
                                HangfireJobHttpClientFactory.GetHttpClient(hangfireServerUrl);
            var _data = string.Empty;

            if (recurringJob.Data != null)
            {
                if (recurringJob.Data is string _dataStr)
                {
                    _data = _dataStr;
                }
                else
                {
                    _data = JsonConvert.SerializeObject(recurringJob.Data);
                }
            }
            var url = hangfireServerUrl.EndsWith("/httpjob?op=recurringjob")
                ? hangfireServerUrl
                : hangfireServerUrl + "/httpjob?op=recurringjob";
            HttpJobItem jobItem = new HttpJobItem(url, option)
            {
                Url                  = recurringJob.Url,
                Method               = recurringJob.Method,
                Data                 = _data,
                ContentType          = recurringJob.ContentType,
                Timeout              = recurringJob.Timeout,
                JobName              = recurringJob.JobName,
                QueueName            = recurringJob.QueueName,
                Cron                 = recurringJob.Cron,
                SendSucMail          = recurringJob.SendSucMail,
                SendFaiMail          = recurringJob.SendFaiMail,
                Mail                 = recurringJob.Mail != null && recurringJob.Mail.Any() ? string.Join(",", recurringJob.Mail) : "",
                EnableRetry          = recurringJob.EnableRetry,
                RetryTimes           = recurringJob.RetryTimes,
                RetryDelaysInSeconds = recurringJob.RetryDelaysInSeconds,
                BasicUserName        = recurringJob.BasicUserName,
                BasicPassword        = recurringJob.BasicPassword,
                AgentClass           = recurringJob.AgentClass,
                Headers              = recurringJob.Headers
            };

            return(jobItem);
        }
コード例 #9
0
 /// <summary>
 /// 如果已经存在不就不在添加会返回错误
 /// </summary>
 /// <param name="hangfireServerUrl"></param>
 /// <param name="recurringJob"></param>
 /// <param name="option"></param>
 /// <returns></returns>
 public static Task <HangfirJobResult> AddRecurringJobAsync(string hangfireServerUrl, RecurringJob recurringJob, HangfireServerPostOption option = null)
 {
     return(PrepareAddRecurringHttpJobItem(hangfireServerUrl, recurringJob, true, option).PostAsync <HangfirJobResult>());
 }
コード例 #10
0
        /// <summary>
        /// AddBackgroundJobAsync
        /// </summary>
        /// <param name="hangfireServerUrl">hangfire的dashbord的根目录地址</param>
        /// <param name="backgroundJob">job参数</param>
        /// <param name="option">提交httprequest的其他配置</param>
        /// <returns></returns>
        public static Task <HangfireAddJobResult> AddBackgroundJobAsync(string hangfireServerUrl, BackgroundJob backgroundJob, HangfireServerPostOption option = null)
        {
            if (string.IsNullOrEmpty(hangfireServerUrl))
            {
                throw new ArgumentNullException(nameof(hangfireServerUrl));
            }

            if (backgroundJob == null)
            {
                throw new ArgumentNullException(nameof(backgroundJob));
            }

            if (string.IsNullOrEmpty(backgroundJob.Url))
            {
                throw new ArgumentNullException(nameof(backgroundJob.Url));
            }

            if (string.IsNullOrEmpty(backgroundJob.JobName))
            {
                throw new ArgumentNullException(nameof(backgroundJob.JobName));
            }

            if (option == null)
            {
                option = new HangfireServerPostOption();
            }
            option.HttpClient = !string.IsNullOrEmpty(option.ProxyUrl) ?
                                HangfireJobHttpClientFactory.GetProxiedHttpClient(option.ProxyUrl) :
                                HangfireJobHttpClientFactory.GetHttpClient(hangfireServerUrl);
            var _data = string.Empty;

            if (backgroundJob.Data != null)
            {
                if (backgroundJob.Data is string _dataStr)
                {
                    _data = _dataStr;
                }
                else
                {
                    _data = JsonConvert.SerializeObject(backgroundJob.Data);
                }
            }

            var url = hangfireServerUrl.EndsWith("/httpjob?op=backgroundjob")
                ? hangfireServerUrl
                : hangfireServerUrl + "/httpjob?op=backgroundjob";
            HttpJobItem jobItem = new HttpJobItem(url, option)
            {
                Url              = backgroundJob.Url,
                Method           = backgroundJob.Method,
                Data             = _data,
                ContentType      = backgroundJob.ContentType,
                Timeout          = backgroundJob.Timeout,
                DelayFromMinutes = backgroundJob.DelayFromMinutes,
                JobName          = backgroundJob.JobName,
                SendSucMail      = backgroundJob.SendSucMail,
                SendFaiMail      = backgroundJob.SendFaiMail,
                Mail             = backgroundJob.Mail != null && backgroundJob.Mail.Any() ? string.Join(",", backgroundJob.Mail) : "",
                EnableRetry      = backgroundJob.EnableRetry,
                BasicUserName    = backgroundJob.BasicUserName,
                BasicPassword    = backgroundJob.BasicPassword,
                AgentClass       = backgroundJob.AgentClass
            };

            return(jobItem.PostAsync());
        }