package com.narutohuo.xindazhou.common.network

import com.narutohuo.xindazhou.common.config.ServerConfigManager
import com.narutohuo.xindazhou.core.network.NetworkManager
import retrofit2.Retrofit

/**
 * API 服务工厂（工厂模式）
 * 
 * 统一创建 API 服务实例，避免重复代码
 * 
 * 使用方式：
 * ```kotlin
 * val authApi = ApiServiceFactory.create<AuthApi>()
 * ```
 */
object ApiServiceFactory {
    
    /**
     * 创建 API 服务实例（工厂方法）
     * 
     * @param baseUrl 基础URL，如果为 null 则使用 ServerConfigManager 的配置
     * @return API 服务实例
     */
    inline fun <reified T> create(baseUrl: String? = null): T {
        val url = baseUrl ?: ServerConfigManager.getHttpServerUrl()
        
        // 如果 baseUrl 不同，需要创建新的 Retrofit 实例
        val retrofit = if (baseUrl != null) {
            // 使用自定义 baseUrl，创建新的 Retrofit 实例
            NetworkManager.getRetrofit(
                com.narutohuo.xindazhou.core.network.NetworkConfig.Builder()
                    .baseUrl(url)
                    .build()
            )
        } else {
            // 使用默认配置
            NetworkManager.getRetrofit()
        }
        
        return retrofit.create(T::class.java)
    }
    
    /**
     * 使用指定的 Retrofit 实例创建 API 服务
     * 
     * @param retrofit Retrofit 实例
     * @return API 服务实例
     */
    inline fun <reified T> create(retrofit: Retrofit): T {
        return retrofit.create(T::class.java)
    }
}

