private void UpdateMedia(IUploadedMediaInfo uploadedMediaInfos)
        {
            _media.UploadedMediaInfo = uploadedMediaInfos;

            if (_expectedBinaryLength != null)
            {
                // If all the data has not been sent then we do not construct the data
                if (UploadedSegments.Sum(x => x.Value.Length) == _expectedBinaryLength)
                {
                    var allSegments = UploadedSegments.OrderBy(x => x.Key);
                    _media.Data = allSegments.SelectMany(x => x.Value).ToArray();
                }
            }
        }
Example #2
0
        public bool Append(IChunkUploadAppendParameters parameters)
        {
            if (MediaId == null)
            {
                throw new InvalidOperationException("You cannot append content to a non initialized chunked upload. You need to invoke the initialize method OR set the MediaId property of an existing ChunkedUpload.");
            }

            if (parameters.SegmentIndex == null)
            {
                parameters.SegmentIndex = NextSegmentIndex;
            }

            if (parameters.MediaId == null)
            {
                parameters.MediaId = MediaId;
            }

            var appendQuery = _uploadQueryGenerator.GetChunkedUploadAppendQuery(parameters);

            var multiPartRequestParameters = new MultipartHttpRequestParameters
            {
                Query    = appendQuery,
                Binaries = new List <byte[]> {
                    parameters.Binary
                },
                Timeout               = parameters.Timeout,
                ContentId             = parameters.MediaType,
                UploadProgressChanged = parameters.UploadProgressChanged
            };

            var success = _twitterAccessor.TryExecuteMultipartQuery(multiPartRequestParameters);

            if (success)
            {
                UploadedSegments.Add(parameters.SegmentIndex.Value, parameters.Binary);
                ++NextSegmentIndex;
            }

            return(success);
        }
Example #3
0
        public bool Append(byte[] binary, int?segmentIndex = null)
        {
            if (MediaId == null)
            {
                throw new InvalidOperationException("You cannot append content to a non initialized chunked upload. You need to invoke the initialize method OR set the MediaId property of an existing ChunkedUpload.");
            }

            if (segmentIndex == null)
            {
                segmentIndex = NextSegmentIndex;
            }

            var appendQuery = _uploadQueryGenerator.GetChunkedUploadAppendQuery(MediaId.Value, segmentIndex.Value);
            var sucess      = _twitterAccessor.TryExecuteMultipartQuery(appendQuery, new[] { binary });

            if (sucess)
            {
                UploadedSegments.Add(segmentIndex.Value, binary);
                ++NextSegmentIndex;
            }

            return(sucess);
        }