示例#1
0
        public VideoUploadCompletedRequest CreateVideoUploadCompletedRequest(NotifyVideoUploadCompletedForm notifyVideoUploadCompletedForm)
        {
            var    buffer  = Encoding.GetEncoding("utf-8").GetBytes(JsonConvert.SerializeObject(notifyVideoUploadCompletedForm));
            Stream content = new MemoryStream();

            content.Write(buffer, 0, buffer.Length);
            content.Flush();
            content.Seek(0, SeekOrigin.Begin);
            return(SetRequestCookie(new VideoUploadCompletedRequest(_startupParameters.Domain, content)));
        }
        private void Upload()
        {
            if (Uploading)
            {
                return;
            }
            Uploading = true;
            Task.Run(() =>
            {
                while (true)
                {
                    var uploadTask = _taskList.Where(item => item.IsUpload && !item.IsFail && !item.IsCompleted).FirstOrDefault();
                    if (uploadTask == null)
                    {
                        uploadTask = _taskList.Where(item => item.IsUpload && item.IsFail).OrderBy(item => item.FailedTime).FirstOrDefault();
                    }
                    if (uploadTask == null)
                    {
                        break;
                    }

                    OnUpload?.Invoke(uploadTask);

                    if (storages == null || !storages.Any())
                    {
                        var result = _storageProvider.GetStorages();
                        if (!result.Item1)
                        {
                            uploadTask.UploadStatus = "无可用存储";
                            break;
                        }
                        storages = result.Item2.Item1;
                    }
                    foreach (var storage in storages)
                    {
                        if (uploadTask.UploadedStorage.ContainsKey(storage.StorageInfo.ID))
                        {
                            if (uploadTask.UploadedStorage[storage.StorageInfo.ID])
                            {
                                continue;
                            }
                        }
                        else
                        {
                            uploadTask.UploadedStorage.Add(storage.StorageInfo.ID, false);
                        }
                        storage.UploadFile(uploadTask);
                    }
                    if (!uploadTask.UploadedStorage.Any(item => !item.Value))
                    {
                        var notifyVideoUploadCompletedForm = new NotifyVideoUploadCompletedForm()
                        {
                            RecordID   = uploadTask.RecordInfo.ScheduleId,
                            videoIndex = uploadTask.RecordInfo.Index,
                            Duration   = (int)uploadTask.RecordInfo.Duration,
                        };
                        foreach (var item in uploadTask.Results)
                        {
                            notifyVideoUploadCompletedForm.Storages.Add(item);
                        }

                        var result              = _serviceClient.GetResponse(_webPlatformApiFactory.CreateVideoUploadCompletedRequest(notifyVideoUploadCompletedForm));
                        uploadTask.IsCompleted  = result.Success;
                        uploadTask.UploadStatus = "上传完成";
                    }
                    Thread.Sleep(500);
                }

                Uploading = false;
            });
        }