package org.springblade.file.service.support;

import com.obs.services.model.ProgressListener;
import com.obs.services.model.ProgressStatus;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 *  文件上传进度监听器
 * @author bfhuange
 * @date 2024/10/28
 */
@AllArgsConstructor
@Slf4j
public class UploadProgressListener implements ProgressListener {

    /**
     *  obs对象名称
     */
    private final String objectKey;

    /**
     *  进度间隔，如果新传输的大小不等于进度间隔，说明是结束了
     */
    private final long progressInterval;

    @Override
    public void progressChanged(ProgressStatus status) {
        log.info("文件上传进度 文件名：{} 是否结束：{} 已上传大小：{} 上传速度：{}", objectKey, progressInterval != status.getNewlyTransferredBytes(), status.getTransferredBytes(), String.format("%.2f", status.getAverageSpeed()));
    }
}
