public async Task PostAsync(S3FileKey key, TValue source) { if (key == null) { throw new ArgumentNullException(nameof(key)); } if (source == null) { throw new ArgumentNullException(nameof(source)); } var stream = _containerConverter.GetStream(source); var metaData = _containerConverter.GetMetaData(source); stream.Position = 0; var request = new PutObjectRequest { BucketName = BucketNameConstructor.GetBucketName(key), Key = key.Key, InputStream = stream, TagSet = metaData.ToTagSet(_containerConverter.GetOriginKey()).ToList(), AutoCloseStream = false }; metaData.CopyToMetadataCollection(request.Metadata, _containerConverter.GetOriginKey()); await AmazonS3.PutObjectAsync(request); stream.Position = 0; }
private async Task <GetObjectResponse> GetObjectAsync(S3FileKey key) { var request = new GetObjectRequest { BucketName = BucketNameConstructor.GetBucketName(key), Key = key.Key, VersionId = key.VersionId }; return(await AmazonS3.GetObjectAsync(request)); }
private ListObjectsV2Request CreateRequest(S3FolderKey filter) { var request = new ListObjectsV2Request { BucketName = BucketNameConstructor.GetBucketName(filter), Prefix = filter.Key, Delimiter = "/" }; return(request); }
private async Task <IDictionary <string, string> > GetTagsAsync(S3FileKey key) { var getTagsRequest = new GetObjectTaggingRequest { BucketName = BucketNameConstructor.GetBucketName(key), Key = key.Key, VersionId = key.VersionId }; var objectTags = await AmazonS3.GetObjectTaggingAsync(getTagsRequest); return(objectTags.Tagging.ToDictionary()); }
public async Task DeleteAsync(S3FileKey key) { if (key == null) { throw new ArgumentNullException(nameof(key)); } var request = new DeleteObjectRequest { BucketName = BucketNameConstructor.GetBucketName(key), Key = key.Key }; await AmazonS3.DeleteObjectAsync(request); }
private async Task <IEnumerable <S3ObjectVersion> > GetS3ObjectVersions(S3FileKey key) { var request = new ListVersionsRequest { BucketName = BucketNameConstructor.GetBucketName(key), Prefix = key.Key }; var result = new List <S3ObjectVersion>(); ListVersionsResponse response; do { response = await AmazonS3.ListVersionsAsync(request); result.AddRange(response.Versions); request.VersionIdMarker = response.NextVersionIdMarker; request.KeyMarker = response.NextKeyMarker; } while (response.IsTruncated); return(result); }
private IEnumerable <DeleteObjectsRequest> CreateRequests(IList <S3FileKey> fileKeys, S3FolderKey folderKey) { var requests = new List <DeleteObjectsRequest>(); int requestCount = fileKeys.Count / FilesLimitPerRequest + 1; for (var i = 0; i < requestCount; i++) { var request = new DeleteObjectsRequest { BucketName = BucketNameConstructor.GetBucketName(folderKey), Objects = fileKeys.Skip(i * FilesLimitPerRequest) .Take(FilesLimitPerRequest) .Select(k => new KeyVersion { Key = k.Key }).ToList() }; requests.Add(request); } return(requests); }