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  }