public async Task <IResultModel> EditHttpJob(Guid id)
        {
            var entity = await _repository.GetAsync(id);

            if (entity == null)
            {
                return(ResultModel.Failed());
            }

            var model = _mapper.Map <JobHttpUpdateModel>(entity);

            model.EndDate = entity.EndDate.AddDays(-1);

            var jobHttp = await _jobHttpRepository.GetByJob(id);

            model.Url         = jobHttp.Url;
            model.AuthType    = jobHttp.AuthType;
            model.ContentType = jobHttp.ContentType;
            model.Method      = jobHttp.Method;
            model.Parameters  = jobHttp.Parameters;
            model.Token       = jobHttp.Token;
            if (jobHttp.Headers.NotNull())
            {
                model.HeaderList = JsonSerializer.Deserialize <List <KeyValuePair <string, string> > >(jobHttp.Headers);
            }

            return(ResultModel.Success(model));
        }
Exemple #2
0
        public override async Task Execute(ITaskExecutionContext context)
        {
            var idData = context.JobExecutionContext.JobDetail.JobDataMap["id"];

            if (idData == null)
            {
                await Logger.Error("任务编号不存在");

                return;
            }

            var id = Guid.Parse(idData.ToString());

            if (id == Guid.Empty)
            {
                await Logger.Error("任务编号不存在");

                return;
            }

            var job = await _repository.GetAsync(id);

            if (job == null)
            {
                await Logger.Error("任务不存在");

                return;
            }
            if (job.JobType != JobType.Http)
            {
                await Logger.Error("不是Http类型的Job");

                return;
            }

            var jobHttp = await _httpRepository.GetByJob(id);

            if (jobHttp == null)
            {
                await Logger.Error("不是Http类型的Job");

                return;
            }

            if (jobHttp.Url.IsNull())
            {
                await Logger.Error("URL为空");

                return;
            }

            var client = _clientFactory.CreateClient();

            //设置请求头
            if (jobHttp.Headers.NotNull())
            {
                var headers = JsonSerializer.Deserialize <List <KeyValuePair <string, string> > >(jobHttp.Headers);
                if (headers.Any())
                {
                    foreach (var header in headers)
                    {
                        client.DefaultRequestHeaders.Add(header.Key, header.Value);
                    }
                }
            }

            //设置认证方式
            if (jobHttp.AuthType == AuthType.Jwt)
            {
                if (jobHttp.Token.IsNull())
                {
                    await Logger.Error("令牌为空");

                    return;
                }

                //jwt
                client.DefaultRequestHeaders.Add("Authorization", "Bearer " + jobHttp.Token);
            }

            HttpResponseMessage responseMessage;

            //GET请求
            if (jobHttp.Method == HttpMethod.GET)
            {
                responseMessage = await client.GetAsync(jobHttp.Url);
            }
            //DELETE删除
            else if (jobHttp.Method == HttpMethod.DELETE)
            {
                responseMessage = await client.DeleteAsync(jobHttp.Url);
            }
            //Post和Put请求
            else
            {
                //设置参数
                var content = new StringContent(jobHttp.Parameters);
                content.Headers.ContentType = new MediaTypeHeaderValue(jobHttp.ContentType.ToDescription());
                responseMessage             = jobHttp.Method == HttpMethod.POST ? await client.PostAsync(jobHttp.Url, content) : await client.PutAsync(jobHttp.Url, content);
            }

            await Logger.Info(await responseMessage.Content.ReadAsStringAsync());
        }