Error code standardization

This commit is contained in:
skiffer-git 2023-01-31 13:37:35 +08:00
parent 6aa4974e29
commit b18fb5cd31
5 changed files with 287 additions and 254 deletions

View File

@ -6,6 +6,7 @@ import (
chat "Open_IM/internal/rpc/msg"
"Open_IM/pkg/common/db/relation"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/common/tracelog"
pbFriend "Open_IM/pkg/proto/friend"
"context"
)
@ -25,7 +26,7 @@ func (s *friendServer) GetBlacks(ctx context.Context, req *pbFriend.GetBlacksReq
if err != nil {
return nil, err
}
resp.BlackUsersInfo = append(resp.BlackUsersInfo, b)
resp.Blacks = append(resp.Blacks, b)
blackIDList = append(blackIDList, black.BlockUserID)
}
return resp, nil
@ -33,7 +34,6 @@ func (s *friendServer) GetBlacks(ctx context.Context, req *pbFriend.GetBlacksReq
func (s *friendServer) IsBlack(ctx context.Context, req *pbFriend.IsBlackReq) (*pbFriend.IsBlackResp, error) {
resp := &pbFriend.IsBlackResp{}
in1, in2, err := s.BlackInterface.CheckIn(ctx, req.UserID1, req.UserID2)
if err != nil {
return nil, err
@ -45,7 +45,6 @@ func (s *friendServer) IsBlack(ctx context.Context, req *pbFriend.IsBlackReq) (*
func (s *friendServer) RemoveBlack(ctx context.Context, req *pbFriend.RemoveBlackReq) (*pbFriend.RemoveBlackResp, error) {
resp := &pbFriend.RemoveBlackResp{}
//Parse token, to find current user information
if err := check.Access(ctx, req.OwnerUserID); err != nil {
return nil, err
}
@ -61,7 +60,7 @@ func (s *friendServer) AddBlack(ctx context.Context, req *pbFriend.AddBlackReq)
if err := token_verify.CheckAccessV3(ctx, req.OwnerUserID); err != nil {
return nil, err
}
black := relation.Black{OwnerUserID: req.OwnerUserID, BlockUserID: req.BlackUserID, OperatorUserID: tracelog.OpUserID(ctx)}
black := relation.Black{OwnerUserID: req.OwnerUserID, BlockUserID: req.BlackUserID, OperatorUserID: tracelog.GetOpUserID(ctx)}
if err := s.BlackInterface.Create(ctx, []*relation.Black{&black}); err != nil {
return nil, err
}

View File

@ -1,6 +1,7 @@
package friend
import (
"Open_IM/internal/common/convert"
chat "Open_IM/internal/rpc/msg"
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
@ -10,6 +11,7 @@ import (
"Open_IM/pkg/common/middleware"
promePkg "Open_IM/pkg/common/prometheus"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/common/tracelog"
"Open_IM/pkg/getcdv3"
pbFriend "Open_IM/pkg/proto/friend"
sdkws "Open_IM/pkg/proto/sdk_ws"
@ -142,7 +144,7 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
return resp, nil
}
func (s *friendServer) ImportFriend(ctx context.Context, req *pbFriend.ImportFriendReq) (*pbFriend.ImportFriendResp, error) {
func (s *friendServer) ImportFriends(ctx context.Context, req *pbFriend.ImportFriendReq) (*pbFriend.ImportFriendResp, error) {
resp := &pbFriend.ImportFriendResp{}
if err := token_verify.CheckAdmin(ctx); err != nil {
return nil, err
@ -153,7 +155,7 @@ func (s *friendServer) ImportFriend(ctx context.Context, req *pbFriend.ImportFri
var friends []*relation.Friend
for _, userID := range utils.RemoveDuplicateElement(req.FriendUserIDs) {
friends = append(friends, &relation.Friend{OwnerUserID: userID, FriendUserID: req.OwnerUserID, AddSource: constant.BecomeFriendByImport, OperatorUserID: tools.OpUserID(ctx)})
friends = append(friends, &relation.Friend{OwnerUserID: userID, FriendUserID: req.OwnerUserID, AddSource: constant.BecomeFriendByImport, OperatorUserID: tracelog.GetOpUserID(ctx)})
}
if len(friends) > 0 {
if err := s.FriendInterface.BecomeFriend(ctx, friends); err != nil {
@ -209,7 +211,7 @@ func (s *friendServer) SetFriendRemark(ctx context.Context, req *pbFriend.SetFri
if err := s.FriendInterface.UpdateRemark(ctx, req.OwnerUserID, req.FriendUserID, req.Remark); err != nil {
return nil, err
}
chat.FriendRemarkSetNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.OwnerUserID, req.FriendUserID)
chat.FriendRemarkSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.OwnerUserID, req.FriendUserID)
return resp, nil
}
@ -236,7 +238,7 @@ func (s *friendServer) GetFriends(ctx context.Context, req *pbFriend.GetFriendsR
}
for _, friendUser := range friends {
friendUserInfo, err := (utils.NewDBFriend(friendUser)).Convert()
friendUserInfo, err := (convert.NewDBFriend(friendUser)).Convert()
if err != nil {
return nil, err
}
@ -245,78 +247,48 @@ func (s *friendServer) GetFriends(ctx context.Context, req *pbFriend.GetFriendsR
return resp, nil
}
// received
func (s *friendServer) GetFriendApplyList(ctx context.Context, req *pbFriend.GetFriendApplyListReq) (*pbFriend.GetFriendApplyListResp, error) {
resp := &pbFriend.GetFriendApplyListResp{}
//Parse token, to find current user information
if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil {
// 获取接收到的好友申请(即别人主动申请的)
func (s *friendServer) GetToFriendsApply(ctx context.Context, req *pbFriend.GetToFriendsApplyReq) (*pbFriend.GetToFriendsApplyResp, error) {
resp := &pbFriend.GetToFriendsApplyResp{}
if err := check.Access(ctx, req.UserID); err != nil {
return nil, err
}
// Find the current user friend applications received
friendRequests, err := s.friendRequestModel.FindToUserID(ctx, req.FromUserID)
friendRequests, err := s.FriendInterface.FindFriendRequestToMe(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
if err != nil {
return nil, err
}
userIDList := make([]string, 0, len(friendRequests))
for _, f := range friendRequests {
userIDList = append(userIDList, f.FromUserID)
}
users, err := GetPublicUserInfoBatch(ctx, userIDList)
if err != nil {
return nil, err
}
userMap := make(map[string]*sdkws.PublicUserInfo)
for i, user := range users {
userMap[user.UserID] = users[i]
}
for _, friendRequest := range friendRequests {
var userInfo sdkws.FriendRequest
if u, ok := userMap[friendRequest.FromUserID]; ok {
utils.CopyStructFields(&userInfo, u)
for _, v := range friendRequests {
fUser, err := convert.NewDBFriendRequest(v).Convert()
if err != nil {
return nil, err
}
utils.CopyStructFields(&userInfo, friendRequest)
resp.FriendRequestList = append(resp.FriendRequestList, &userInfo)
resp.FriendRequests = append(resp.FriendRequests, fUser)
}
return resp, nil
}
func (s *friendServer) GetSelfApplyList(ctx context.Context, req *pbFriend.GetSelfApplyListReq) (*pbFriend.GetSelfApplyListResp, error) {
resp := &pbFriend.GetSelfApplyListResp{}
//Parse token, to find current user information
if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil {
// 获取主动发出去的好友申请列表
func (s *friendServer) GetFromFriendsApply(ctx context.Context, req *pbFriend.GetFromFriendsApplyReq) (*pbFriend.GetFromFriendsApplyResp, error) {
resp := &pbFriend.GetFromFriendsApplyResp{}
if err := check.Access(ctx, req.UserID); err != nil {
return nil, err
}
// Find the self add other userinfo
friendRequests, err := s.FriendRequestInterface.FindFromUserID(ctx, req.FromUserID)
friendRequests, err := s.FriendInterface.FindFriendRequestFromMe(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
if err != nil {
return nil, err
}
userIDList := make([]string, 0, len(friendRequests))
for _, f := range friendRequests {
userIDList = append(userIDList, f.ToUserID)
}
users, err := GetPublicUserInfoBatch(ctx, userIDList)
if err != nil {
return nil, err
}
userMap := make(map[string]*sdkws.PublicUserInfo)
for i, user := range users {
userMap[user.UserID] = users[i]
}
for _, friendRequest := range friendRequests {
var userInfo sdkws.FriendRequest
if u, ok := userMap[friendRequest.ToUserID]; ok {
utils.CopyStructFields(&userInfo, u)
for _, v := range friendRequests {
fUser, err := convert.NewDBFriendRequest(v).Convert()
if err != nil {
return nil, err
}
utils.CopyStructFields(&userInfo, friendRequest)
resp.FriendRequestList = append(resp.FriendRequestList, &userInfo)
resp.FriendRequests = append(resp.FriendRequests, fUser)
}
return resp, nil
}
func (s *friendServer) IsFriend(ctx context.Context, req *pbFriend.IsFriendReq) (*pbFriend.IsFriendResp, error) {
resp := &pbFriend.IsFriendResp{}
err, in1, in2 := s.FriendInterface.CheckIn(ctx, req.UserID1, req.UserID2)
if err != nil {
return nil, err
@ -325,3 +297,19 @@ func (s *friendServer) IsFriend(ctx context.Context, req *pbFriend.IsFriendReq)
resp.InUser2Friends = in2
return resp, nil
}
func (s *friendServer) GetFriendsInfo(ctx context.Context, req *pbFriend.GetFriendsInfoReq) (*pbFriend.GetFriendsInfoResp, error) {
resp := pbFriend.GetFriendsInfoResp{}
friends, err := s.FriendInterface.FindFriends(ctx, req.OwnerUserID, req.FriendUserIDs)
if err != nil {
return nil, err
}
for _, v := range friends {
fUser, err := convert.NewDBFriend(v).Convert()
if err != nil {
return nil, err
}
resp.FriendsInfo = append(resp.FriendsInfo, fUser)
}
return &resp, nil
}

View File

@ -7,13 +7,11 @@ import (
)
type BlackInterface interface {
// Create 增加黑名单
Create(ctx context.Context, blacks []*relation.Black) (err error)
// Delete 删除黑名单
Delete(ctx context.Context, blacks []*relation.Black) (err error)
UpdateByMap(ctx context.Context, ownerUserID, blockUserID string, args map[string]interface{}) (err error)
Update(ctx context.Context, blacks []*relation.Black) (err error)
Find(ctx context.Context, blacks []*relation.Black) (blackList []*relation.Black, err error)
Take(ctx context.Context, ownerUserID, blockUserID string) (black *relation.Black, err error)
// FindOwnerBlacks 获取黑名单列表
FindOwnerBlacks(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (blackList []*relation.Black, err error)
// CheckIn 检查user2是否在user1的黑名单列表中(inUser1Blacks==true) 检查user1是否在user2的黑名单列表中(inUser2Blacks==true)
CheckIn(ctx context.Context, ownerUserID, blackUserID string) (inUser1Blacks bool, inUser2Blacks bool, err error)
@ -26,36 +24,33 @@ type BlackController struct {
func NewBlackController(db *gorm.DB) *BlackController {
return &BlackController{database: NewBlackDatabase(db)}
}
func (f *BlackController) Create(ctx context.Context, blacks []*relation.Black) (err error) {
return f.database.Create(ctx, blacks)
// Create 增加黑名单
func (b *BlackController) Create(ctx context.Context, blacks []*relation.Black) (err error) {
}
func (f *BlackController) Delete(ctx context.Context, blacks []*relation.Black) (err error) {
return f.database.Delete(ctx, blacks)
// Delete 删除黑名单
func (b *BlackController) Delete(ctx context.Context, blacks []*relation.Black) (err error) {
}
func (f *BlackController) UpdateByMap(ctx context.Context, ownerUserID, blockUserID string, args map[string]interface{}) (err error) {
return f.database.UpdateByMap(ctx, ownerUserID, blockUserID, args)
// FindOwnerBlacks 获取黑名单列表
func (b *BlackController) FindOwnerBlacks(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (blackList []*relation.Black, err error) {
}
func (f *BlackController) Update(ctx context.Context, blacks []*relation.Black) (err error) {
return f.database.Update(ctx, blacks)
}
func (f *BlackController) Find(ctx context.Context, blacks []*relation.Black) (blackList []*relation.Black, err error) {
return f.database.Find(ctx, blacks)
}
func (f *BlackController) Take(ctx context.Context, ownerUserID, blockUserID string) (black *relation.Black, err error) {
return f.database.Take(ctx, ownerUserID, blockUserID)
}
func (f *BlackController) FindByOwnerUserID(ctx context.Context, ownerUserID string) (blackList []*relation.Black, err error) {
return f.database.FindByOwnerUserID(ctx, ownerUserID)
// CheckIn 检查user2是否在user1的黑名单列表中(inUser1Blacks==true) 检查user1是否在user2的黑名单列表中(inUser2Blacks==true)
func (b *BlackController) CheckIn(ctx context.Context, ownerUserID, blackUserID string) (inUser1Blacks bool, inUser2Blacks bool, err error) {
}
type BlackDatabaseInterface interface {
// Create 增加黑名单
Create(ctx context.Context, blacks []*relation.Black) (err error)
// Delete 删除黑名单
Delete(ctx context.Context, blacks []*relation.Black) (err error)
UpdateByMap(ctx context.Context, ownerUserID, blockUserID string, args map[string]interface{}) (err error)
Update(ctx context.Context, blacks []*relation.Black) (err error)
Find(ctx context.Context, blacks []*relation.Black) (blackList []*relation.Black, err error)
Take(ctx context.Context, ownerUserID, blockUserID string) (black *relation.Black, err error)
FindByOwnerUserID(ctx context.Context, ownerUserID string) (blackList []*relation.Black, err error)
// FindOwnerBlacks 获取黑名单列表
FindOwnerBlacks(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (blackList []*relation.Black, err error)
// CheckIn 检查user2是否在user1的黑名单列表中(inUser1Blacks==true) 检查user1是否在user2的黑名单列表中(inUser2Blacks==true)
CheckIn(ctx context.Context, ownerUserID, blackUserID string) (inUser1Blacks bool, inUser2Blacks bool, err error)
}
}
type BlackDatabase struct {
@ -70,24 +65,18 @@ func NewBlackDatabase(db *gorm.DB) *BlackDatabase {
return database
}
func (f *BlackDatabase) Create(ctx context.Context, blacks []*relation.Black) (err error) {
return f.sqlDB.Create(ctx, blacks)
// Create 增加黑名单
func (b *BlackDatabase) Create(ctx context.Context, blacks []*relation.Black) (err error) {
}
func (f *BlackDatabase) Delete(ctx context.Context, blacks []*relation.Black) (err error) {
return f.sqlDB.Delete(ctx, blacks)
// Delete 删除黑名单
func (b *BlackDatabase) Delete(ctx context.Context, blacks []*relation.Black) (err error) {
}
func (f *BlackDatabase) UpdateByMap(ctx context.Context, ownerUserID, blockUserID string, args map[string]interface{}) (err error) {
return f.sqlDB.UpdateByMap(ctx, ownerUserID, blockUserID, args)
// FindOwnerBlacks 获取黑名单列表
func (b *BlackDatabase) FindOwnerBlacks(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (blackList []*relation.Black, err error) {
}
func (f *BlackDatabase) Update(ctx context.Context, blacks []*relation.Black) (err error) {
return f.sqlDB.Update(ctx, blacks)
}
func (f *BlackDatabase) Find(ctx context.Context, blacks []*relation.Black) (blackList []*relation.Black, err error) {
return f.sqlDB.Find(ctx, blacks)
}
func (f *BlackDatabase) Take(ctx context.Context, ownerUserID, blockUserID string) (black *relation.Black, err error) {
return f.sqlDB.Take(ctx, ownerUserID, blockUserID)
}
func (f *BlackDatabase) FindByOwnerUserID(ctx context.Context, ownerUserID string) (blackList []*relation.Black, err error) {
return f.sqlDB.FindByOwnerUserID(ctx, ownerUserID)
// CheckIn 检查user2是否在user1的黑名单列表中(inUser1Blacks==true) 检查user1是否在user2的黑名单列表中(inUser2Blacks==true)
func (b *BlackDatabase) CheckIn(ctx context.Context, ownerUserID, blackUserID string) (inUser1Blacks bool, inUser2Blacks bool, err error) {
}

View File

@ -11,23 +11,26 @@ type FriendInterface interface {
CheckIn(ctx context.Context, user1, user2 string) (err error, inUser1Friends bool, inUser2Friends bool)
// AddFriendRequest 增加或者更新好友申请
AddFriendRequest(ctx context.Context, fromUserID, toUserID string, reqMsg string, ex string) (err error)
// 先判断是否在好友表,如果在则不插入
// BecomeFriend 先判断是否在好友表,如果在则不插入
BecomeFriend(ctx context.Context, friends []*relation.Friend) (err error)
//拒绝好友申请
// RefuseFriendRequest 拒绝好友申请
RefuseFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error)
// 同意好友申请
// AgreeFriendRequest 同意好友申请
AgreeFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error)
Create(ctx context.Context, friends []*relation.Friend) (err error)
// Delete 删除好友
Delete(ctx context.Context, ownerUserID string, friendUserIDs string) (err error)
UpdateByMap(ctx context.Context, ownerUserID string, args map[string]interface{}) (err error)
Update(ctx context.Context, friends []*relation.Friend) (err error)
// UpdateRemark 更新好友备注
UpdateRemark(ctx context.Context, ownerUserID, friendUserID, remark string) (err error)
//获取ownerUserID的好友列表
// FindOwnerFriends 获取ownerUserID的好友列表
FindOwnerFriends(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error)
//friendUserID在哪些人的好友列表中
// FindInWhoseFriends friendUserID在哪些人的好友列表中
FindInWhoseFriends(ctx context.Context, friendUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error)
Take(ctx context.Context, ownerUserID, friendUserID string) (friend *relation.Friend, err error)
FindUserState(ctx context.Context, userID1, userID2 string) (friends []*relation.Friend, err error)
// FindFriendRequestFromMe 获取我发出去的好友申请
FindFriendRequestFromMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error)
// FindFriendRequestToMe 获取我收到的的好友申请
FindFriendRequestToMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error)
// FindFriends 获取某人指定好友的信息
FindFriends(ctx context.Context, ownerUserID string, friendUserIDs []string) (friends []*relation.Friend, err error)
}
type FriendController struct {
@ -38,45 +41,79 @@ func NewFriendController(db *gorm.DB) *FriendController {
return &FriendController{database: NewFriendDatabase(db)}
}
func (f *FriendController) Create(ctx context.Context, friends []*relation.Friend) (err error) {
return f.database.Create(ctx, friends)
// CheckIn 检查user2是否在user1的好友列表中(inUser1Friends==true) 检查user1是否在user2的好友列表中(inUser2Friends==true)
func (f *FriendController) CheckIn(ctx context.Context, user1, user2 string) (err error, inUser1Friends bool, inUser2Friends bool) {
}
// AddFriendRequest 增加或者更新好友申请
func (f *FriendController) AddFriendRequest(ctx context.Context, fromUserID, toUserID string, reqMsg string, ex string) (err error) {
}
// BecomeFriend 先判断是否在好友表,如果在则不插入
func (f *FriendController) BecomeFriend(ctx context.Context, friends []*relation.Friend) (err error) {
}
// RefuseFriendRequest 拒绝好友申请
func (f *FriendController) RefuseFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error) {
}
// AgreeFriendRequest 同意好友申请
func (f *FriendController) AgreeFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error) {
}
// Delete 删除好友
func (f *FriendController) Delete(ctx context.Context, ownerUserID string, friendUserIDs string) (err error) {
return f.database.Delete(ctx, ownerUserID, friendUserIDs)
}
func (f *FriendController) UpdateByMap(ctx context.Context, ownerUserID string, args map[string]interface{}) (err error) {
return f.database.UpdateByMap(ctx, ownerUserID, args)
}
func (f *FriendController) Update(ctx context.Context, friends []*relation.Friend) (err error) {
return f.database.Update(ctx, friends)
}
// UpdateRemark 更新好友备注
func (f *FriendController) UpdateRemark(ctx context.Context, ownerUserID, friendUserID, remark string) (err error) {
return f.database.UpdateRemark(ctx, ownerUserID, friendUserID, remark)
}
func (f *FriendController) FindOwnerUserID(ctx context.Context, ownerUserID string) (friends []*relation.Friend, err error) {
return f.database.FindOwnerUserID(ctx, ownerUserID)
// FindOwnerFriends 获取ownerUserID的好友列表
func (f *FriendController) FindOwnerFriends(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error) {
}
func (f *FriendController) FindFriendUserID(ctx context.Context, friendUserID string) (friends []*relation.Friend, err error) {
return f.database.FindFriendUserID(ctx, friendUserID)
// FindInWhoseFriends friendUserID在哪些人的好友列表中
func (f *FriendController) FindInWhoseFriends(ctx context.Context, friendUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error) {
}
func (f *FriendController) Take(ctx context.Context, ownerUserID, friendUserID string) (friend *relation.Friend, err error) {
return f.database.Take(ctx, ownerUserID, friendUserID)
// FindFriendRequestFromMe 获取我发出去的好友申请
func (f *FriendController) FindFriendRequestFromMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error) {
}
func (f *FriendController) FindUserState(ctx context.Context, userID1, userID2 string) (friends []*relation.Friend, err error) {
return f.database.FindUserState(ctx, userID1, userID2)
// FindFriendRequestToMe 获取我收到的的好友申请
func (f *FriendController) FindFriendRequestToMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error) {
}
// FindFriends 获取某人指定好友的信息
func (f *FriendController) FindFriends(ctx context.Context, ownerUserID string, friendUserIDs []string) (friends []*relation.Friend, err error) {
}
type FriendDatabaseInterface interface {
Create(ctx context.Context, friends []*relation.Friend) (err error)
// CheckIn 检查user2是否在user1的好友列表中(inUser1Friends==true) 检查user1是否在user2的好友列表中(inUser2Friends==true)
CheckIn(ctx context.Context, user1, user2 string) (err error, inUser1Friends bool, inUser2Friends bool)
// AddFriendRequest 增加或者更新好友申请
AddFriendRequest(ctx context.Context, fromUserID, toUserID string, reqMsg string, ex string) (err error)
// BecomeFriend 先判断是否在好友表,如果在则不插入
BecomeFriend(ctx context.Context, friends []*relation.Friend) (err error)
// RefuseFriendRequest 拒绝好友申请
RefuseFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error)
// AgreeFriendRequest 同意好友申请
AgreeFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error)
// Delete 删除好友
Delete(ctx context.Context, ownerUserID string, friendUserIDs string) (err error)
UpdateByMap(ctx context.Context, ownerUserID string, args map[string]interface{}) (err error)
Update(ctx context.Context, friends []*relation.Friend) (err error)
// UpdateRemark 更新好友备注
UpdateRemark(ctx context.Context, ownerUserID, friendUserID, remark string) (err error)
FindOwnerUserID(ctx context.Context, ownerUserID string) (friends []*relation.Friend, err error)
FindFriendUserID(ctx context.Context, friendUserID string) (friends []*relation.Friend, err error)
Take(ctx context.Context, ownerUserID, friendUserID string) (friend *relation.Friend, err error)
FindUserState(ctx context.Context, userID1, userID2 string) (friends []*relation.Friend, err error)
// FindOwnerFriends 获取ownerUserID的好友列表
FindOwnerFriends(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error)
// FindInWhoseFriends friendUserID在哪些人的好友列表中
FindInWhoseFriends(ctx context.Context, friendUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error)
// FindFriendRequestFromMe 获取我发出去的好友申请
FindFriendRequestFromMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error)
// FindFriendRequestToMe 获取我收到的的好友申请
FindFriendRequestToMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error)
// FindFriends 获取某人指定好友的信息
FindFriends(ctx context.Context, ownerUserID string, friendUserIDs []string) (friends []*relation.Friend, err error)
}
type FriendDatabase struct {
@ -91,30 +128,50 @@ func NewFriendDatabase(db *gorm.DB) *FriendDatabase {
return database
}
func (f *FriendDatabase) Create(ctx context.Context, friends []*relation.Friend) (err error) {
return f.sqlDB.Create(ctx, friends)
// CheckIn 检查user2是否在user1的好友列表中(inUser1Friends==true) 检查user1是否在user2的好友列表中(inUser2Friends==true)
func (f *FriendDatabase) CheckIn(ctx context.Context, user1, user2 string) (err error, inUser1Friends bool, inUser2Friends bool) {
}
// AddFriendRequest 增加或者更新好友申请
func (f *FriendDatabase) AddFriendRequest(ctx context.Context, fromUserID, toUserID string, reqMsg string, ex string) (err error) {
}
// BecomeFriend 先判断是否在好友表,如果在则不插入
func (f *FriendDatabase) BecomeFriend(ctx context.Context, friends []*relation.Friend) (err error) {
}
// RefuseFriendRequest 拒绝好友申请
func (f *FriendDatabase) RefuseFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error) {
}
// AgreeFriendRequest 同意好友申请
func (f *FriendDatabase) AgreeFriendRequest(ctx context.Context, friendRequest *relation.FriendRequest) (err error) {
}
// Delete 删除好友
func (f *FriendDatabase) Delete(ctx context.Context, ownerUserID string, friendUserIDs string) (err error) {
return f.sqlDB.Delete(ctx, ownerUserID, friendUserIDs)
}
func (f *FriendDatabase) UpdateByMap(ctx context.Context, ownerUserID string, args map[string]interface{}) (err error) {
return f.sqlDB.UpdateByMap(ctx, ownerUserID, args)
}
func (f *FriendDatabase) Update(ctx context.Context, friends []*relation.Friend) (err error) {
return f.sqlDB.Update(ctx, friends)
}
// UpdateRemark 更新好友备注
func (f *FriendDatabase) UpdateRemark(ctx context.Context, ownerUserID, friendUserID, remark string) (err error) {
return f.sqlDB.UpdateRemark(ctx, ownerUserID, friendUserID, remark)
}
func (f *FriendDatabase) FindOwnerUserID(ctx context.Context, ownerUserID string) (friends []*relation.Friend, err error) {
return f.sqlDB.FindOwnerUserID(ctx, ownerUserID)
// FindOwnerFriends 获取ownerUserID的好友列表
func (f *FriendDatabase) FindOwnerFriends(ctx context.Context, ownerUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error) {
}
func (f *FriendDatabase) FindFriendUserID(ctx context.Context, friendUserID string) (friends []*relation.Friend, err error) {
return f.sqlDB.FindFriendUserID(ctx, friendUserID)
// FindInWhoseFriends friendUserID在哪些人的好友列表中
func (f *FriendDatabase) FindInWhoseFriends(ctx context.Context, friendUserID string, pageNumber, showNumber int32) (friends []*relation.Friend, err error) {
}
func (f *FriendDatabase) Take(ctx context.Context, ownerUserID, friendUserID string) (friend *relation.Friend, err error) {
return f.sqlDB.Take(ctx, ownerUserID, friendUserID)
// FindFriendRequestFromMe 获取我发出去的好友申请
func (f *FriendDatabase) FindFriendRequestFromMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error) {
}
func (f *FriendDatabase) FindUserState(ctx context.Context, userID1, userID2 string) (friends []*relation.Friend, err error) {
return f.sqlDB.FindUserState(ctx, userID1, userID2)
// FindFriendRequestToMe 获取我收到的的好友申请
func (f *FriendDatabase) FindFriendRequestToMe(ctx context.Context, userID string, pageNumber, showNumber int32) (friends []*relation.FriendRequest, err error) {
}
// FindFriends 获取某人指定好友的信息
func (f *FriendDatabase) FindFriends(ctx context.Context, ownerUserID string, friendUserIDs []string) (friends []*relation.Friend, err error) {
}

View File

@ -36,7 +36,7 @@ func (m *GetFriendsInfoReq) Reset() { *m = GetFriendsInfoReq{} }
func (m *GetFriendsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetFriendsInfoReq) ProtoMessage() {}
func (*GetFriendsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{0}
return fileDescriptor_friend_ae999c738a77e4f8, []int{0}
}
func (m *GetFriendsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFriendsInfoReq.Unmarshal(m, b)
@ -81,7 +81,7 @@ func (m *GetFriendsInfoResp) Reset() { *m = GetFriendsInfoResp{} }
func (m *GetFriendsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetFriendsInfoResp) ProtoMessage() {}
func (*GetFriendsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{1}
return fileDescriptor_friend_ae999c738a77e4f8, []int{1}
}
func (m *GetFriendsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFriendsInfoResp.Unmarshal(m, b)
@ -122,7 +122,7 @@ func (m *AddFriendReq) Reset() { *m = AddFriendReq{} }
func (m *AddFriendReq) String() string { return proto.CompactTextString(m) }
func (*AddFriendReq) ProtoMessage() {}
func (*AddFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{2}
return fileDescriptor_friend_ae999c738a77e4f8, []int{2}
}
func (m *AddFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddFriendReq.Unmarshal(m, b)
@ -180,7 +180,7 @@ func (m *AddFriendResp) Reset() { *m = AddFriendResp{} }
func (m *AddFriendResp) String() string { return proto.CompactTextString(m) }
func (*AddFriendResp) ProtoMessage() {}
func (*AddFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{3}
return fileDescriptor_friend_ae999c738a77e4f8, []int{3}
}
func (m *AddFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddFriendResp.Unmarshal(m, b)
@ -212,7 +212,7 @@ func (m *ImportFriendReq) Reset() { *m = ImportFriendReq{} }
func (m *ImportFriendReq) String() string { return proto.CompactTextString(m) }
func (*ImportFriendReq) ProtoMessage() {}
func (*ImportFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{4}
return fileDescriptor_friend_ae999c738a77e4f8, []int{4}
}
func (m *ImportFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImportFriendReq.Unmarshal(m, b)
@ -256,7 +256,7 @@ func (m *ImportFriendResp) Reset() { *m = ImportFriendResp{} }
func (m *ImportFriendResp) String() string { return proto.CompactTextString(m) }
func (*ImportFriendResp) ProtoMessage() {}
func (*ImportFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{5}
return fileDescriptor_friend_ae999c738a77e4f8, []int{5}
}
func (m *ImportFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImportFriendResp.Unmarshal(m, b)
@ -288,7 +288,7 @@ func (m *GetToFriendsApplyReq) Reset() { *m = GetToFriendsApplyReq{} }
func (m *GetToFriendsApplyReq) String() string { return proto.CompactTextString(m) }
func (*GetToFriendsApplyReq) ProtoMessage() {}
func (*GetToFriendsApplyReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{6}
return fileDescriptor_friend_ae999c738a77e4f8, []int{6}
}
func (m *GetToFriendsApplyReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetToFriendsApplyReq.Unmarshal(m, b)
@ -334,7 +334,7 @@ func (m *GetToFriendsApplyResp) Reset() { *m = GetToFriendsApplyResp{} }
func (m *GetToFriendsApplyResp) String() string { return proto.CompactTextString(m) }
func (*GetToFriendsApplyResp) ProtoMessage() {}
func (*GetToFriendsApplyResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{7}
return fileDescriptor_friend_ae999c738a77e4f8, []int{7}
}
func (m *GetToFriendsApplyResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetToFriendsApplyResp.Unmarshal(m, b)
@ -380,7 +380,7 @@ func (m *GetFriendsReq) Reset() { *m = GetFriendsReq{} }
func (m *GetFriendsReq) String() string { return proto.CompactTextString(m) }
func (*GetFriendsReq) ProtoMessage() {}
func (*GetFriendsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{8}
return fileDescriptor_friend_ae999c738a77e4f8, []int{8}
}
func (m *GetFriendsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFriendsReq.Unmarshal(m, b)
@ -426,7 +426,7 @@ func (m *GetFriendsResp) Reset() { *m = GetFriendsResp{} }
func (m *GetFriendsResp) String() string { return proto.CompactTextString(m) }
func (*GetFriendsResp) ProtoMessage() {}
func (*GetFriendsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{9}
return fileDescriptor_friend_ae999c738a77e4f8, []int{9}
}
func (m *GetFriendsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFriendsResp.Unmarshal(m, b)
@ -472,7 +472,7 @@ func (m *AddBlackReq) Reset() { *m = AddBlackReq{} }
func (m *AddBlackReq) String() string { return proto.CompactTextString(m) }
func (*AddBlackReq) ProtoMessage() {}
func (*AddBlackReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{10}
return fileDescriptor_friend_ae999c738a77e4f8, []int{10}
}
func (m *AddBlackReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddBlackReq.Unmarshal(m, b)
@ -516,7 +516,7 @@ func (m *AddBlackResp) Reset() { *m = AddBlackResp{} }
func (m *AddBlackResp) String() string { return proto.CompactTextString(m) }
func (*AddBlackResp) ProtoMessage() {}
func (*AddBlackResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{11}
return fileDescriptor_friend_ae999c738a77e4f8, []int{11}
}
func (m *AddBlackResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddBlackResp.Unmarshal(m, b)
@ -548,7 +548,7 @@ func (m *RemoveBlackReq) Reset() { *m = RemoveBlackReq{} }
func (m *RemoveBlackReq) String() string { return proto.CompactTextString(m) }
func (*RemoveBlackReq) ProtoMessage() {}
func (*RemoveBlackReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{12}
return fileDescriptor_friend_ae999c738a77e4f8, []int{12}
}
func (m *RemoveBlackReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveBlackReq.Unmarshal(m, b)
@ -592,7 +592,7 @@ func (m *RemoveBlackResp) Reset() { *m = RemoveBlackResp{} }
func (m *RemoveBlackResp) String() string { return proto.CompactTextString(m) }
func (*RemoveBlackResp) ProtoMessage() {}
func (*RemoveBlackResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{13}
return fileDescriptor_friend_ae999c738a77e4f8, []int{13}
}
func (m *RemoveBlackResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveBlackResp.Unmarshal(m, b)
@ -624,7 +624,7 @@ func (m *GetBlacksReq) Reset() { *m = GetBlacksReq{} }
func (m *GetBlacksReq) String() string { return proto.CompactTextString(m) }
func (*GetBlacksReq) ProtoMessage() {}
func (*GetBlacksReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{14}
return fileDescriptor_friend_ae999c738a77e4f8, []int{14}
}
func (m *GetBlacksReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBlacksReq.Unmarshal(m, b)
@ -659,18 +659,18 @@ func (m *GetBlacksReq) GetPagination() *sdk_ws.RequestPagination {
}
type GetBlacksResp struct {
BlackUsersInfo []*sdk_ws.PublicUserInfo `protobuf:"bytes,1,rep,name=blackUsersInfo" json:"blackUsersInfo,omitempty"`
Total int32 `protobuf:"varint,2,opt,name=total" json:"total,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Blacks []*sdk_ws.BlackInfo `protobuf:"bytes,1,rep,name=blacks" json:"blacks,omitempty"`
Total int32 `protobuf:"varint,2,opt,name=total" json:"total,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetBlacksResp) Reset() { *m = GetBlacksResp{} }
func (m *GetBlacksResp) String() string { return proto.CompactTextString(m) }
func (*GetBlacksResp) ProtoMessage() {}
func (*GetBlacksResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{15}
return fileDescriptor_friend_ae999c738a77e4f8, []int{15}
}
func (m *GetBlacksResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBlacksResp.Unmarshal(m, b)
@ -690,9 +690,9 @@ func (m *GetBlacksResp) XXX_DiscardUnknown() {
var xxx_messageInfo_GetBlacksResp proto.InternalMessageInfo
func (m *GetBlacksResp) GetBlackUsersInfo() []*sdk_ws.PublicUserInfo {
func (m *GetBlacksResp) GetBlacks() []*sdk_ws.BlackInfo {
if m != nil {
return m.BlackUsersInfo
return m.Blacks
}
return nil
}
@ -716,7 +716,7 @@ func (m *IsFriendReq) Reset() { *m = IsFriendReq{} }
func (m *IsFriendReq) String() string { return proto.CompactTextString(m) }
func (*IsFriendReq) ProtoMessage() {}
func (*IsFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{16}
return fileDescriptor_friend_ae999c738a77e4f8, []int{16}
}
func (m *IsFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsFriendReq.Unmarshal(m, b)
@ -762,7 +762,7 @@ func (m *IsFriendResp) Reset() { *m = IsFriendResp{} }
func (m *IsFriendResp) String() string { return proto.CompactTextString(m) }
func (*IsFriendResp) ProtoMessage() {}
func (*IsFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{17}
return fileDescriptor_friend_ae999c738a77e4f8, []int{17}
}
func (m *IsFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsFriendResp.Unmarshal(m, b)
@ -808,7 +808,7 @@ func (m *IsBlackReq) Reset() { *m = IsBlackReq{} }
func (m *IsBlackReq) String() string { return proto.CompactTextString(m) }
func (*IsBlackReq) ProtoMessage() {}
func (*IsBlackReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{18}
return fileDescriptor_friend_ae999c738a77e4f8, []int{18}
}
func (m *IsBlackReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsBlackReq.Unmarshal(m, b)
@ -854,7 +854,7 @@ func (m *IsBlackResp) Reset() { *m = IsBlackResp{} }
func (m *IsBlackResp) String() string { return proto.CompactTextString(m) }
func (*IsBlackResp) ProtoMessage() {}
func (*IsBlackResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{19}
return fileDescriptor_friend_ae999c738a77e4f8, []int{19}
}
func (m *IsBlackResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsBlackResp.Unmarshal(m, b)
@ -900,7 +900,7 @@ func (m *DeleteFriendReq) Reset() { *m = DeleteFriendReq{} }
func (m *DeleteFriendReq) String() string { return proto.CompactTextString(m) }
func (*DeleteFriendReq) ProtoMessage() {}
func (*DeleteFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{20}
return fileDescriptor_friend_ae999c738a77e4f8, []int{20}
}
func (m *DeleteFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteFriendReq.Unmarshal(m, b)
@ -944,7 +944,7 @@ func (m *DeleteFriendResp) Reset() { *m = DeleteFriendResp{} }
func (m *DeleteFriendResp) String() string { return proto.CompactTextString(m) }
func (*DeleteFriendResp) ProtoMessage() {}
func (*DeleteFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{21}
return fileDescriptor_friend_ae999c738a77e4f8, []int{21}
}
func (m *DeleteFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteFriendResp.Unmarshal(m, b)
@ -979,7 +979,7 @@ func (m *RespondFriendApplyReq) Reset() { *m = RespondFriendApplyReq{} }
func (m *RespondFriendApplyReq) String() string { return proto.CompactTextString(m) }
func (*RespondFriendApplyReq) ProtoMessage() {}
func (*RespondFriendApplyReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{22}
return fileDescriptor_friend_ae999c738a77e4f8, []int{22}
}
func (m *RespondFriendApplyReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespondFriendApplyReq.Unmarshal(m, b)
@ -1037,7 +1037,7 @@ func (m *RespondFriendApplyResp) Reset() { *m = RespondFriendApplyResp{}
func (m *RespondFriendApplyResp) String() string { return proto.CompactTextString(m) }
func (*RespondFriendApplyResp) ProtoMessage() {}
func (*RespondFriendApplyResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{23}
return fileDescriptor_friend_ae999c738a77e4f8, []int{23}
}
func (m *RespondFriendApplyResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespondFriendApplyResp.Unmarshal(m, b)
@ -1070,7 +1070,7 @@ func (m *SetFriendRemarkReq) Reset() { *m = SetFriendRemarkReq{} }
func (m *SetFriendRemarkReq) String() string { return proto.CompactTextString(m) }
func (*SetFriendRemarkReq) ProtoMessage() {}
func (*SetFriendRemarkReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{24}
return fileDescriptor_friend_ae999c738a77e4f8, []int{24}
}
func (m *SetFriendRemarkReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetFriendRemarkReq.Unmarshal(m, b)
@ -1121,7 +1121,7 @@ func (m *SetFriendRemarkResp) Reset() { *m = SetFriendRemarkResp{} }
func (m *SetFriendRemarkResp) String() string { return proto.CompactTextString(m) }
func (*SetFriendRemarkResp) ProtoMessage() {}
func (*SetFriendRemarkResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{25}
return fileDescriptor_friend_ae999c738a77e4f8, []int{25}
}
func (m *SetFriendRemarkResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetFriendRemarkResp.Unmarshal(m, b)
@ -1153,7 +1153,7 @@ func (m *GetFromFriendsApplyReq) Reset() { *m = GetFromFriendsApplyReq{}
func (m *GetFromFriendsApplyReq) String() string { return proto.CompactTextString(m) }
func (*GetFromFriendsApplyReq) ProtoMessage() {}
func (*GetFromFriendsApplyReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{26}
return fileDescriptor_friend_ae999c738a77e4f8, []int{26}
}
func (m *GetFromFriendsApplyReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFromFriendsApplyReq.Unmarshal(m, b)
@ -1199,7 +1199,7 @@ func (m *GetFromFriendsApplyResp) Reset() { *m = GetFromFriendsApplyResp
func (m *GetFromFriendsApplyResp) String() string { return proto.CompactTextString(m) }
func (*GetFromFriendsApplyResp) ProtoMessage() {}
func (*GetFromFriendsApplyResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_1cbbba1bcb7ea397, []int{27}
return fileDescriptor_friend_ae999c738a77e4f8, []int{27}
}
func (m *GetFromFriendsApplyResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFromFriendsApplyResp.Unmarshal(m, b)
@ -1793,68 +1793,68 @@ var _Friend_serviceDesc = grpc.ServiceDesc{
Metadata: "friend/friend.proto",
}
func init() { proto.RegisterFile("friend/friend.proto", fileDescriptor_friend_1cbbba1bcb7ea397) }
func init() { proto.RegisterFile("friend/friend.proto", fileDescriptor_friend_ae999c738a77e4f8) }
var fileDescriptor_friend_1cbbba1bcb7ea397 = []byte{
// 958 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x6d, 0x6f, 0x1b, 0x45,
0x10, 0x96, 0x1d, 0xf2, 0x36, 0x76, 0x6c, 0x3a, 0x8e, 0x5d, 0x73, 0x34, 0xa9, 0xbb, 0xaa, 0x50,
0xbe, 0x34, 0x56, 0x8d, 0x90, 0x90, 0x2a, 0x01, 0x89, 0xaa, 0x82, 0x91, 0x22, 0xc2, 0xb5, 0x05,
0x15, 0x24, 0xa2, 0x4b, 0xbd, 0x36, 0xa7, 0x9c, 0xef, 0x36, 0x37, 0x97, 0xb8, 0xfd, 0x21, 0xfc,
0x15, 0x7e, 0x1f, 0xba, 0xdd, 0xbd, 0xdb, 0xbd, 0xf3, 0x39, 0x6a, 0x43, 0xe0, 0x93, 0x35, 0xcf,
0xcc, 0xec, 0xbc, 0xec, 0x78, 0x9e, 0x3d, 0xe8, 0x4c, 0x63, 0x9f, 0x87, 0x93, 0xa1, 0xfa, 0x39,
0x14, 0x71, 0x94, 0x44, 0xb8, 0xa1, 0x24, 0xe7, 0xe0, 0x27, 0xc1, 0xc3, 0x27, 0xe3, 0x93, 0x27,
0x2f, 0x79, 0x7c, 0xcd, 0xe3, 0xa1, 0xb8, 0x98, 0x0d, 0xa5, 0xc5, 0x90, 0x26, 0x17, 0x67, 0x0b,
0x1a, 0x2e, 0x48, 0x79, 0xb0, 0xdf, 0xe1, 0xde, 0x8c, 0x27, 0x2f, 0xa4, 0x1b, 0x8d, 0xc3, 0x69,
0xe4, 0xf2, 0x4b, 0x1c, 0x40, 0x23, 0x5a, 0x84, 0x3c, 0x7e, 0x4d, 0x3c, 0x1e, 0x3f, 0xef, 0xd7,
0x06, 0xb5, 0x83, 0x6d, 0xd7, 0x86, 0xf0, 0x31, 0xec, 0xa8, 0x50, 0x4a, 0xa6, 0x7e, 0x7d, 0xb0,
0x76, 0xb0, 0xed, 0x16, 0x41, 0xf6, 0x1a, 0xb0, 0x7c, 0x38, 0x09, 0xfc, 0x16, 0x1a, 0x53, 0x03,
0xf5, 0x6b, 0x83, 0xb5, 0x83, 0xc6, 0x68, 0xef, 0x90, 0x64, 0xaa, 0x67, 0x9e, 0xf0, 0xcf, 0x84,
0x17, 0x7b, 0x73, 0x3a, 0x54, 0x8e, 0xd2, 0xcf, 0xf6, 0x60, 0x31, 0x34, 0xbd, 0xc9, 0x44, 0x69,
0xd3, 0x74, 0xf7, 0x01, 0xa6, 0x71, 0x34, 0x2f, 0x64, 0x6b, 0x21, 0xe8, 0xc0, 0x56, 0x12, 0x69,
0x6d, 0x5d, 0x6a, 0x73, 0x19, 0x7b, 0xb0, 0x11, 0xf3, 0xcb, 0x13, 0x9a, 0xf5, 0xd7, 0xa4, 0x46,
0x4b, 0xd8, 0x82, 0x3a, 0x7f, 0xd7, 0xff, 0x44, 0x62, 0x75, 0xfe, 0x8e, 0xb5, 0x61, 0xc7, 0x8a,
0x49, 0x82, 0xbd, 0x81, 0xb6, 0x3f, 0x17, 0x51, 0x9c, 0x98, 0x3c, 0xee, 0xaa, 0x6d, 0x08, 0x9f,
0x16, 0x8f, 0x26, 0xc1, 0x12, 0xd8, 0x9d, 0xf1, 0xe4, 0x55, 0xa4, 0x9b, 0x79, 0x24, 0x44, 0xf0,
0x3e, 0x8d, 0xd9, 0x83, 0x8d, 0x2b, 0x3b, 0x9c, 0x96, 0xf0, 0x39, 0x80, 0xf0, 0x66, 0x7e, 0xe8,
0x25, 0x7e, 0x14, 0xca, 0xaa, 0x1b, 0xa3, 0xc7, 0x15, 0x3d, 0x76, 0xf9, 0xe5, 0x15, 0xa7, 0xe4,
0x34, 0xb7, 0x75, 0x2d, 0x3f, 0xb6, 0x80, 0x6e, 0x45, 0x54, 0x12, 0xf8, 0x03, 0xb4, 0xf2, 0xba,
0x53, 0x7f, 0xd2, 0xd7, 0x38, 0x58, 0x79, 0x8d, 0xda, 0xd0, 0x2d, 0xf9, 0xe1, 0x2e, 0xac, 0x27,
0x51, 0xe2, 0x05, 0x32, 0xc7, 0x75, 0x57, 0x09, 0x6c, 0x0e, 0x3b, 0x66, 0x72, 0xd2, 0x3a, 0x8b,
0xf5, 0xd4, 0x6e, 0x57, 0x8f, 0xd5, 0xad, 0xba, 0xdd, 0x2d, 0x36, 0x83, 0x96, 0x1d, 0x4e, 0x0d,
0xe9, 0x8b, 0x8f, 0x1e, 0x52, 0xcb, 0x63, 0x45, 0x5d, 0x3f, 0x43, 0xc3, 0x9b, 0x4c, 0x8e, 0x03,
0xef, 0xed, 0xc5, 0x87, 0x4d, 0xcc, 0x00, 0x1a, 0xe7, 0xa9, 0x75, 0x61, 0x7c, 0x6d, 0x88, 0xb5,
0xe4, 0xbf, 0x41, 0x1f, 0x49, 0x82, 0xbd, 0x82, 0x56, 0xcc, 0xe7, 0xd1, 0x35, 0xbf, 0xd3, 0x28,
0xf7, 0xa0, 0x5d, 0x38, 0x95, 0x04, 0x0b, 0xa0, 0x39, 0xe3, 0x89, 0x94, 0xe9, 0xbf, 0x1f, 0x45,
0x21, 0x27, 0x22, 0x8b, 0x46, 0x02, 0xc7, 0xd0, 0xca, 0x13, 0xb4, 0x2f, 0xe9, 0x51, 0xc5, 0xd1,
0xa7, 0x57, 0xe7, 0x81, 0xff, 0x56, 0x96, 0x92, 0x5e, 0x54, 0xc9, 0x71, 0xc5, 0x5d, 0x1d, 0x41,
0xc3, 0x27, 0xf3, 0xef, 0xee, 0xc3, 0xa6, 0x2a, 0xe8, 0xa9, 0xae, 0x2f, 0x13, 0x8d, 0x66, 0xa4,
0x3b, 0x97, 0x89, 0xec, 0x0f, 0x68, 0x9a, 0x23, 0x48, 0xe0, 0x17, 0xd0, 0xf2, 0xc3, 0x34, 0xee,
0x53, 0x3d, 0x2a, 0xf2, 0xa8, 0x2d, 0xb7, 0x84, 0x1a, 0xbb, 0x51, 0x66, 0x57, 0xb7, 0xed, 0x32,
0x94, 0x7d, 0x07, 0xe0, 0x53, 0x7e, 0xcf, 0xb7, 0xc9, 0xf0, 0x4d, 0x5a, 0x64, 0x7e, 0xa7, 0xe9,
0x82, 0xd2, 0xa9, 0xa8, 0x4e, 0xeb, 0xfc, 0x8a, 0xa0, 0xb1, 0x1a, 0x69, 0xab, 0xba, 0x6d, 0xa5,
0x41, 0xf6, 0x2b, 0xb4, 0x27, 0x3c, 0xe0, 0x09, 0xff, 0x98, 0x0d, 0xc9, 0xa0, 0x69, 0x2f, 0x43,
0x9d, 0x6e, 0x01, 0x4b, 0xf7, 0x63, 0xf1, 0x60, 0x12, 0xec, 0xaf, 0x1a, 0x74, 0x63, 0x4e, 0x22,
0x0a, 0xf5, 0x92, 0xce, 0x37, 0xe4, 0xbf, 0x61, 0x07, 0x06, 0xcd, 0x3f, 0xbd, 0x70, 0x12, 0x70,
0x97, 0xd3, 0x55, 0x90, 0x48, 0x8e, 0x58, 0x77, 0x0b, 0x18, 0x3e, 0x80, 0x6d, 0x25, 0xa7, 0x24,
0xa2, 0x08, 0xc3, 0x00, 0xac, 0x0f, 0xbd, 0xaa, 0xb4, 0x48, 0xb0, 0x18, 0x90, 0x78, 0xbe, 0xe2,
0xe7, 0x5e, 0x7c, 0x71, 0x67, 0x1d, 0x52, 0xac, 0x96, 0x1e, 0x69, 0x58, 0x2d, 0x95, 0x58, 0x17,
0x3a, 0x4b, 0x31, 0x49, 0xb0, 0x6b, 0xe8, 0xc9, 0xf5, 0x17, 0xcd, 0xff, 0x5f, 0x7a, 0x79, 0x0f,
0xf7, 0x2b, 0xe3, 0x2a, 0x82, 0x99, 0xde, 0x92, 0x60, 0xa6, 0x1f, 0x40, 0x30, 0xa3, 0xbf, 0x37,
0x41, 0x3f, 0x96, 0xf0, 0x6b, 0xd8, 0xce, 0xa9, 0x1d, 0x77, 0x0f, 0xf5, 0x83, 0xca, 0x7e, 0x61,
0x38, 0xdd, 0x0a, 0x94, 0x04, 0x9e, 0xca, 0xc7, 0x53, 0x91, 0x1e, 0xf1, 0x41, 0x66, 0x5b, 0xc5,
0xd7, 0xce, 0xde, 0x0d, 0x5a, 0x12, 0xf8, 0x0b, 0x74, 0x2a, 0x3a, 0x82, 0xfb, 0x96, 0x57, 0xc5,
0x35, 0x39, 0x0f, 0x6f, 0xd4, 0x93, 0xc0, 0x67, 0x00, 0x86, 0xe0, 0xb0, 0x5b, 0x30, 0xcf, 0x38,
0xd6, 0xe9, 0x55, 0xc1, 0x24, 0xf0, 0x2b, 0xd8, 0xca, 0x18, 0x06, 0x3b, 0x56, 0x27, 0xb2, 0xc5,
0xe3, 0xec, 0x2e, 0x83, 0x24, 0xf0, 0x1b, 0x68, 0x58, 0x94, 0x81, 0xf9, 0xe9, 0x45, 0x76, 0x72,
0xee, 0x57, 0xe2, 0x2a, 0x6c, 0xb6, 0x3c, 0x4d, 0x58, 0x6b, 0x23, 0x9b, 0xb0, 0x85, 0x1d, 0x3b,
0x82, 0x4d, 0xbd, 0xd1, 0x10, 0x8d, 0x41, 0x1e, 0xae, 0xb3, 0x84, 0x91, 0x48, 0x47, 0x20, 0x27,
0x17, 0x33, 0x02, 0x36, 0xbb, 0x39, 0xdd, 0x0a, 0x94, 0x04, 0x1e, 0x41, 0xd3, 0xde, 0x45, 0x98,
0x57, 0x53, 0x5a, 0x7d, 0x4e, 0xbf, 0x5a, 0x41, 0x02, 0x5f, 0x02, 0x2e, 0xaf, 0x08, 0xdc, 0x33,
0x6d, 0xa9, 0xd8, 0x6a, 0xce, 0xfe, 0x4d, 0x6a, 0x12, 0xf8, 0x23, 0xb4, 0x4b, 0xff, 0x74, 0x74,
0x32, 0x97, 0xe5, 0xb5, 0xe3, 0x7c, 0xbe, 0x52, 0x47, 0x02, 0x8f, 0x61, 0xc7, 0x7e, 0x8f, 0x92,
0x29, 0xb2, 0xf4, 0x02, 0x36, 0x45, 0x96, 0xdf, 0xaf, 0xf8, 0xbd, 0xfd, 0xc2, 0x92, 0xa4, 0xfb,
0xd9, 0xf2, 0xb4, 0xe9, 0xef, 0x0f, 0xc7, 0x59, 0xa5, 0x22, 0x71, 0xfc, 0xe8, 0xb7, 0x87, 0xe9,
0xc7, 0xcd, 0xd9, 0xf8, 0xc4, 0xfa, 0xaa, 0x51, 0xe6, 0xcf, 0xd4, 0xcf, 0xf9, 0x86, 0x04, 0xbf,
0xfc, 0x27, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x71, 0xd7, 0x68, 0x23, 0x0d, 0x00, 0x00,
var fileDescriptor_friend_ae999c738a77e4f8 = []byte{
// 955 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xef, 0x6e, 0x1b, 0x45,
0x10, 0x97, 0x1d, 0xe2, 0x24, 0x63, 0xc7, 0xa6, 0xe3, 0xd8, 0x3d, 0x8e, 0x24, 0x35, 0xab, 0x0a,
0xe5, 0x4b, 0x63, 0xd5, 0x80, 0x84, 0x54, 0x09, 0x48, 0x54, 0x15, 0x82, 0x14, 0x51, 0xae, 0x2d,
0xa8, 0x54, 0x22, 0xba, 0x72, 0x6b, 0x73, 0x8a, 0x7d, 0xb7, 0xb9, 0xb9, 0xc4, 0xed, 0x83, 0xf0,
0x2a, 0x3c, 0x1f, 0xba, 0xdd, 0xbd, 0xdb, 0x3d, 0xfb, 0x1c, 0x35, 0x21, 0xf0, 0xc9, 0x9a, 0xdf,
0xcc, 0xec, 0xfc, 0xd9, 0xf1, 0xfc, 0xf6, 0xa0, 0x3b, 0x4e, 0x42, 0x1e, 0x05, 0x43, 0xf5, 0x73,
0x28, 0x92, 0x38, 0x8d, 0xb1, 0xa1, 0x24, 0xf7, 0xe0, 0x27, 0xc1, 0xa3, 0x47, 0x27, 0xa7, 0x8f,
0x5e, 0xf0, 0xe4, 0x8a, 0x27, 0x43, 0x71, 0x3e, 0x19, 0x4a, 0x8b, 0x21, 0x05, 0xe7, 0x67, 0x73,
0x1a, 0xce, 0x49, 0x79, 0xb0, 0x37, 0x70, 0x6f, 0xc2, 0xd3, 0x67, 0xd2, 0x8d, 0x4e, 0xa2, 0x71,
0xec, 0xf1, 0x0b, 0x1c, 0x40, 0x33, 0x9e, 0x47, 0x3c, 0x79, 0x45, 0x3c, 0x39, 0x79, 0xea, 0xd4,
0x06, 0xb5, 0x83, 0x2d, 0xcf, 0x86, 0xf0, 0x21, 0x6c, 0xab, 0x50, 0x4a, 0x26, 0xa7, 0x3e, 0x58,
0x3b, 0xd8, 0xf2, 0xca, 0x20, 0x7b, 0x05, 0xb8, 0x78, 0x38, 0x09, 0xfc, 0x16, 0x9a, 0x63, 0x03,
0x39, 0xb5, 0xc1, 0xda, 0x41, 0x73, 0xb4, 0x77, 0x48, 0x32, 0xd5, 0x33, 0x5f, 0x84, 0x67, 0xc2,
0x4f, 0xfc, 0x19, 0x1d, 0x2a, 0x47, 0xe9, 0x67, 0x7b, 0xb0, 0x04, 0x5a, 0x7e, 0x10, 0x28, 0x6d,
0x96, 0xee, 0x3e, 0xc0, 0x38, 0x89, 0x67, 0xa5, 0x6c, 0x2d, 0x04, 0x5d, 0xd8, 0x4c, 0x63, 0xad,
0xad, 0x4b, 0x6d, 0x21, 0x63, 0x1f, 0x1a, 0x09, 0xbf, 0x38, 0xa5, 0x89, 0xb3, 0x26, 0x35, 0x5a,
0xc2, 0x36, 0xd4, 0xf9, 0x3b, 0xe7, 0x23, 0x89, 0xd5, 0xf9, 0x3b, 0xd6, 0x81, 0x6d, 0x2b, 0x26,
0x09, 0xf6, 0x1a, 0x3a, 0xe1, 0x4c, 0xc4, 0x49, 0x6a, 0xf2, 0xb8, 0xab, 0xb6, 0x21, 0x7c, 0x5c,
0x3e, 0x9a, 0x04, 0x4b, 0x61, 0x67, 0xc2, 0xd3, 0x97, 0xb1, 0x6e, 0xe6, 0x91, 0x10, 0xd3, 0xf7,
0x59, 0xcc, 0x3e, 0x34, 0x2e, 0xed, 0x70, 0x5a, 0xc2, 0xa7, 0x00, 0xc2, 0x9f, 0x84, 0x91, 0x9f,
0x86, 0x71, 0x24, 0xab, 0x6e, 0x8e, 0x1e, 0x56, 0xf4, 0xd8, 0xe3, 0x17, 0x97, 0x9c, 0xd2, 0xe7,
0x85, 0xad, 0x67, 0xf9, 0xb1, 0x39, 0xf4, 0x2a, 0xa2, 0x92, 0xc0, 0x1f, 0xa0, 0x5d, 0xd4, 0x9d,
0xf9, 0x93, 0xbe, 0xc6, 0xc1, 0xca, 0x6b, 0xd4, 0x86, 0xde, 0x82, 0x1f, 0xee, 0xc0, 0x7a, 0x1a,
0xa7, 0xfe, 0x54, 0xe6, 0xb8, 0xee, 0x29, 0x81, 0xcd, 0x60, 0xdb, 0x4c, 0x4e, 0x56, 0x67, 0xb9,
0x9e, 0xda, 0xed, 0xea, 0xb1, 0xba, 0x55, 0xb7, 0xbb, 0xc5, 0x26, 0xd0, 0xb6, 0xc3, 0xa9, 0x21,
0x7d, 0x76, 0xe3, 0x21, 0xb5, 0x3c, 0x56, 0xd4, 0xf5, 0x33, 0x34, 0xfd, 0x20, 0x38, 0x9e, 0xfa,
0x7f, 0x9c, 0x7f, 0xd8, 0xc4, 0x0c, 0xa0, 0xf9, 0x36, 0xb3, 0x2e, 0x8d, 0xaf, 0x0d, 0xb1, 0xb6,
0xfc, 0x37, 0xe8, 0x23, 0x49, 0xb0, 0x97, 0xd0, 0x4e, 0xf8, 0x2c, 0xbe, 0xe2, 0x77, 0x1a, 0xe5,
0x1e, 0x74, 0x4a, 0xa7, 0x92, 0x60, 0x53, 0x68, 0x4d, 0x78, 0x2a, 0x65, 0xfa, 0xef, 0x47, 0xf1,
0x8d, 0x9c, 0x88, 0x3c, 0x1a, 0x09, 0xfc, 0x12, 0x1a, 0x32, 0xc1, 0x7c, 0xf4, 0x76, 0x2b, 0x8e,
0x94, 0xe6, 0xf2, 0x6e, 0xb4, 0xed, 0x8a, 0x6b, 0x39, 0x82, 0x66, 0x48, 0xe6, 0x8f, 0xec, 0xc0,
0x86, 0xca, 0xfd, 0xb1, 0x2e, 0x25, 0x17, 0x8d, 0x66, 0xa4, 0x9b, 0x94, 0x8b, 0xec, 0x77, 0x68,
0x99, 0x23, 0x48, 0xe0, 0xe7, 0xd0, 0x0e, 0xa3, 0xac, 0x79, 0x8f, 0xf5, 0x54, 0xc8, 0xa3, 0x36,
0xbd, 0x05, 0xd4, 0xd8, 0x8d, 0x72, 0xbb, 0xba, 0x6d, 0x97, 0xa3, 0xec, 0x3b, 0x80, 0x90, 0x8a,
0x2b, 0xbd, 0x4d, 0x86, 0xaf, 0xb3, 0x22, 0x8b, 0xeb, 0xcb, 0x76, 0x91, 0x4e, 0xe5, 0x38, 0x6f,
0x63, 0x16, 0xb7, 0x0c, 0x1a, 0xab, 0x91, 0xb6, 0xaa, 0xdb, 0x56, 0x1a, 0x64, 0xbf, 0x42, 0x27,
0xe0, 0x53, 0x9e, 0xf2, 0x9b, 0x2c, 0x43, 0x06, 0x2d, 0x7b, 0xef, 0xe9, 0x74, 0x4b, 0x58, 0xb6,
0x0a, 0xcb, 0x07, 0x93, 0x60, 0x7f, 0xd5, 0xa0, 0x97, 0x70, 0x12, 0x71, 0xa4, 0xf7, 0x71, 0xb1,
0x0c, 0xff, 0x0d, 0x11, 0x30, 0x68, 0xfd, 0xe9, 0x47, 0xc1, 0x94, 0x7b, 0x9c, 0x2e, 0xa7, 0xa9,
0xa4, 0x83, 0x75, 0xaf, 0x84, 0xe1, 0x2e, 0x6c, 0x29, 0x39, 0xe3, 0x0b, 0xc5, 0x0d, 0x06, 0x60,
0x0e, 0xf4, 0xab, 0xd2, 0x22, 0xc1, 0x12, 0x40, 0xe2, 0xc5, 0x36, 0x9f, 0xf9, 0xc9, 0xf9, 0x9d,
0x75, 0x48, 0x11, 0x58, 0x76, 0xa4, 0x21, 0xb0, 0x4c, 0x62, 0x3d, 0xe8, 0x2e, 0xc5, 0x24, 0xc1,
0xae, 0xa0, 0x2f, 0x37, 0x5d, 0x3c, 0xfb, 0x7f, 0x99, 0xe4, 0x3d, 0xdc, 0xaf, 0x8c, 0xab, 0xb8,
0x64, 0x7c, 0x4b, 0x2e, 0x19, 0x7f, 0x00, 0x97, 0x8c, 0xfe, 0xde, 0x00, 0xfd, 0x2e, 0xc2, 0xaf,
0x61, 0xab, 0x60, 0x71, 0xdc, 0x39, 0xd4, 0x6f, 0x27, 0xfb, 0x31, 0xe1, 0xf6, 0x2a, 0x50, 0x12,
0xf8, 0x5c, 0xbe, 0x93, 0xca, 0x4c, 0x88, 0xbb, 0xb9, 0x6d, 0x15, 0x35, 0xbb, 0x7b, 0xd7, 0x68,
0x49, 0xe0, 0x2f, 0xd0, 0xad, 0xe8, 0x08, 0xee, 0x5b, 0x5e, 0x15, 0xd7, 0xe4, 0x3e, 0xb8, 0x56,
0x4f, 0x02, 0x9f, 0x00, 0x18, 0x2e, 0xc3, 0x5e, 0xc9, 0x3c, 0xa7, 0x53, 0xb7, 0x5f, 0x05, 0x93,
0xc0, 0xaf, 0x60, 0x33, 0x27, 0x13, 0xec, 0x5a, 0x9d, 0xc8, 0x17, 0x8f, 0xbb, 0xb3, 0x0c, 0x92,
0xc0, 0x6f, 0xa0, 0x69, 0xb1, 0x03, 0x16, 0xa7, 0x97, 0x89, 0xc8, 0xbd, 0x5f, 0x89, 0xab, 0xb0,
0xf9, 0xf2, 0x34, 0x61, 0xad, 0x8d, 0x6c, 0xc2, 0x96, 0x76, 0xec, 0x08, 0x36, 0xf4, 0x46, 0x43,
0x34, 0x06, 0x45, 0xb8, 0xee, 0x12, 0x46, 0x22, 0x1b, 0x81, 0x82, 0x47, 0xcc, 0x08, 0xd8, 0x44,
0xe6, 0xf6, 0x2a, 0x50, 0x12, 0x78, 0x04, 0x2d, 0x7b, 0x17, 0x61, 0x51, 0xcd, 0xc2, 0xea, 0x73,
0x9d, 0x6a, 0x05, 0x09, 0x7c, 0x01, 0xb8, 0xbc, 0x22, 0x70, 0xcf, 0xb4, 0xa5, 0x62, 0xab, 0xb9,
0xfb, 0xd7, 0xa9, 0x49, 0xe0, 0x8f, 0xd0, 0x59, 0xf8, 0xa7, 0xa3, 0x9b, 0xbb, 0x2c, 0xaf, 0x1d,
0xf7, 0xd3, 0x95, 0x3a, 0x12, 0x78, 0x0c, 0xdb, 0xf6, 0xd3, 0x93, 0x4c, 0x91, 0x0b, 0x8f, 0x5d,
0x53, 0xe4, 0xe2, 0x53, 0x15, 0xbf, 0xb7, 0x1f, 0x53, 0xf2, 0x2d, 0xf4, 0xc9, 0xf2, 0xb4, 0xe9,
0x4f, 0x0d, 0xd7, 0x5d, 0xa5, 0x22, 0x71, 0xfc, 0xd9, 0x6f, 0x0f, 0xb2, 0xef, 0x98, 0xb3, 0x93,
0x53, 0xeb, 0x03, 0x46, 0x99, 0x3f, 0x51, 0x3f, 0x6f, 0x1b, 0x12, 0xfc, 0xe2, 0x9f, 0x00, 0x00,
0x00, 0xff, 0xff, 0xdd, 0xee, 0xa4, 0x0d, 0x0e, 0x0d, 0x00, 0x00,
}