package com.dji.sample.manage.model.dto;

import com.dji.sdk.cloudapi.device.VideoId;
import com.dji.sdk.cloudapi.livestream.CameraPositionEnum;
import com.dji.sdk.cloudapi.livestream.LensChangeVideoTypeEnum;
import com.dji.sdk.cloudapi.livestream.UrlTypeEnum;
import com.dji.sdk.cloudapi.livestream.VideoQualityEnum;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * Receive live parameters.
 * @author sean.zhou
 * @version 0.1
 * @date 2021/11/22
 */
@Data
public class LiveTypeDTO {

    @JsonProperty("url_type")
    private UrlTypeEnum urlType;

    @JsonProperty("video_id")
    private VideoId videoId;

    @JsonProperty("video_quality")
    private VideoQualityEnum videoQuality;

    private LensChangeVideoTypeEnum videoType;

    @JsonProperty("camera_position")
    private CameraPositionEnum cameraPosition;

    @JsonProperty("workspace_id")
    private String workspaceId;

    /** manual / stalled / interrupted / device_error */
    private String reason;

    /**
     * 观看会话ID，由服务端在 liveStart 时生成（UUID），前端在 heartbeat/stop 时回传。
     */
    @JsonProperty("session_id")
    private String sessionId;

    /**
     * 客户端标识（前端浏览器标签页级别），用于 liveStart 时去重。
     * 同一 clientId 再次开流时，后端会自动清理该 clientId 对应的旧会话，避免刷新页面产生幽灵会话。
     * 存储于 sessionStorage，刷新不变、新标签页不同。
     */
    @JsonProperty("client_id")
    private String clientId;
}