package com.hotwj.platform.video.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.File;
import java.time.Duration;

/**
 * 视频分片上传与转码配置
 */
@Data
@Component
@ConfigurationProperties(prefix = "video.upload")
public class VideoUploadProperties {

    /**
     * 工作目录，包含分片、源文件和 HLS 输出目录。
     */
    private String workDir = System.getProperty("java.io.tmpdir") + File.separator + "hot-video-upload";

    /**
     * HLS 文件在 OSS 中的对象前缀。
     */
    private String publicUrlPrefix = "/video-hls";

    /**
     * FFmpeg 可执行命令。
     */
    private String ffmpegCommand = "ffmpeg";

    /**
     * 分片状态保留时长（小时）。
     */
    private Integer chunkExpireHours = 24;

    /**
     * 任务状态保留时长（小时）。
     */
    private Integer taskExpireHours = 24;

    /**
     * HLS 切片时长（秒）。
     */
    private Integer hlsSegmentSeconds = 10;

    public Duration chunkExpireDuration() {
        return Duration.ofHours(chunkExpireHours == null ? 24L : chunkExpireHours.longValue());
    }

    public Duration taskExpireDuration() {
        return Duration.ofHours(taskExpireHours == null ? 24L : taskExpireHours.longValue());
    }

    public String normalizedPublicUrlPrefix() {
        if (publicUrlPrefix == null || publicUrlPrefix.isBlank()) {
            return "/video-hls";
        }
        String value = publicUrlPrefix.startsWith("/") ? publicUrlPrefix : "/" + publicUrlPrefix;
        return value.endsWith("/") ? value.substring(0, value.length() - 1) : value;
    }
}
