public AwsManager(IAmazonS3 amazonS3, IPathManager pathManager) { if (null == amazonS3) throw new ArgumentNullException(nameof(amazonS3)); if (null == pathManager) throw new ArgumentNullException(nameof(pathManager)); _pathManager = pathManager; _amazonS3 = amazonS3; var storageClass = S3StorageClass.Standard; var storageClassString = ConfigurationManager.AppSettings["AwsStorageClass"]; if (!string.IsNullOrWhiteSpace(storageClassString)) storageClass = S3StorageClass.FindValue(storageClassString); var blobStorageClass = storageClass; var blobStorageClassString = ConfigurationManager.AppSettings["AwsBlobStorageClass"]; if (!string.IsNullOrWhiteSpace(blobStorageClassString)) blobStorageClass = S3StorageClass.FindValue(blobStorageClassString); var linkStorageClass = storageClass; var linkStorageClassString = ConfigurationManager.AppSettings["AwsLinkStorageClass"]; if (!string.IsNullOrWhiteSpace(linkStorageClassString)) linkStorageClass = S3StorageClass.FindValue(linkStorageClassString); _s3Blobs = new S3Blobs(amazonS3, pathManager, blobStorageClass); _s3Links = new S3Links(amazonS3, pathManager, linkStorageClass); }
async Task CreateLinkAsync(AwsManager awsManager, S3Links.ICreateLinkRequest createLinkRequest, bool actuallyWrite, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) return; var relativePath = createLinkRequest.RelativePath; var key = createLinkRequest.FileFingerprint.Fingerprint.Key(); Console.WriteLine("Link {0} \"{1}\" -> {2} ({3})", createLinkRequest.Collection, relativePath, key.Substring(0, 12), createLinkRequest.FileFingerprint.WasCached ? "cached" : "new"); if (!actuallyWrite) return; try { await awsManager.CreateLinkAsync(createLinkRequest, cancellationToken).ConfigureAwait(false); } catch (OperationCanceledException) { } catch (Exception ex) { Console.WriteLine("Link {0} {1} -> {2} failed: {3}", createLinkRequest.Collection, relativePath, key.Substring(0, 12), ex.Message); } }
public Task CreateLinkAsync(S3Links.ICreateLinkRequest createLinkRequest, CancellationToken cancellationToken) { return _s3Links.CreateLinkAsync(createLinkRequest, cancellationToken); }