Skip to content

Commit

Permalink
Merge pull request #124 from octokit/i-left-my-heart-in-async-await
Browse files Browse the repository at this point in the history
I left my heart in async await
  • Loading branch information
shiftkey committed Oct 31, 2013
2 parents f41a081 + 70bb3bd commit 7bfbb72
Show file tree
Hide file tree
Showing 14 changed files with 94 additions and 86 deletions.
2 changes: 1 addition & 1 deletion Octokit/Authentication/Authenticator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public async Task Apply(IRequest request)
{
Ensure.ArgumentNotNull(request, "request");

var credentials = await CredentialStore.GetCredentials() ?? Credentials.Anonymous;
var credentials = await CredentialStore.GetCredentials().ConfigureAwait(false) ?? Credentials.Anonymous;
authenticators[credentials.AuthenticationType].Authenticate(request, credentials);
}

Expand Down
4 changes: 2 additions & 2 deletions Octokit/Clients/ApiPagination.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ public async Task<IReadOnlyList<T>> GetAllPages<T>(Func<Task<IReadOnlyPagedColle
{
Ensure.ArgumentNotNull(getFirstPage, "getFirstPage");

var page = await getFirstPage();
var page = await getFirstPage().ConfigureAwait(false);
var allItems = new List<T>(page);
while ((page = await page.GetNextPage()) != null)
while ((page = await page.GetNextPage().ConfigureAwait(false)) != null)
{
allItems.AddRange(page);
}
Expand Down
3 changes: 2 additions & 1 deletion Octokit/Clients/AssigneesClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ public async Task<bool> CheckAssignee(string owner, string name, string assignee

try
{
var response = await Connection.GetAsync<object>(ApiUrls.CheckAssignee(owner, name, assignee), null, null);
var response = await Connection.GetAsync<object>(ApiUrls.CheckAssignee(owner, name, assignee), null, null)
.ConfigureAwait(false);
if (response.StatusCode != HttpStatusCode.NotFound && response.StatusCode != HttpStatusCode.NoContent)
{
throw new ApiException("Invalid Status Code returned. Expected a 204 or a 404", response.StatusCode);
Expand Down
4 changes: 2 additions & 2 deletions Octokit/Clients/AuthorizationsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ public AuthorizationsClient(IApiConnection apiConnection) : base(apiConnection)
/// </exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
/// <returns>A list of <see cref="Authorization"/>s.</returns>
public async Task<IReadOnlyList<Authorization>> GetAll()
public Task<IReadOnlyList<Authorization>> GetAll()
{
return await ApiConnection.GetAll<Authorization>(ApiUrls.Authorizations());
return ApiConnection.GetAll<Authorization>(ApiUrls.Authorizations());
}

/// <summary>
Expand Down
47 changes: 25 additions & 22 deletions Octokit/Clients/IssuesClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ public IssuesClient(IApiConnection apiConnection) : base(apiConnection)
/// <param name="name">The name of the repository</param>
/// <param name="number">The issue number</param>
/// <returns></returns>
public async Task<Issue> Get(string owner, string name, int number)
public Task<Issue> Get(string owner, string name, int number)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");

return await ApiConnection.Get<Issue>(ApiUrls.Issue(owner, name, number));
return ApiConnection.Get<Issue>(ApiUrls.Issue(owner, name, number));
}

/// <summary>
Expand All @@ -40,9 +40,9 @@ public async Task<Issue> Get(string owner, string name, int number)
/// http://developer.github.com/v3/issues/#list-issues
/// </remarks>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetAllForCurrent()
public Task<IReadOnlyList<Issue>> GetAllForCurrent()
{
return await GetAllForCurrent(new IssueRequest());
return GetAllForCurrent(new IssueRequest());
}

/// <summary>
Expand All @@ -54,11 +54,11 @@ public async Task<IReadOnlyList<Issue>> GetAllForCurrent()
/// </remarks>
/// <param name="request">Used to filter and sort the list of issues returned</param>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetAllForCurrent(IssueRequest request)
public Task<IReadOnlyList<Issue>> GetAllForCurrent(IssueRequest request)
{
Ensure.ArgumentNotNull(request, "request");

return await ApiConnection.GetAll<Issue>(ApiUrls.Issues(), request.ToParametersDictionary());
return ApiConnection.GetAll<Issue>(ApiUrls.Issues(), request.ToParametersDictionary());
}

/// <summary>
Expand All @@ -70,9 +70,9 @@ public async Task<IReadOnlyList<Issue>> GetAllForCurrent(IssueRequest request)
/// http://developer.github.com/v3/issues/#list-issues
/// </remarks>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetAllForOwnedAndMemberRepositories()
public Task<IReadOnlyList<Issue>> GetAllForOwnedAndMemberRepositories()
{
return await GetAllForOwnedAndMemberRepositories(new IssueRequest());
return GetAllForOwnedAndMemberRepositories(new IssueRequest());
}

/// <summary>
Expand All @@ -83,11 +83,11 @@ public async Task<IReadOnlyList<Issue>> GetAllForOwnedAndMemberRepositories()
/// </remarks>
/// <param name="request">Used to filter and sort the list of issues returned</param>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetAllForOwnedAndMemberRepositories(IssueRequest request)
public Task<IReadOnlyList<Issue>> GetAllForOwnedAndMemberRepositories(IssueRequest request)
{
Ensure.ArgumentNotNull(request, "request");

return await ApiConnection.GetAll<Issue>(ApiUrls.IssuesForOwnedAndMember(),
return ApiConnection.GetAll<Issue>(ApiUrls.IssuesForOwnedAndMember(),
request.ToParametersDictionary());
}

Expand All @@ -99,9 +99,9 @@ public async Task<IReadOnlyList<Issue>> GetAllForOwnedAndMemberRepositories(Issu
/// </remarks>
/// <param name="organization">The name of the organization</param>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetAllForOrganization(string organization)
public Task<IReadOnlyList<Issue>> GetAllForOrganization(string organization)
{
return await GetAllForOrganization(organization, new IssueRequest());
return GetAllForOrganization(organization, new IssueRequest());
}

/// <summary>
Expand All @@ -113,9 +113,12 @@ public async Task<IReadOnlyList<Issue>> GetAllForOrganization(string organizatio
/// <param name="organization">The name of the organization</param>
/// <param name="request">Used to filter and sort the list of issues returned</param>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetAllForOrganization(string organization, IssueRequest request)
public Task<IReadOnlyList<Issue>> GetAllForOrganization(string organization, IssueRequest request)
{
return await ApiConnection.GetAll<Issue>(ApiUrls.Issues(organization), request.ToParametersDictionary());
Ensure.ArgumentNotNullOrEmptyString(organization, "organization");
Ensure.ArgumentNotNull(request, "request");

return ApiConnection.GetAll<Issue>(ApiUrls.Issues(organization), request.ToParametersDictionary());
}

/// <summary>
Expand All @@ -127,9 +130,9 @@ public async Task<IReadOnlyList<Issue>> GetAllForOrganization(string organizatio
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetForRepository(string owner, string name)
public Task<IReadOnlyList<Issue>> GetForRepository(string owner, string name)
{
return await GetForRepository(owner, name, new RepositoryIssueRequest());
return GetForRepository(owner, name, new RepositoryIssueRequest());
}

/// <summary>
Expand All @@ -142,14 +145,14 @@ public async Task<IReadOnlyList<Issue>> GetForRepository(string owner, string na
/// <param name="name">The name of the repository</param>
/// <param name="request">Used to filter and sort the list of issues returned</param>
/// <returns></returns>
public async Task<IReadOnlyList<Issue>> GetForRepository(string owner, string name,
public Task<IReadOnlyList<Issue>> GetForRepository(string owner, string name,
RepositoryIssueRequest request)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNull(request, "request");

return await ApiConnection.GetAll<Issue>(ApiUrls.Issues(owner, name), request.ToParametersDictionary());
return ApiConnection.GetAll<Issue>(ApiUrls.Issues(owner, name), request.ToParametersDictionary());
}

/// <summary>
Expand All @@ -161,13 +164,13 @@ public async Task<IReadOnlyList<Issue>> GetForRepository(string owner, string na
/// <param name="name">The name of the repository</param>
/// <param name="newIssue">A <see cref="NewIssue"/> instance describing the new issue to create</param>
/// <returns></returns>
public async Task<Issue> Create(string owner, string name, NewIssue newIssue)
public Task<Issue> Create(string owner, string name, NewIssue newIssue)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNull(newIssue, "newIssue");

return await ApiConnection.Post<Issue>(ApiUrls.Issues(owner, name), newIssue);
return ApiConnection.Post<Issue>(ApiUrls.Issues(owner, name), newIssue);
}

/// <summary>
Expand All @@ -181,13 +184,13 @@ public async Task<Issue> Create(string owner, string name, NewIssue newIssue)
/// <param name="issueUpdate">An <see cref="IssueUpdate"/> instance describing the changes to make to the issue
/// </param>
/// <returns></returns>
public async Task<Issue> Update(string owner, string name, int number, IssueUpdate issueUpdate)
public Task<Issue> Update(string owner, string name, int number, IssueUpdate issueUpdate)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNull(issueUpdate, "issueUpdate");

return await ApiConnection.Patch<Issue>(ApiUrls.Issue(owner, name, number), issueUpdate);
return ApiConnection.Patch<Issue>(ApiUrls.Issue(owner, name, number), issueUpdate);
}
}
}
6 changes: 4 additions & 2 deletions Octokit/Clients/MiscellaneousClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ public MiscellaneousClient(IConnection connection)
public async Task<IReadOnlyDictionary<string, Uri>> GetEmojis()
{
var endpoint = new Uri("emojis", UriKind.Relative);
var response = await _connection.GetAsync<Dictionary<string, string>>(endpoint, null, null);
var response = await _connection.GetAsync<Dictionary<string, string>>(endpoint, null, null)
.ConfigureAwait(false);
return new ReadOnlyDictionary<string, Uri>(
response.BodyAsObject.ToDictionary(kvp => kvp.Key, kvp => new Uri(kvp.Value)));
}
Expand All @@ -51,7 +52,8 @@ public async Task<IReadOnlyDictionary<string, Uri>> GetEmojis()
public async Task<string> RenderRawMarkdown(string markdown)
{
var endpoint = new Uri("markdown/raw", UriKind.Relative);
var response = await _connection.PostAsync<string>(endpoint, markdown, "text/html", "text/plain");
var response = await _connection.PostAsync<string>(endpoint, markdown, "text/html", "text/plain")
.ConfigureAwait(false);
return response.Body;
}
}
Expand Down
2 changes: 1 addition & 1 deletion Octokit/Clients/RepositoriesClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ public async Task<Readme> GetReadme(string owner, string name)
Ensure.ArgumentNotNullOrEmptyString(name, "name");

var endpoint = "repos/{0}/{1}/readme".FormatUri(owner, name);
var readmeInfo = await ApiConnection.Get<ReadmeResponse>(endpoint, null);
var readmeInfo = await ApiConnection.Get<ReadmeResponse>(endpoint, null).ConfigureAwait(false);
return new Readme(readmeInfo, ApiConnection);
}

Expand Down
4 changes: 2 additions & 2 deletions Octokit/Helpers/ApiExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ public static Task<IResponse<string>> GetHtml(this IConnection connection, Uri u
return connection.GetHtml(uri, null);
}

public static async Task<IResponse<T>> GetAsync<T>(this IConnection connection, Uri uri)
public static Task<IResponse<T>> GetAsync<T>(this IConnection connection, Uri uri)
{
Ensure.ArgumentNotNull(connection, "connection");
Ensure.ArgumentNotNull(uri, "uri");

return await connection.GetAsync<T>(uri, null, null);
return connection.GetAsync<T>(uri, null, null);
}
}
}
9 changes: 5 additions & 4 deletions Octokit/Helpers/AuthorizationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,26 @@ Func<TwoFactorRequiredException, Task<TwoFactorChallengeResult>> twoFactorChalle
TwoFactorRequiredException twoFactorException = null;
try
{
return await authorizationsClient.GetOrCreateApplicationAuthentication(clientId, clientSecret, newAuthorization);
return await authorizationsClient.GetOrCreateApplicationAuthentication(clientId, clientSecret, newAuthorization)
.ConfigureAwait(false);
}
catch (TwoFactorRequiredException exception)
{
twoFactorException = exception;
}
var twoFactorChallengeResult = await twoFactorChallengeHandler(twoFactorException);
var twoFactorChallengeResult = await twoFactorChallengeHandler(twoFactorException).ConfigureAwait(false);

return await (twoFactorChallengeResult.ResendCodeRequested
? authorizationsClient.GetOrCreateApplicationAuthentication(
clientId,
clientSecret,
newAuthorization,
twoFactorChallengeHandler)
twoFactorChallengeHandler).ConfigureAwait(false)
: authorizationsClient.GetOrCreateApplicationAuthentication(
clientId,
clientSecret,
newAuthorization,
twoFactorChallengeResult.AuthenticationCode));
twoFactorChallengeResult.AuthenticationCode).ConfigureAwait(false));
}
}
}
Loading

0 comments on commit 7bfbb72

Please sign in to comment.