Index: Src/GoogleApis.Auth.WP81/OAuth2/AuthorizationCodeWPInstalledApp.cs =================================================================== new file mode 100644 --- /dev/null +++ b/Src/GoogleApis.Auth.WP81/OAuth2/AuthorizationCodeWPInstalledApp.cs @@ -0,0 +1,75 @@ +/* +Copyright 2014 Google Inc + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +using System; +using System.Threading; +using System.Threading.Tasks; + +using Google.Apis.Auth.OAuth2.Flows; + +namespace Google.Apis.Auth.OAuth2 +{ + /// + /// OAuth 2.0 authorization code flow for a Windows Phone 8.1 installed application that persists end-user + /// credentials. + /// + /// This installed app class uses an internal with a + /// for retrieving the authorization code. + /// + /// + public sealed class AuthorizationCodeWPInstalledApp : IAuthorizationCodeInstalledApp + { + private readonly IAuthorizationCodeInstalledApp innerInstallApp; + + /// + /// Constructs a new authorization code for Windows Store application targeting an installed application flow. + /// + /// An authorization code flow initializer. + public AuthorizationCodeWPInstalledApp(AuthorizationCodeFlow.Initializer authorizationCodeFlowInitializer) + { + innerInstallApp = new AuthorizationCodeInstalledApp( + new AuthorizationCodeFlow(authorizationCodeFlowInitializer), new AuthorizationCodeBroker()); + } + + /// + /// Constructs a new authorization code for Windows Store application targeting an installed application flow. + /// + /// An authorization code flow. + public AuthorizationCodeWPInstalledApp(IAuthorizationCodeFlow flow) + { + innerInstallApp = new AuthorizationCodeInstalledApp(flow, new AuthorizationCodeBroker()); + } + + #region IAuthorizationCodeInstalledApp Members + + public IAuthorizationCodeFlow Flow + { + get { return innerInstallApp.Flow; } + } + + public ICodeReceiver CodeReceiver + { + get { return innerInstallApp.CodeReceiver; } + } + + public async Task AuthorizeAsync(string userId, CancellationToken taskCancellationToken) + { + return await innerInstallApp.AuthorizeAsync(userId, taskCancellationToken).ConfigureAwait(false); + } + + #endregion + } +}