Beispiel #1
0
        public async Task Complete(CancellationToken ct)
        {
            if (!_isComplete)
            {
                string versionId;
                if (_uploader != null)
                {
                    versionId = await _uploader.Complete().ConfigureAwait(false);
                }
                else
                {
                    // Just a single upload request...
                    using (var ms = new MemoryStream(_buffer, 0, _currentOffset))
                    {
                        var request = new PutObjectRequest
                        {
                            AutoCloseStream         = false,
                            AutoResetStreamPosition = false,
                            BucketName  = _bucket,
                            Key         = _key,
                            InputStream = ms
                        };

                        // Copy the metadata across
                        if (_metadata != null)
                        {
                            foreach (var m in _metadata)
                            {
                                request.Metadata.Add("x-amz-meta-" + m.Key, m.Value);
                            }
                        }

                        var resp = await _client.PutObjectAsync(request, ct).ConfigureAwait(false);

                        versionId = resp.VersionId;
                    }
                }
                VersionId   = versionId;
                _isComplete = true;
                _uploader   = null;
            }
        }