改成wails

This commit is contained in:
yml2213
2026-07-23 14:04:52 +08:00
parent d0efcedcc5
commit a9ecad38f7
24 changed files with 2220 additions and 496 deletions
+165
View File
@@ -0,0 +1,165 @@
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"strings"
"time"
"updata_hfb/internal/hfb"
)
const sampleText = `上号方式:QQ扫码
哈夫币纯币:156
段位:铂金
等级:60
保险格数:9
每日消耗:10
体力:7
负重:7
AWM子弹数量:80
6头数量:13
6甲数量:12
皮肤:暗星
绝密KD0.2
押金:350
号主在线时间:11:00 至 00:00
封禁记录:无
常用地区:海南
回收比例:1:47.0
回收租金:332
联系电话:15203616450`
type App struct {
ctx context.Context
}
type DefaultSettings struct {
Server string `json:"server"`
Uploader string `json:"uploader"`
Secret string `json:"secret"`
Timeout string `json:"timeout"`
}
type UploadForm struct {
Server string `json:"server"`
Uploader string `json:"uploader"`
Secret string `json:"secret"`
Timeout string `json:"timeout"`
Data string `json:"data"`
}
func NewApp() *App {
return &App{}
}
func (a *App) startup(ctx context.Context) {
a.ctx = ctx
}
func (a *App) DefaultSettings() DefaultSettings {
return DefaultSettings{
Server: envDefault("HFB_SERVER", "http://127.0.0.1:8080"),
Uploader: strings.TrimSpace(os.Getenv("HFB_UPLOADER_NAME")),
Secret: strings.TrimSpace(os.Getenv("HFB_UPLOAD_SECRET")),
Timeout: "15s",
}
}
func (a *App) SampleText() string {
return sampleText
}
func (a *App) Preview(form UploadForm) (string, error) {
req, err := buildUploadRequest(form)
if err != nil {
return "", err
}
out, err := hfb.MarshalPretty(req)
if err != nil {
return "", fmt.Errorf("生成 JSON 失败:%w", err)
}
return string(out), nil
}
func (a *App) Upload(form UploadForm) (string, error) {
timeout, err := parseTimeout(form.Timeout)
if err != nil {
return "", err
}
req, err := buildUploadRequest(form)
if err != nil {
return "", err
}
ctx := a.ctx
if ctx == nil {
ctx = context.Background()
}
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
resp, err := hfb.Client{
Server: strings.TrimSpace(form.Server),
Secret: strings.TrimSpace(form.Secret),
Timeout: timeout,
}.Upload(ctx, req)
if err != nil {
return "", err
}
return formatDisplayJSON(resp), nil
}
func buildUploadRequest(form UploadForm) (hfb.ExternalUploadRequest, error) {
if strings.TrimSpace(form.Data) == "" {
return hfb.ExternalUploadRequest{}, fmt.Errorf("账号数据不能为空")
}
parsed, err := hfb.ParseUploadText(form.Data)
if err != nil {
return hfb.ExternalUploadRequest{}, err
}
uploaderName := strings.TrimSpace(form.Uploader)
if uploaderName == "" {
uploaderName = parsed.UploaderName
}
if uploaderName == "" {
return hfb.ExternalUploadRequest{}, fmt.Errorf("缺少上传人名称:请展开“连接配置”填写上传人,或在文本中增加“上传人:姓名”")
}
return hfb.NewExternalUploadRequest(uploaderName, parsed.Account, time.Now()), nil
}
func parseTimeout(raw string) (time.Duration, error) {
raw = strings.TrimSpace(raw)
if raw == "" {
raw = "15s"
}
timeout, err := time.ParseDuration(raw)
if err != nil || timeout <= 0 {
return 0, fmt.Errorf("请求超时时间不正确:%s", raw)
}
return timeout, nil
}
func formatDisplayJSON(text string) string {
text = strings.TrimSpace(text)
if text == "" {
return "服务器未返回内容"
}
var payload any
if err := json.Unmarshal([]byte(text), &payload); err != nil {
return text
}
pretty, err := json.MarshalIndent(payload, "", " ")
if err != nil {
return text
}
return string(pretty)
}
func envDefault(key string, fallback string) string {
value := strings.TrimSpace(os.Getenv(key))
if value == "" {
return fallback
}
return value
}