Пример #1
0
        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);
                }
            }
        }
Пример #3
0
        public async void OnClosePopup(View item, object parameter)
        {
            if (item is OAuthAuthenticateView)
            {
                if (parameter != null)
                {
                    Dictionary <string, object> parameters = parameter as Dictionary <string, object>;
                    string accessToken = AuthenticationHelpers.CompleteOAuthAutentication(parameters);
                    CloudStorageProviderBase cloudStorageProvider = CloudStorageProviderBase.CreateOAuth <DropboxStorageProvider>(App.AppLogger.Logger, accessToken);
                    CloudProviderResponse <CloudStorageProviderUserBase> getAccountUserResponse = await cloudStorageProvider.GetAccountUser();

                    if (getAccountUserResponse.ResponseValue == CloudProviderResponse <CloudStorageProviderUserBase> .Response.Success)
                    {
                        await CloudProviders.Instance.UpdateProvider(
                            (string)parameters["ProviderID"],
                            getAccountUserResponse.Result.Email,
                            accessToken);

                        NotifyPropertyChanged("ConfiguredCloudProviders");
                    }
                }
            }
            IsValidChanged(IsValid);
        }
Пример #4
0
        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();
                }
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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;
            }
            }
        }