package main import ( "flag" "fmt" "os" "stalwart_client/pkg/api" "strconv" ) func main() { // 解析命令行参数 idPtr := flag.String("i", "", "用户ID") emailPtr := flag.String("e", "", "用户邮箱地址") authTypePtr := flag.String("a", "basic", "认证方式: basic(基本认证)或apikey(API Key认证)") authUserPtr := flag.String("u", "", "基本认证用户名") authPassPtr := flag.String("P", "", "基本认证密码") apiKeyPtr := flag.String("k", "", "API Key") configPtr := flag.String("c", "", "配置文件路径") flag.Parse() // 检查参数 if *idPtr == "" && *emailPtr == "" { fmt.Println("错误: 必须指定用户ID或邮箱地址") flag.Usage() os.Exit(1) } // 加载配置 config, err := api.LoadConfig(*configPtr) if err != nil { fmt.Printf("加载配置失败: %v\n", err) os.Exit(1) } // 创建客户端 client := api.NewClient(config) // 确定认证类型 var authType api.AuthType if *authTypePtr == "apikey" { authType = api.APIKeyAuth } else { authType = api.BasicAuth } // 获取用户信息 var userInfo map[string]interface{} var err2 error if *idPtr != "" { // 通过ID查询 id, err := strconv.Atoi(*idPtr) if err != nil { fmt.Printf("无效的用户ID: %v\n", err) os.Exit(1) } fmt.Printf("通过ID查询用户: %d\n", id) userInfo, err2 = client.GetUserDetails(id, authType, *authUserPtr, *authPassPtr, *apiKeyPtr) } else { // 通过邮箱查询 fmt.Printf("通过邮箱查询用户: %s\n", *emailPtr) userInfo, err2 = client.GetUserByEmail(*emailPtr, authType, *authUserPtr, *authPassPtr, *apiKeyPtr) } if err2 != nil { fmt.Printf("获取用户信息失败: %v\n", err2) os.Exit(1) } // 格式化显示结果 api.FormatUserDetails(userInfo) }