コード例 #1
0
ファイル: VideoUpload.cs プロジェクト: sandrock/LinkedInNET
        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);
        }
コード例 #2
0
ファイル: VideoUpload.cs プロジェクト: sandrock/LinkedInNET
        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);
        }
コード例 #3
0
ファイル: VideoUpload.cs プロジェクト: sandrock/LinkedInNET
        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);
        }