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); } }
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); } }