76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
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)
|
|
}
|