Ejemplo n.º 1
0
 private void ListBucket()
 {
     backupProgress.EnterAction(BackupAction.ListingBucket);
     try
     {
         files.RemoveRemoteFiles();
         if (Settings.Default.Bucket != null)
         {
             try
             {
                 S3 s3 = new S3(Settings.Default.Bucket.AccessKeyId, Settings.Default.Bucket.SecretAccessKey);
                 IDictionary<string, BackupFileAttributes> remoteFiles = new Dictionary<string, BackupFileAttributes>();
                 foreach (IS3Object file in s3.ListObjects(Settings.Default.Bucket.BucketName))
                 {
                     executor.CheckAbortion();
                     remoteFiles.Add(GetFileName(file.Key), new BackupFileAttributes(file.Size, file.LastModified, file.ETag));
                     if (remoteFiles.Count == 1000)
                     {
                         files.AddRemoteFiles(remoteFiles);
                         remoteFiles.Clear();
                     }
                 }
                 files.AddRemoteFiles(remoteFiles);
             }
             catch (S3Exception e)
             {
                 MessageBox.Show(e.Message);
             }
         }
     }
     finally
     {
         backupProgress.ExitAction(BackupAction.ListingBucket);
     }
 }
 private static void ListBuckets(BucketConfigurationWindow window)
 {
     window.Dispatcher.BeginInvoke((DispatcherInvokeNoResultHandler)delegate
     {
         window.SetValue(BucketsProperty, null);
         string accessKeyId = (string)window.GetValue(AccessKeyIdProperty);
         string secretAccessKey = (string)window.GetValue(SecretAccessKeyProperty);
         if (accessKeyId != null && secretAccessKey != null)
         {
             try
             {
                 S3 s3 = new S3(accessKeyId, secretAccessKey);
                 window.SetValue(BucketsProperty, s3.ListBuckets());
             }
             catch (S3Exception e)
             {
                 MessageBox.Show(e.Message);
                 if (e.ErrorCode == "InvalidAccessKeyId")
                 {
                     Validation.MarkInvalid(BindingOperations.GetBindingExpression(window.AccessKeyIdTextBox, TextBox.TextProperty), new ValidationError(new ExceptionValidationRule(), "mandatory"));
                 }
                 else if (e.ErrorCode == "SignatureDoesNotMatch")
                 {
                     Validation.MarkInvalid(BindingOperations.GetBindingExpression(window.SecretAccessKeyIdTextBox, TextBox.TextProperty), new ValidationError(new ExceptionValidationRule(), "mandatory"));
                 }
             }
             catch (Exception e)
             {
                 MessageBox.Show(e.Message);
             }
         }
     });
 }
 private void DoCreateBucketExecuted(object sender, ExecutedRoutedEventArgs e)
 {
     try
     {
         S3 s3 = new S3(accessKeyId, secretAccessKey);
         s3.CreateBucket(Bucket, EuLocationConstraint ? S3LocationConstraint.EU : S3LocationConstraint.None);
         DialogResult = true;
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
 }
Ejemplo n.º 4
0
        private void Backup()
        {
            backupProgress.EnterAction(BackupAction.RunningBackup);
            try
            {
                S3 s3 = new S3(Settings.Default.Bucket.AccessKeyId, Settings.Default.Bucket.SecretAccessKey);

                foreach (BackupFile file in files.NewOrUpdatedFiles)
                {
                    executor.CheckAbortion();
                    bool success = retryHelper.Retry(PutObject, s3, file);
                    if (success)
                    {
                        files.FileBackedUp(file.Path);
                        TransferedFileCount++;
                        TransferedData += file.LocalAttributes.Size;
                        File.SetAttributes(file.Path, File.GetAttributes(file.Path) & ~FileAttributes.Archive);
                    }
                    else
                    {
                        FailedFileCount++;
                    }
                }
                foreach (BackupFile file in files.DeletedFiles)
                {
                    executor.CheckAbortion();
                    bool success = retryHelper.Retry(DeleteObject, s3, file);
                    if (success)
                    {
                        files.FileBackedUp(file.Path);
                    }
                    else
                    {
                        FailedFileCount++;
                    }
                }
            }
            finally
            {
                backupProgress.ExitAction(BackupAction.RunningBackup);
            }
        }