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; }
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(); } } }
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(); } } }
private bool IsMediaProcessed(IUploadedMediaInfo mediaInfo) { return(IsMediaProcessed(mediaInfo?.ProcessingInfo)); }