Ejemplo n.º 1
0
        public async Task WaitForMediaProcessingToGetAllMetadata(IMedia media, ITwitterRequest request)
        {
            if (media == null)
            {
                return;
            }

            var isProcessed = IsMediaProcessed(media.UploadedMediaInfo);

            if (isProcessed)
            {
                return;
            }

            var processingInfoDelay            = media.UploadedMediaInfo.ProcessingInfo.CheckAfterInMilliseconds;
            var dateWhenProcessingCanBeChecked = media.UploadedMediaInfo.CreatedDate.Add(TimeSpan.FromMilliseconds(processingInfoDelay));

            var timeToWait = (int)dateWhenProcessingCanBeChecked.Subtract(DateTime.Now).TotalMilliseconds;

            IUploadedMediaInfo mediaStatus = null;

            while (!isProcessed)
            {
                await Task.Delay(Math.Max(timeToWait, 1)).ConfigureAwait(false);

                // The second parameter (false) informs Tweetinvi that you are manually awaiting the media to be ready
                var mediaStatusTwitterResult = await _uploadQueryExecutor.GetMediaStatus(media, request).ConfigureAwait(false);

                mediaStatus = mediaStatusTwitterResult.DataTransferObject;
                isProcessed = IsMediaProcessed(mediaStatus.ProcessingInfo);
                timeToWait  = mediaStatus.ProcessingInfo.CheckAfterInMilliseconds;
            }

            media.UploadedMediaInfo = mediaStatus;
        }
Ejemplo n.º 2
0
        public IMedia WaitForMediaProcessingToGetAllMetadata(IMedia media)
        {
            var isProcessed = IsMediaProcessed(media.UploadedMediaInfo);

            if (isProcessed)
            {
                return(media);
            }

            var processingInfoDelay            = media.UploadedMediaInfo.ProcessingInfo.CheckAfterInMilliseconds;
            var dateWhenProcessingCanBeChecked = media.UploadedMediaInfo.CreatedDate.Add(TimeSpan.FromMilliseconds(processingInfoDelay));

            var timeToWait = (int)DateTime.Now.Subtract(dateWhenProcessingCanBeChecked).TotalMilliseconds;

            IUploadedMediaInfo mediaStatus = null;

            while (!isProcessed)
            {
                _threadHelper.Sleep(timeToWait);

                // The second parameter (false) informs Tweetinvi that you are manually awaiting the media to be ready
                mediaStatus = _uploadQueryExecutor.GetMediaStatus(media, false);
                isProcessed = IsMediaProcessed(mediaStatus.ProcessingInfo);
                timeToWait  = mediaStatus.ProcessingInfo.CheckAfterInMilliseconds;
            }

            media = media.CloneWithoutUploadInfo();
            media.UploadedMediaInfo = mediaStatus;

            return(media);
        }
        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();
                }
            }
        }
Ejemplo n.º 4
0
        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();
                }
            }
        }
Ejemplo n.º 5
0
 private bool IsMediaProcessed(IUploadedMediaInfo mediaInfo)
 {
     return(IsMediaProcessed(mediaInfo?.ProcessingInfo));
 }