Пример #1
0
        /// <summary>
        /// Queries a ticket from Azure DevOps by it's id.
        /// </summary>
        /// <returns>TicketModel representing the ticket-results of the Query.</returns>
        public static async Task <TicketModel> QueryTicketAsync(long id)
        {
            using (var httpClient = CreateClient())
            {
                httpClient.SetBaseUri("wit");

                var queryParams = $"fields={string.Join(",", "System.Title", "System.WorkItemType", "System.State")}&$expand=links";
                var result      = JToken.Parse(await httpClient.SendRequestAsync($"workitems/{id}", queryParams));

                return(TicketModel.FromJToken(result));
            }
        }
Пример #2
0
        /// <summary>
        /// Creates a ticket in Azure DevOps.
        /// </summary>
        /// <param name="createTicketModel">The ticket to create.</param>
        /// <returns>A TicketModel that describes the created ticket.</returns>
        public static async Task <TicketModel> CreateTicketAsync(ICreateTicketModel createTicketModel)
        {
            if (createTicketModel == null)
            {
                throw new ArgumentNullException(nameof(createTicketModel), "The passed createTicketModel must not be null.");
            }

            var areaPath = CloudConfigurationManager.GetSetting("AzureReporting.AreaPath") ?? throw new Exception("Configuration: AzureReporting.AreaPath must not be empty.");

            using (var httpClient = CreateClient())
            {
                httpClient.SetBaseUri("wit");

                var patchOperations = createTicketModel.ToPatchOperations().Concat(new[]
                {
                    new PatchOperation("add", "/fields/System.AreaPath", areaPath)
                });
                var result = JToken.Parse(await httpClient.SendRequestAsync($"workitems{createTicketModel.GetUriPath()}", null, "PATCH", patchOperations, "application/json-patch+json"));

                return(TicketModel.FromJToken(result));
            }
        }