public void PutObject(PutObjectRequest request) { using (var response = _netLayer.Invoke(request)) { ResponseParseUtilities.HandleStatusCode(response, HttpStatusCode.OK); } }
public void Transfer(IDs3Client client, string bucketName, string objectName, long blobOffset, Guid jobId, IEnumerable<Range> ranges, Stream stream, IMetadataAccess metadataAccess, Action<string, IDictionary<string, string>> metadataListener, int objectTransferAttempts) { var currentTry = 0; while (true) { var request = new PutObjectRequest(bucketName, objectName, stream) .WithJob(jobId) .WithOffset(blobOffset); if (blobOffset == 0 && metadataAccess != null) { request.WithMetadata(MetadataUtils.GetUriEscapeMetadata(metadataAccess.GetMetadataValue(objectName))); } try { client.PutObject(request); return; } catch (Exception ex) { if (ExceptionClassifier.IsRecoverableException(ex)) { BestEffort.ModifyForRetry(stream, objectTransferAttempts, ref currentTry, request.ObjectName, request.Offset.Value, ex); } else { throw; } } } }
public void Transfer(TransferStrategyOptions transferStrategyOptions) { var currentTry = 0; while (true) { var request = new PutObjectRequest(transferStrategyOptions.BucketName, transferStrategyOptions.ObjectName, transferStrategyOptions.Stream) .WithJob(transferStrategyOptions.JobId) .WithOffset(transferStrategyOptions.BlobOffset); if (transferStrategyOptions.BlobOffset == 0 && transferStrategyOptions.MetadataAccess != null) { request.WithMetadata(MetadataUtils.GetUriEscapeMetadata(transferStrategyOptions.MetadataAccess.GetMetadataValue(transferStrategyOptions.ObjectName))); } if (transferStrategyOptions.Checksum != null) { request.WithChecksum(transferStrategyOptions.Checksum, transferStrategyOptions.ChecksumType); } try { transferStrategyOptions.Client.PutObject(request); return; } catch (Exception ex) { if (ExceptionClassifier.IsRecoverableException(ex)) { BestEffort.ModifyForRetry(transferStrategyOptions.Stream, transferStrategyOptions.ObjectTransferAttempts, ref currentTry, request.ObjectName, request.Offset.Value, ex); } else { throw; } } } }
protected void runPutWithChecksum(string bucket, string srcDirectory, string filename, string hashString = null, Checksum.ChecksumType checksumType = Checksum.ChecksumType.Md5) { _helpers.EnsureBucketExists(bucket); FileInfo fileInfo = new FileInfo(Path.Combine(srcDirectory, filename)); var ds3Obj = new Ds3Object(filename, fileInfo.Length); var ds3Objs = new List<Ds3Object>(); ds3Objs.Add(ds3Obj); // create a job var job = _helpers.StartWriteJob(bucket, ds3Objs); // instantiate a PutObjectRequest FileStream fs = File.Open(srcDirectory + Path.DirectorySeparatorChar + filename, FileMode.Open); PutObjectRequest putRequest = new PutObjectRequest(bucket, filename, job.JobId, 0L, fs); if (string.IsNullOrEmpty(hashString)) { // Compute checksum putRequest.WithChecksum(Checksum.Compute, checksumType); } else { // or pass in a precomputed Base64 string representation of the hash putRequest.WithChecksum(Checksum.Value(Convert.FromBase64String(hashString)), checksumType); } _client.PutObject(putRequest); fs.Close(); }
private void PutObject(IDs3Client client, JobObject obj, JobResponse bulkResult) { var fileToPut = File.OpenRead(testDirectoryBigFolderForMaxBlob + obj.Name); var contentStream = new PutObjectRequestStream(fileToPut, obj.Offset, obj.Length); var putObjectRequest = new PutObjectRequest( bulkResult.BucketName, obj.Name, bulkResult.JobId, obj.Offset, contentStream ); client.PutObject(putObjectRequest); fileToPut.Close(); }
public void TestPutWithBadChecksum() { // "123456789" has a well known checksum string content = "123456789"; string testBadChecksumCrc32C = "4awSwg=="; // transposed two pairs Ds3Object testObject = new Ds3Object("numbers_badcrc.txt", 9); var ds3Objs = new List<Ds3Object>(); ds3Objs.Add(testObject); using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content))) { // create or ensure bucket _helpers.EnsureBucketExists(TESTBUCKET); // create a job var job = _helpers.StartWriteJob(TESTBUCKET, ds3Objs); PutObjectRequest putRequest = new PutObjectRequest(TESTBUCKET, testObject.Name, job.JobId, 0L, stream); putRequest.WithChecksum(Checksum.Value(Convert.FromBase64String(testBadChecksumCrc32C)), Checksum.ChecksumType.Crc32C); _client.PutObject(putRequest); } // CURRENT SIMULATOR CREATES THIS OBJECT -- PROBABLY SHOULD NOT DeleteObject(TESTBUCKET, testObject.Name); }
public void TestPutWithSuppliedChecksum() { // "123456789" has a well known checksum string content = "123456789"; string testChecksumCrc32C = "4waSgw=="; Ds3Object testObject = new Ds3Object("numbers.txt", 9); var ds3Objs = new List<Ds3Object> {testObject}; using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content))) { // create or ensure bucket _helpers.EnsureBucketExists(TESTBUCKET); // create a job var job = _helpers.StartWriteJob(TESTBUCKET, ds3Objs); PutObjectRequest putRequest = new PutObjectRequest(TESTBUCKET, testObject.Name, job.JobId, 0L, stream); putRequest.WithChecksum(Checksum.Value(Convert.FromBase64String(testChecksumCrc32C)), Checksum.ChecksumType.Crc32C); _client.PutObject(putRequest); } //clean up DeleteObject(TESTBUCKET, testObject.Name); }
public void TestPutWithChecksum() { // grab a file var directoryObjects = FileHelpers.ListObjectsForDirectory(testDirectorySrc); Assert.IsNotEmpty(directoryObjects); Ds3Object testObject = directoryObjects.First<Ds3Object>(); var ds3Objs = new List<Ds3Object>(); ds3Objs.Add(testObject); // create or ensure bucket _helpers.EnsureBucketExists(TESTBUCKET); // create a job var job = _helpers.StartWriteJob(TESTBUCKET, ds3Objs); // instantiate a PutObjectRequest FileStream fs = File.Open(testDirectorySrc + Path.DirectorySeparatorChar + testObject.Name, FileMode.Open); PutObjectRequest putRequest = new PutObjectRequest(TESTBUCKET, testObject.Name, job.JobId, 0L, fs); putRequest.WithChecksum(Checksum.Compute, Checksum.ChecksumType.Crc32C); _client.PutObject(putRequest); fs.Close(); //clean up DeleteObject(TESTBUCKET, testObject.Name); }
private void PutObject(IDs3Client client, BulkObject obj, MasterObjectList bulkResult) { var fileToPut = File.OpenRead(testDirectoryBigFolderForMaxBlob + obj.Name); var contentStream = new ObjectRequestStream(fileToPut, obj.Offset, obj.Length); var putObjectRequest = new PutObjectRequest( bulkResult.BucketName, obj.Name, contentStream ).WithJob(bulkResult.JobId) .WithOffset(obj.Offset); client.PutObject(putObjectRequest); fileToPut.Close(); }
public void TestPutWithSuppliedChecksum() { const string bucketName = "TestPutWithSuppliedChecksum"; //This test is supported only for BP 1.2 if (!IsTestSupported(_client, 1.2)) { Assert.Ignore(); } try { // "123456789" has a well known checksum const string content = "123456789"; const string testChecksumCrc32C = "4waSgw=="; var testObject = new Ds3Object("numbers.txt", 9); var ds3Objs = new List<Ds3Object> {testObject}; using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content))) { // create or ensure bucket _helpers.EnsureBucketExists(bucketName); // create a job var job = _helpers.StartWriteJob(bucketName, ds3Objs); var putRequest = new PutObjectRequest(bucketName, testObject.Name, stream) .WithJob(job.JobId) .WithOffset(0L); putRequest.WithChecksum(ChecksumType.Value(Convert.FromBase64String(testChecksumCrc32C)), ChecksumType.Type.CRC_32C); _client.PutObject(putRequest); } } finally { Ds3TestUtils.DeleteBucket(_client, bucketName); } }
public void TestPutWithChecksum() { const string bucketName = "TestPutWithChecksum"; //This test is supported only for BP 1.2 if (!IsTestSupported(_client, 1.2)) { Assert.Ignore(); } try { // grab a file var directoryObjects = FileHelpers.ListObjectsForDirectory(testDirectorySrc); Assert.IsNotEmpty(directoryObjects); var testObject = directoryObjects.First(); var ds3Objs = new List<Ds3Object> {testObject}; // create or ensure bucket _helpers.EnsureBucketExists(bucketName); // create a job var job = _helpers.StartWriteJob(bucketName, ds3Objs); // instantiate a PutObjectRequest var fs = File.Open(testDirectorySrc + Path.DirectorySeparatorChar + testObject.Name, FileMode.Open); var putRequest = new PutObjectRequest(bucketName, testObject.Name, fs) .WithJob(job.JobId) .WithOffset(0L); putRequest.WithChecksum(ChecksumType.Compute, ChecksumType.Type.CRC_32C); _client.PutObject(putRequest); fs.Close(); } finally { Ds3TestUtils.DeleteBucket(_client, bucketName); } }
public void TestPutWithBadChecksum() { const string bucketName = "TestPutWithBadChecksum"; try { // "123456789" has a well known checksum const string content = "123456789"; const string testBadChecksumCrc32C = "4awSwg=="; // transposed two pairs var testObject = new Ds3Object("numbers_badcrc.txt", 9); var ds3Objs = new List<Ds3Object> {testObject}; using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content))) { // create or ensure bucket _helpers.EnsureBucketExists(bucketName); // create a job var job = _helpers.StartWriteJob(bucketName, ds3Objs); var putRequest = new PutObjectRequest(bucketName, testObject.Name, stream) .WithJob(job.JobId) .WithOffset(0L); putRequest.WithChecksum(ChecksumType.Value(Convert.FromBase64String(testBadChecksumCrc32C)), ChecksumType.Type.CRC_32C); Assert.Throws<Ds3BadStatusCodeException>(() => _client.PutObject(putRequest)); } } finally { Ds3TestUtils.DeleteBucket(_client, bucketName); } }