github.com/LagrangeDev/LagrangeGo@v0.0.0-20240512064304-ad4a85e10cb4/client/packets/wtlogin/statusService.go (about) 1 package wtlogin 2 3 import ( 4 "errors" 5 "strings" 6 "unicode" 7 8 "github.com/LagrangeDev/LagrangeGo/client/auth" 9 "github.com/LagrangeDev/LagrangeGo/client/packets/pb/system" 10 "github.com/LagrangeDev/LagrangeGo/internal/proto" 11 "github.com/LagrangeDev/LagrangeGo/utils" 12 ) 13 14 // BuildRegisterRequest trpc.qq_new_tech.status_svc.StatusService.Register 15 func BuildRegisterRequest(app *auth.AppInfo, device *auth.DeviceInfo) []byte { 16 return proto.DynamicMessage{ 17 1: strings.ToUpper(device.Guid), 18 2: 0, 19 3: app.CurrentVersion, 20 4: 0, 21 5: 2052, 22 6: proto.DynamicMessage{ 23 1: device.DeviceName, 24 2: capitalize(app.VendorOS), 25 3: device.SystemKernel, 26 4: "", 27 5: app.VendorOS, 28 }, 29 7: false, // set_mute 30 8: false, // register_vendor_type 31 9: true, // regtype 32 }.Encode() 33 } 34 35 // BuildSSOHeartbeatRequest trpc.qq_new_tech.status_svc.StatusService.SsoHeartBeat 36 func BuildSSOHeartbeatRequest() []byte { 37 //return proto.DynamicMessage{ 38 // 1: 1, 39 //}.Encode() 40 // 直接硬编码罢 41 return []byte{0x08, 0x01} 42 } 43 44 func ParseRegisterResponse(response []byte) error { 45 var resp system.ServiceRegisterResponse 46 err := proto.Unmarshal(response, &resp) 47 if err != nil { 48 return err 49 } 50 msg := resp.Message.Unwrap() 51 if msg == "register success" { 52 return nil 53 } 54 return errors.New(msg) 55 } 56 57 func capitalize(s string) string { 58 news := make([]byte, len(s)) 59 rs := []rune(s) 60 n := copy(news, string(unicode.ToUpper(rs[0]))) 61 copy(news[n:], strings.ToLower(s[n:])) 62 return utils.B2S(news) 63 }