/// <summary> /// Creates a new goal or updates the existing goal (in minutes) for a Defintion in a Channel. /// </summary> /// <param name="channel">Name of channel. For eg: .Net Core 5 Dev</param> /// <param name="definitionId">Azure DevOps DefinitionId.</param> /// <param name="minutes">Goal in minutes for a Definition in a Channel.</param> /// <returns>Async task.</returns> public Task <Goal> SetGoalAsync(string channel, int definitionId, int minutes) { var jsonData = new GoalRequestJson(minutes: minutes); return(_barClient.Goal.CreateAsync(body: jsonData, channelName: channel, definitionId: definitionId)); }
public async Task <Models.Goal> CreateAsync( GoalRequestJson body, string channelName, int definitionId, CancellationToken cancellationToken = default ) { if (body == default(GoalRequestJson)) { throw new ArgumentNullException(nameof(body)); } if (string.IsNullOrEmpty(channelName)) { throw new ArgumentNullException(nameof(channelName)); } if (definitionId == default(int)) { throw new ArgumentNullException(nameof(definitionId)); } const string apiVersion = "2019-01-16"; var _baseUri = Client.Options.BaseUri; var _url = new RequestUriBuilder(); _url.Reset(_baseUri); _url.AppendPath( "/api/goals/channelName/{channelName}/definitionId/{definitionId}".Replace("{channelName}", Uri.EscapeDataString(Client.Serialize(channelName))).Replace("{definitionId}", Uri.EscapeDataString(Client.Serialize(definitionId))), false); _url.AppendQuery("api-version", Client.Serialize(apiVersion)); using (var _req = Client.Pipeline.CreateRequest()) { _req.Uri = _url; _req.Method = RequestMethod.Put; if (body != default(GoalRequestJson)) { _req.Content = RequestContent.Create(Encoding.UTF8.GetBytes(Client.Serialize(body))); _req.Headers.Add("Content-Type", "application/json; charset=utf-8"); } using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false)) { if (_res.Status < 200 || _res.Status >= 300) { await OnCreateFailed(_req, _res).ConfigureAwait(false); } if (_res.ContentStream == null) { await OnCreateFailed(_req, _res).ConfigureAwait(false); } using (var _reader = new StreamReader(_res.ContentStream)) { var _content = await _reader.ReadToEndAsync().ConfigureAwait(false); var _body = Client.Deserialize <Models.Goal>(_content); return(_body); } } } }