package jiguang import ( "time" "tyapi-server/internal/config" "tyapi-server/internal/shared/external_logger" ) // NewJiguangServiceWithConfig 使用配置创建极光服务 func NewJiguangServiceWithConfig(cfg *config.Config) (*JiguangService, error) { // 将配置类型转换为通用外部服务日志配置 loggingConfig := external_logger.ExternalServiceLoggingConfig{ Enabled: cfg.Jiguang.Logging.Enabled, LogDir: cfg.Jiguang.Logging.LogDir, ServiceName: "jiguang", UseDaily: cfg.Jiguang.Logging.UseDaily, EnableLevelSeparation: cfg.Jiguang.Logging.EnableLevelSeparation, LevelConfigs: make(map[string]external_logger.ExternalServiceLevelFileConfig), } // 转换级别配置 for key, value := range cfg.Jiguang.Logging.LevelConfigs { loggingConfig.LevelConfigs[key] = external_logger.ExternalServiceLevelFileConfig{ MaxSize: value.MaxSize, MaxBackups: value.MaxBackups, MaxAge: value.MaxAge, Compress: value.Compress, } } // 创建通用外部服务日志器 logger, err := external_logger.NewExternalServiceLogger(loggingConfig) if err != nil { return nil, err } // 解析签名方法 var signMethod SignMethod if cfg.Jiguang.SignMethod == "md5" { signMethod = SignMethodMD5 } else { signMethod = SignMethodHMACMD5 // 默认使用 HMAC-MD5 } // 解析超时时间 timeout := 60 * time.Second if cfg.Jiguang.Timeout > 0 { timeout = cfg.Jiguang.Timeout } // 创建极光服务 service := NewJiguangService( cfg.Jiguang.URL, cfg.Jiguang.AppID, cfg.Jiguang.AppSecret, signMethod, timeout, logger, ) return service, nil } // NewJiguangServiceWithLogging 使用自定义日志配置创建极光服务 func NewJiguangServiceWithLogging(url, appID, appSecret string, signMethod SignMethod, timeout time.Duration, loggingConfig external_logger.ExternalServiceLoggingConfig) (*JiguangService, error) { // 设置服务名称 loggingConfig.ServiceName = "jiguang" // 创建通用外部服务日志器 logger, err := external_logger.NewExternalServiceLogger(loggingConfig) if err != nil { return nil, err } // 创建极光服务 service := NewJiguangService(url, appID, appSecret, signMethod, timeout, logger) return service, nil } // NewJiguangServiceSimple 创建简单的极光服务(无日志) func NewJiguangServiceSimple(url, appID, appSecret string, signMethod SignMethod, timeout time.Duration) *JiguangService { return NewJiguangService(url, appID, appSecret, signMethod, timeout, nil) }