Beispiel #1
0
 /// <summary>
 /// Convert to service model
 /// </summary>
 /// <returns></returns>
 public static JobInfoQueryModel ToServiceModel(
     this JobInfoQueryApiModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new JobInfoQueryModel {
         Name = model.Name,
         JobConfigurationType = model.JobConfigurationType,
         Status = (Agent.Framework.Models.JobStatus?)model.Status
     });
 }
        public async Task <JobInfoListApiModel> QueryJobsAsync(
            [FromBody] JobInfoQueryApiModel query,
            [FromQuery] int?pageSize)
        {
            if (Request.Headers.ContainsKey(HttpHeader.MaxItemCount))
            {
                pageSize = int.Parse(Request.Headers[HttpHeader.MaxItemCount]
                                     .FirstOrDefault());
            }
            var result = await _jobManager.QueryJobsAsync(
                query.ToServiceModel(), pageSize);

            return(result.ToApiModel());
        }
        /// <inheritdoc/>
        public async Task <JobInfoListApiModel> QueryJobsAsync(JobInfoQueryApiModel query,
                                                               int?pageSize, CancellationToken ct)
        {
            var request = _httpClient.NewRequest($"{_serviceUri}/v2/jobs",
                                                 _resourceId);

            if (pageSize != null)
            {
                request.AddHeader(HttpHeader.MaxItemCount, pageSize.ToString());
            }
            request.SetContent(query);
            var response = await _httpClient.PostAsync(request, ct).ConfigureAwait(false);

            response.Validate();
            return(response.GetContent <JobInfoListApiModel>());
        }
        /// <summary>
        /// List all jobs
        /// </summary>
        /// <param name="service"></param>
        /// <param name="query"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        public static async Task <IEnumerable <JobInfoApiModel> > QueryAllJobsAsync(
            this IPublisherJobServiceApi service, JobInfoQueryApiModel query, CancellationToken ct = default)
        {
            var jobs   = new List <JobInfoApiModel>();
            var result = await service.QueryJobsAsync(query, null, ct);

            if (result.Jobs != null)
            {
                jobs.AddRange(result.Jobs);
            }
            while (result.ContinuationToken != null)
            {
                result = await service.ListJobsAsync(result.ContinuationToken, null, ct);

                if (result.Jobs != null)
                {
                    jobs.AddRange(result.Jobs);
                }
            }
            return(jobs);
        }