From 0811d4cfd3b41077712cd8c8561a7d4243d7b218 Mon Sep 17 00:00:00 2001 From: Haacked Date: Tue, 4 Aug 2015 20:43:07 -0700 Subject: [PATCH] :art: Replace tail recursive call with loop --- Octokit/Http/ApiConnection.cs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Octokit/Http/ApiConnection.cs b/Octokit/Http/ApiConnection.cs index 9b1656f5..18991d3a 100644 --- a/Octokit/Http/ApiConnection.cs +++ b/Octokit/Http/ApiConnection.cs @@ -434,21 +434,22 @@ namespace Octokit /// Thrown when an API error occurs. public async Task GetQueuedOperation(Uri uri, CancellationToken cancellationToken) { - Ensure.ArgumentNotNull(uri, "uri"); - - var response = await Connection.GetResponse(uri, cancellationToken); - - if (response.HttpResponse.StatusCode == HttpStatusCode.Accepted) + while (true) { - return await GetQueuedOperation(uri, cancellationToken); - } + Ensure.ArgumentNotNull(uri, "uri"); - if (response.HttpResponse.StatusCode == HttpStatusCode.OK) - { - return response.Body; + var response = await Connection.GetResponse(uri, cancellationToken); + + switch (response.HttpResponse.StatusCode) + { + case HttpStatusCode.Accepted: + continue; + case HttpStatusCode.OK: + return response.Body; + } + + throw new ApiException("Queued Operations expect status codes of Accepted or OK.", response.HttpResponse.StatusCode); } - throw new ApiException("Queued Operations expect status codes of Accepted or OK.", - response.HttpResponse.StatusCode); } async Task> GetPage(