/// <summary> /// Get issue count from the server. This operation may be retried internally and take a while to complete. /// </summary> /// <remarks>Uses the REST API <a href="https://www.jetbrains.com/help/youtrack/standalone/Get-a-Number-of-Issues.html">Get a Number of Issues</a>.</remarks> /// <param name="filter">Apply a filter to issues.</param> /// <returns>The number of <see cref="Issue" /> that match the specified filter.</returns> /// <exception cref="T:System.Net.HttpRequestException">When the call to the remote YouTrack server instance failed.</exception> public async Task <long> GetIssueCount(string filter = null) { var query = !string.IsNullOrEmpty(filter) ? $"filter={WebUtility.UrlEncode(filter)}" : string.Empty; var client = await _connection.GetAuthenticatedHttpClient(); var retryPolicy = new LinearRetryPolicy <long>(async() => { var response = await client.GetAsync($"rest/issue/count?{query}"); if (response.StatusCode == HttpStatusCode.NotFound) { return(default(long)); } response.EnsureSuccessStatusCode(); return(JsonConvert.DeserializeObject <SubValue <long> >( await response.Content.ReadAsStringAsync()).Value); }, result => Task.FromResult(result < 0), TimeSpan.FromSeconds(1), 30); return(await retryPolicy.Execute()); }