package com.haha.sdk.config;

import lombok.Builder;
import lombok.Data;

/**
 * 哈哈零售SDK配置类
 * 包含API访问所需的基本配置信息
 * 
 * @author haha-sdk
 * @version 1.0.0
 */
@Data
@Builder
public class HahaConfig {
    
    /**
     * API基础URL
     * 默认为正式环境：http://api.hahabianli.com
     */
    @Builder.Default
    private String apiBaseUrl = "http://api.hahabianli.com";
    
    /**
     * 商家应用ID
     * 在哈哈零售商家后台获取
     */
    private String appId;
    
    /**
     * 商家应用密钥
     * 在哈哈零售商家后台获取，请妥善保管
     */
    private String appSecret;
    
    /**
     * HTTP连接超时时间（秒）
     */
    @Builder.Default
    private int connectTimeout = 10;
    
    /**
     * HTTP读取超时时间（秒）
     */
    @Builder.Default
    private int readTimeout = 30;
    
    /**
     * HTTP写入超时时间（秒）
     */
    @Builder.Default
    private int writeTimeout = 30;
    
    /**
     * 是否启用日志
     */
    @Builder.Default
    private boolean enableLog = true;
    
    /**
     * 校验配置信息是否完整
     * 
     * @throws IllegalArgumentException 配置信息不完整时抛出
     */
    public void validate() {
        if (appId == null || appId.trim().isEmpty()) {
            throw new IllegalArgumentException("appId不能为空");
        }
        if (appSecret == null || appSecret.trim().isEmpty()) {
            throw new IllegalArgumentException("appSecret不能为空");
        }
        if (apiBaseUrl == null || apiBaseUrl.trim().isEmpty()) {
            throw new IllegalArgumentException("apiBaseUrl不能为空");
        }
    }
}
