private async void AcceptAmazonCredsButton_Clicked(object sender, EventArgs e) { AmazonS3Config config = new AmazonS3Config( AccessID, SecretKey, Region.Name, BucketName, Path); Dictionary <string, string> createParams = config.ToDictionary(); createParams.Add("ProviderKey", CloudStorageProviderType.Name); _cloudStorageProvider = CloudStorageProviderBase.Create( App.AppLogger.Logger, createParams); _cloudProvider = CloudProviders.Instance.AddProvider( ProviderType.AuthenticationType.Amazon, _cloudStorageProvider.TypeName, config.AccessID, config.ToString(), true); CloudProviderResponse <CloudStorageProviderUserBase> getAccountUserResponse = await _cloudStorageProvider.GetAccountUser(); if (getAccountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success) { CloudStorageAccountUser = getAccountUserResponse.Result; IsAuthenticated = true; AmazonCredInput.IsVisible = false; } }
private async Task ListFilesFromProvider() { IEnumerable <CloudProvider> providers = CloudProviders.Instance.Providers.Where(cp => cp.ID == _providerID); if (providers.Any()) { CloudStorageProviderBase storageProvider = null; CloudProvider provider = providers.First(); switch (provider.AuthType) { case ProviderType.AuthenticationType.OAuth: { string providerKey = (string)((App)App.Current).GetProviderValue(_providerID, "ProviderKey"); string accessToken = ((App)App.Current).GetCredential(_providerID); Dictionary <string, string> createParams = new Dictionary <string, string>(); createParams.Add("AuthType", "OAuth"); createParams.Add("ProviderKey", providerKey); createParams.Add("AccessToken", accessToken); storageProvider = CloudStorageProviderBase.Create( App.AppLogger.Logger, createParams); break; } case ProviderType.AuthenticationType.Amazon: { string providerKey = (string)((App)App.Current).GetProviderValue(_providerID, "ProviderKey"); string secret = ((App)App.Current).GetCredential(_providerID); JObject s3ConfigJSON = JObject.Parse(secret); AmazonS3Config s3Config = AmazonS3Config.FromJSON(s3ConfigJSON); Dictionary <string, string> createParams = s3Config.ToDictionary(); createParams.Add("ProviderKey", providerKey); storageProvider = CloudStorageProviderBase.Create( App.AppLogger.Logger, createParams); break; } default: { throw new NotSupportedException(String.Format("Cloud provider authentication type '{0}' is not supported.", provider.AuthType)); } } CloudProviderResponse <List <CloudStorageProviderFileBase> > response = await storageProvider.ListFiles(); if (response.ResponseValue == CloudProviderResponse <List <CloudStorageProviderFileBase> > .Response.Success) { CreateTreeNodes(response.Result); } } }
public async void OnClosePopup(View item, object parameter) { if (item is OAuthAuthenticateView) { if (parameter != null) { try { Dictionary <string, object> parameters = parameter as Dictionary <string, object>; string accessToken = AuthenticationHelpers.CompleteOAuthAutentication(parameters); Dictionary <string, string> createParams = new Dictionary <string, string>(); createParams.Add("AuthType", "OAuth"); createParams.Add("ProviderKey", (string)parameters["ProviderID"]); createParams.Add("AccessToken", accessToken); _cloudStorageProvider = CloudStorageProviderBase.Create( App.AppLogger.Logger, createParams); CloudProviderResponse <CloudStorageProviderUserBase> getAccountUserResponse = await _cloudStorageProvider.GetAccountUser(); if (getAccountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success) { _cloudStorageAccountUser = getAccountUserResponse.Result; _accessToken = accessToken; IsAuthenticated = true; } else { _cloudStorageProvider = null; IsAuthenticated = false; } IEnumerable <ProviderType> matchingTypes = SupportedProviderTypes.SupportedTypes.Where(pt => pt.Name == _cloudStorageProvider.TypeName); if (matchingTypes.Any()) { _cloudStorageProviderType = matchingTypes.First(); } IsConnecting = false; NotifyPropertyChanged("CloudStorageProviderType"); } finally { IsConnecting = false; } } else { IsConnecting = false; DeselectProviderType(); } } else if (item is AmazonS3SetupView) { if (parameter != null) { try { AmazonS3Config s3Config = (AmazonS3Config)parameter; Dictionary <string, string> createParams = new Dictionary <string, string>(); createParams.Add("ProviderKey", "AmazonS3"); createParams.Add("AccessID", s3Config.AccessID); createParams.Add("SecretKey", s3Config.SecretKey); createParams.Add("Region", s3Config.Region); createParams.Add("BucketName", s3Config.BucketName); createParams.Add("Path", s3Config.Path); _cloudStorageProvider = CloudStorageProviderBase.Create( App.AppLogger.Logger, createParams); CloudProviderResponse <CloudStorageProviderUserBase> getAccountUserResponse = await _cloudStorageProvider.GetAccountUser(); if (getAccountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success) { _cloudStorageAccountUser = getAccountUserResponse.Result; _s3Config = s3Config; IsAuthenticated = true; } else { _cloudStorageProvider = null; IsAuthenticated = false; } IEnumerable <ProviderType> matchingTypes = SupportedProviderTypes.SupportedTypes.Where(pt => pt.Name == _cloudStorageProvider.TypeName); if (matchingTypes.Any()) { _cloudStorageProviderType = matchingTypes.First(); } IsConnecting = false; NotifyPropertyChanged("CloudStorageProviderType"); } finally { IsConnecting = false; } } else { IsConnecting = false; DeselectProviderType(); } } }
public async Task <bool> CheckCredentialAccessAsync() { Dictionary <string, string> cred = devoctomy.cachy.Framework.Native.Native.PasswordVault.GetCredential(ID); _credentialError = (cred == null); if (!_credentialError) { string secret = cred["Password"]; switch (AuthType) { case ProviderType.AuthenticationType.OAuth: { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("AuthType", "OAuth"); parameters.Add("ProviderKey", ProviderKey); parameters.Add("AccessToken", secret); CloudStorageProviderBase provider = CloudStorageProviderBase.Create( App.AppLogger.Logger, parameters); try { CloudProviderResponse <CloudStorageProviderUserBase> accountUserResponse = await provider.GetAccountUser(); _credentialError = !(accountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success); _username = String.Empty; } catch (Exception) { _credentialError = true; } break; } case ProviderType.AuthenticationType.Amazon: { JObject s3ConfigJSON = JObject.Parse(secret); AmazonS3Config s3Config = AmazonS3Config.FromJSON(s3ConfigJSON); Dictionary <string, string> parameters = s3Config.ToDictionary(); parameters.Add("ProviderKey", ProviderKey); CloudStorageProviderBase provider = CloudStorageProviderBase.Create( App.AppLogger.Logger, parameters); try { CloudProviderResponse <CloudStorageProviderUserBase> accountUserResponse = await provider.GetAccountUser(); _credentialError = !(accountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success); _username = String.Empty; } catch (Exception) { _credentialError = true; } break; } } } NotifyPropertyChanged("CredentialError"); NotifyPropertyChanged("UserName"); return(_credentialError); }
private async void SetupCloudProvider() { if (CloudStorageProviderType == null) { return; } switch (CloudStorageProviderType.AuthType) { case ProviderType.AuthenticationType.OAuth: { try { IsConnecting = true; _forcePage = CloudProviderPage; devoctomy.cachy.Framework.Native.Native.WebUtility.ClearInAppBrowserCache(); Dictionary <string, object> beginParams = await AuthenticationHelpers.BeginOAuthAuthentication(CloudStorageProviderType.Name); string sessionID = (string)beginParams["SessionID"]; Uri authoriseURI = null; switch (CloudStorageProviderType.Name) { case "Dropbox": { string redirectURI = Uri.EscapeDataString("https://cachywebfunctions20190202044830.azurewebsites.net/api/DropboxOAuthRedirect"); string uri = String.Format( "https://www.dropbox.com/oauth2/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}", "bllblee6oqr9q22", redirectURI, sessionID); authoriseURI = new Uri(uri); break; } case "OneDrive": { string redirectURI = Uri.EscapeDataString("https://cachywebfunctions20190202044830.azurewebsites.net/api/OneDriveOAuthRedirect"); string uri = String.Format( "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?response_type=code&client_id={0}&scope={1}&redirect_uri={2}&state={3}", "28cb64d4-f3a2-42db-8889-b760e2163496", Uri.EscapeDataString("https://graph.microsoft.com/Files.ReadWrite.AppFolder,https://graph.microsoft.com/User.Read"), redirectURI, sessionID); authoriseURI = new Uri(uri); break; } default: { //Uknown OAuth cloud provider type! return; } } OAuthWebView.Source = authoriseURI; OAuthWebView.IsVisible = true; string continueResponseString = await AuthenticationHelpers.ContinueOAuthAuthentication(CloudStorageProviderType.Name, sessionID); Dictionary <string, object> continueParameters = new Dictionary <string, object>(); continueParameters.Add("ProviderID", CloudStorageProviderType.Name); continueParameters.Add("AuthResponse", continueResponseString); continueParameters.Add("RSA", beginParams["RSA"]); string accessToken = AuthenticationHelpers.CompleteOAuthAutentication(continueParameters); Dictionary <string, string> createParams = new Dictionary <string, string>(); createParams.Add("AuthType", "OAuth"); createParams.Add("ProviderKey", (string)continueParameters["ProviderID"]); createParams.Add("AccessToken", accessToken); _cloudStorageProvider = CloudStorageProviderBase.Create( App.AppLogger.Logger, createParams); CloudProviderResponse <CloudStorageProviderUserBase> getAccountUserResponse = await _cloudStorageProvider.GetAccountUser(); if (getAccountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success) { CloudStorageAccountUser = getAccountUserResponse.Result; switch (CloudStorageProviderType.AuthType) { case ProviderType.AuthenticationType.OAuth: { _cloudProvider = CloudProviders.Instance.AddProvider( ProviderType.AuthenticationType.OAuth, _cloudStorageProvider.TypeName, CloudStorageAccountUser.Email, accessToken, true); break; } } IsAuthenticated = true; } else { CloudStorageAccountUser = null; IsAuthenticated = false; } } catch (Exception ex) { //log exception here } finally { IsConnecting = false; _forcePage = null; OAuthWebView.IsVisible = false; } break; } case ProviderType.AuthenticationType.Amazon: { AmazonCredInput.IsVisible = true; break; } } }