예제 #1
0
        public Task <bool> SetAsync(string cacheKey, DocConvertResultDto generateResult)
        {
            var key   = GetKey(cacheKey);
            var value = JsonConvert.SerializeObject(generateResult);

            return(RedisHelper.SetAsync(key, value, TimeSpan.FromDays(7).Seconds));
        }
예제 #2
0
        public DocConvertResultDto QueryConvertTask(string taskId)
        {
            Requires.NotNullOrEmpty(taskId, nameof(taskId));

            var request = new GetOfficeConversionTaskRequest
            {
                AcceptFormat = FormatType.JSON,
                Project      = m_IMMSetting.Project,
                TaskId       = taskId
            };

            var task = Request(request);

            if (task == null)
            {
                return(null);
            }

            var result = new DocConvertResultDto(task);

            if (result.Status == DocConvertStatus.Failed)
            {
                m_Logger.LogWarning($"文档转换失败:{JsonConvert.SerializeObject(task)}");
            }

            return(result);
        }
예제 #3
0
        public DocConvertResultDto CreateConvertTask(OSSObjectDto ossObjectDto)
        {
            Requires.NotNull(ossObjectDto, nameof(ossObjectDto));

            var request = new CreateOfficeConversionTaskRequest
            {
                AcceptFormat = FormatType.JSON,
                Project      = m_IMMSetting.Project,
                SrcUri       = ossObjectDto.OSSPath,
                SrcType      = ossObjectDto.FileType,
                TgtType      = m_IMMSetting.ConvertType,
                TgtUri       = m_IMMSetting.GetTgtUri(ossObjectDto.IMMKey)
            };

            var task = Request(request);

            if (task == null)
            {
                return(null);
            }

            var result = new DocConvertResultDto(task);

            if (result.Status == DocConvertStatus.Failed)
            {
                m_Logger.LogWarning($"创建转换任务失败:{JsonConvert.SerializeObject(task)}");
            }

            return(result);
        }
예제 #4
0
        public override async Task <SimplyResult <DocConvertResultDto> > GenerateAsync(OSSObjectDto ossObjectDto, bool isRegenerate)
        {
            Requires.NotNull(ossObjectDto, nameof(ossObjectDto));

            var token = await GetTokenAsync(ossObjectDto.Bucket, ossObjectDto.FilePath, ossObjectDto.HashPath, isRegenerate);

            var generateResult = new DocConvertResultDto
            {
                PreviewUrl = GetPreviewUrl(ossObjectDto.Bucket, ossObjectDto.FilePath, token),
                Status     = DocConvertStatus.Finished,
                FileType   = ossObjectDto.FileType
            };

            return(SimplyResult.Ok(generateResult));
        }
예제 #5
0
        protected virtual async Task <DocConvertResultDto> QueryConvertTaskAsync(string taskId)
        {
            using (var cancellTokenSource = new CancellationTokenSource(m_PreviewSetting.TaskPollingSpend))
            {
                DocConvertResultDto generateResult = null;

                while (!cancellTokenSource.IsCancellationRequested)
                {
                    // 官方建议
                    Thread.Sleep(m_PreviewSetting.IMMRequestInterval);

                    generateResult = m_IMMService.QueryConvertTask(taskId);
                    if (generateResult?.Status != DocConvertStatus.Running)
                    {
                        break;
                    }
                }

                return(generateResult);
            }
        }