private static async Task <string> ShortUploadVideoAsync(LinkedInApi api, RegisterUploadResult registerUpload, byte[] videoData) { var postAssetResult = await api.Asset.UploadAssetAsync(registerUpload.Value.UploadMechanism.ComLinkedinDigitalmediaUploadingMediaUploadHttpRequest.UploadUrl, new Asset.UploadAssetRequest() { RequestHeaders = new Asset.ComLinkedinDigitalmediaUploadingMediaUploadHttpRequest() { Headers = registerUpload.Value.UploadMechanism.ComLinkedinDigitalmediaUploadingMediaUploadHttpRequest.Headers, UploadUrl = registerUpload.Value.UploadMechanism.ComLinkedinDigitalmediaUploadingMediaUploadHttpRequest.UploadUrl, }, Data = videoData }); return(postAssetResult); }
private static async Task <int> CompletMultiPartVideoAsync(UserAuthorization user, LinkedInApi api, RegisterUploadResult registerUploadResult, List <string> uploadResult) { var partUploadResponses = new List <PartUploadResponse>(); foreach (var uploadRes in uploadResult) { partUploadResponses.Add(new PartUploadResponse() { HttpStatusCode = 200, Headers = new PartUploadResponseHeaders() { ETag = uploadRes } }); } var completeMultiPartUploadRequest = new CompleteMultipartUploadRequest() { CompleteMultipartUploadRequestData = new CompleteMultipartUploadRequestData() { MediaArtifact = registerUploadResult.Value.MediaArtifact, Metadata = registerUploadResult.Value.UploadMechanism.ComLinkedinDigitalmediaUploadingMultipartUpload.Metadata, PartUploadResponses = partUploadResponses } }; var complete = await api.Asset.CompleteMultiPartUploadAsync(user, completeMultiPartUploadRequest); return(complete); }
public static async Task <List <string> > UploadLongVideoPartsAsync(LinkedInApi api, RegisterUploadResult registerUpload, byte[] videoData) { try { if (registerUpload.Value.UploadMechanism.ComLinkedinDigitalmediaUploadingMultipartUpload.PartUploadRequests == null) { throw new NullReferenceException("UploadLongVideoAsync param is null"); } } catch (Exception e) { throw new NullReferenceException("UploadLongVideoAsync param is null", e); } // maybe in a later version we should return the status code as well List <string> partsResult = new List <string>(); foreach (var part in registerUpload.Value.UploadMechanism.ComLinkedinDigitalmediaUploadingMultipartUpload.PartUploadRequests) { int length = (int)((part.ByteRange.LastByte + 1) - part.ByteRange.FirstByte); byte[] destinationArray = new byte[] { }; Array.Resize(ref destinationArray, length); Array.Copy(videoData, part.ByteRange.FirstByte, destinationArray, 0, length); var postAssetResult = await api.Asset.UploadAssetAsync(part.Url, new Asset.UploadAssetRequest() { RequestHeaders = new Asset.ComLinkedinDigitalmediaUploadingMediaUploadHttpRequest() { Headers = part.Headers, UploadUrl = part.Url, }, Data = destinationArray }); partsResult.Add(postAssetResult); } return(partsResult); }