From e45af9ef2b0163368c6a23384d4c29dd084aadd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 20 Jun 2024 15:57:42 +0900 Subject: [PATCH] optimize(oidb): apply generic ParseTypedError --- client/packets/oidb/FetchGroupRequests.go | 12 +----------- client/packets/oidb/GroupImageUpload.go | 11 +---------- client/packets/oidb/GroupRecordUpload.go | 11 +---------- client/packets/oidb/PrivateImageUpload.go | 10 +--------- client/packets/oidb/PrivateRecordUpload.go | 11 +---------- client/packets/oidb/builder.go | 12 ++++++++++++ 6 files changed, 17 insertions(+), 50 deletions(-) diff --git a/client/packets/oidb/FetchGroupRequests.go b/client/packets/oidb/FetchGroupRequests.go index b0107f51..f2eeb59b 100644 --- a/client/packets/oidb/FetchGroupRequests.go +++ b/client/packets/oidb/FetchGroupRequests.go @@ -1,8 +1,6 @@ package oidb import ( - "errors" - "github.com/LagrangeDev/LagrangeGo/client/packets/pb/service/oidb" ) @@ -15,13 +13,5 @@ func BuildFetchGroupRequestsReq() (*OidbPacket, error) { } func ParseFetchGroupRequestsReq(data []byte) (*oidb.OidbSvcTrpcTcp0X10C0_1Response, error) { - var resp oidb.OidbSvcTrpcTcp0X10C0_1Response - baseResp, err := ParseOidbPacket(data, &resp) - if err != nil { - return nil, err - } - if baseResp.ErrorCode != 0 { - return nil, errors.New(baseResp.ErrorMsg) - } - return &resp, nil + return ParseTypedError[oidb.OidbSvcTrpcTcp0X10C0_1Response](data) } diff --git a/client/packets/oidb/GroupImageUpload.go b/client/packets/oidb/GroupImageUpload.go index 1af96afc..3e9ea5e8 100644 --- a/client/packets/oidb/GroupImageUpload.go +++ b/client/packets/oidb/GroupImageUpload.go @@ -95,14 +95,5 @@ func BuildGroupImageUploadReq(groupUin uint32, image *message.ImageElement) (*Oi } func ParseGroupImageUploadResp(data []byte) (*oidb.NTV2RichMediaResp, error) { // TODO: return proper response - var resp oidb.NTV2RichMediaResp - baseResp, err := ParseOidbPacket(data, &resp) - if err != nil { - return nil, err - } - if baseResp.ErrorCode != 0 { - return nil, errors.New(baseResp.ErrorMsg) - } - - return &resp, nil + return ParseTypedError[oidb.NTV2RichMediaResp](data) } diff --git a/client/packets/oidb/GroupRecordUpload.go b/client/packets/oidb/GroupRecordUpload.go index b81953c5..881b693f 100644 --- a/client/packets/oidb/GroupRecordUpload.go +++ b/client/packets/oidb/GroupRecordUpload.go @@ -80,14 +80,5 @@ func BuildGroupRecordUploadReq(groupCode uint32, record *message.VoiceElement) ( } func ParseGroupRecordUploadResp(data []byte) (*oidb.NTV2RichMediaResp, error) { - var resp oidb.NTV2RichMediaResp - baseResp, err := ParseOidbPacket(data, &resp) - if err != nil { - return nil, err - } - if baseResp.ErrorCode != 0 { - return nil, errors.New(baseResp.ErrorMsg) - } - - return &resp, nil + return ParseTypedError[oidb.NTV2RichMediaResp](data) } diff --git a/client/packets/oidb/PrivateImageUpload.go b/client/packets/oidb/PrivateImageUpload.go index 17f3096d..3ca12f30 100644 --- a/client/packets/oidb/PrivateImageUpload.go +++ b/client/packets/oidb/PrivateImageUpload.go @@ -96,13 +96,5 @@ func BuildPrivateImageUploadReq(targetUid string, image *message.ImageElement) ( } func ParsePrivateImageUploadResp(data []byte) (*oidb.NTV2RichMediaResp, error) { - var resp oidb.NTV2RichMediaResp - baseResp, err := ParseOidbPacket(data, &resp) - if err != nil { - return nil, err - } - if baseResp.ErrorCode != 0 { - return nil, errors.New(baseResp.ErrorMsg) - } - return &resp, nil + return ParseTypedError[oidb.NTV2RichMediaResp](data) } diff --git a/client/packets/oidb/PrivateRecordUpload.go b/client/packets/oidb/PrivateRecordUpload.go index 65848675..c37bffab 100644 --- a/client/packets/oidb/PrivateRecordUpload.go +++ b/client/packets/oidb/PrivateRecordUpload.go @@ -75,14 +75,5 @@ func BuildPrivateRecordUploadReq(targetUid string, record *message.VoiceElement) } func ParsePrivateRecordUploadResp(data []byte) (*oidb.NTV2RichMediaResp, error) { - var resp oidb.NTV2RichMediaResp - baseResp, err := ParseOidbPacket(data, &resp) - if err != nil { - return nil, err - } - if baseResp.ErrorCode != 0 { - return nil, errors.New(baseResp.ErrorMsg) - } - - return &resp, nil + return ParseTypedError[oidb.NTV2RichMediaResp](data) } diff --git a/client/packets/oidb/builder.go b/client/packets/oidb/builder.go index 661b786f..1f90f0e9 100644 --- a/client/packets/oidb/builder.go +++ b/client/packets/oidb/builder.go @@ -77,3 +77,15 @@ func CheckTypedError[T any](data []byte) error { } return nil } + +func ParseTypedError[T any](data []byte) (*T, error) { + var resp T + baseResp, err := ParseOidbPacket(data, &resp) + if err != nil { + return nil, err + } + if baseResp.ErrorCode != 0 { + return nil, errors.New(baseResp.ErrorMsg) + } + return &resp, nil +}