using System;
using System.Reactive.Threading.Tasks;
namespace Octokit.Reactive
{
public class ObservableOauthClient : IObservableOauthClient
{
readonly IGitHubClient _client;
public ObservableOauthClient(IGitHubClient client)
{
Ensure.ArgumentNotNull(client, "client");
_client = client;
}
///
/// Gets the URL used in the first step of the web flow. The Web application should redirect to this URL.
///
/// Parameters to the Oauth web flow login url
///
public Uri GetGitHubLoginUrl(OauthLoginRequest request)
{
return _client.Oauth.GetGitHubLoginUrl(request);
}
///
/// Makes a request to get an access token using the code returned when GitHub.com redirects back from the URL
/// GitHub login url to the application.
///
///
/// If the user accepts your request, GitHub redirects back to your site with a temporary code in a code
/// parameter as well as the state you provided in the previous step in a state parameter. If the states don’t
/// match, the request has been created by a third party and the process should be aborted. Exchange this for
/// an access token using this method.
///
///
///
public IObservable CreateAccessToken(OauthTokenRequest request)
{
return _client.Oauth.CreateAccessToken(request).ToObservable();
}
}
}