public bool UpdateProfileBanner(IAccountUpdateProfileBannerParameters parameters) { var query = _accountQueryGenerator.GetUpdateProfileBannerQuery(parameters); if (parameters.Binary == null) { throw new ArgumentNullException("Banner binary cannot be null."); } var multipartParameters = new MultipartHttpRequestParameters { Query = query, HttpMethod = HttpMethod.POST, Binaries = new [] { parameters.Binary }, ContentId = "banner", Timeout = parameters.Timeout }; return _twitterAccessor.TryExecuteMultipartQuery(multipartParameters); }
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 }; var success = _twitterAccessor.TryExecuteMultipartQuery(multiPartRequestParameters); if (success) { UploadedSegments.Add(parameters.SegmentIndex.Value, parameters.Binary); ++NextSegmentIndex; } return success; }
public void UploadMedias(IEnumerable<IMedia> medias, bool forceReUpload = true) { if (medias == null) { return; } var mediaArray = medias.ToArray(); if (forceReUpload) { mediaArray.ForEach(x => x.UploadedMediaInfo = null); } // Twitter documentation states that an image uploaded on Twitter is retained 60 minutes. // Tweetinvi is republishing a Media after 58 minutes after its first upload. var mediasToPublish = mediaArray.Where(x => !x.HasBeenUploaded || DateTime.Now.Subtract(x.UploadedMediaInfo.CreatedDate).TotalMinutes > 58); foreach (var mediaToPublish in mediasToPublish) { if (mediaToPublish.Data.Length < TweetinviConsts.UPLOAD_MAX_CHUNK_SIZE) { var multipartHttpRequestParameters = new MultipartHttpRequestParameters { Query = Resources.Upload_URL, Binaries = new List<byte[]> { mediaToPublish.Data } }; mediaToPublish.UploadedMediaInfo = _twitterAccessor.ExecuteMultipartQuery<IUploadedMediaInfo>(multipartHttpRequestParameters); } else { var uploadQueryParameters = new UploadQueryParameters { Binaries = new List<byte[]> {mediaToPublish.Data} }; var media = ChunkUploadBinary(uploadQueryParameters); mediaToPublish.UploadedMediaInfo = media.UploadedMediaInfo; } } }