diff --git a/go.mod b/go.mod index 0ddea16ea..2aa573a54 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( firebase.google.com/go v3.13.0+incompatible - github.com/OpenIMSDK/openKeeper v0.0.4 + github.com/OpenIMSDK/openKeeper v0.0.5 github.com/OpenIMSDK/open_utils v1.0.8 github.com/Shopify/sarama v1.32.0 github.com/antonfisher/nested-logrus-formatter v1.3.1 diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index 96e56b398..95bac5725 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -14,13 +14,13 @@ import ( "google.golang.org/grpc" ) -func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error { +func (s *Server) InitServer(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error { msggateway.RegisterMsgGatewayServer(server, &Server{}) return nil } func (s *Server) Start() error { - return startrpc.Start(s.rpcPort, config.Config.RpcRegisterName.OpenImMessageGatewayName, s.prometheusPort, Start) + return startrpc.Start(s.rpcPort, config.Config.RpcRegisterName.OpenImMessageGatewayName, s.prometheusPort, s.InitServer) } type Server struct { diff --git a/pkg/rpcclient/check/gateway.go b/pkg/rpcclient/check/gateway.go new file mode 100644 index 000000000..76ca8e571 --- /dev/null +++ b/pkg/rpcclient/check/gateway.go @@ -0,0 +1,63 @@ +package check + +import ( + "context" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" + discoveryRegistry "github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry" + "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/friend" + "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws" + "google.golang.org/grpc" +) + +type MessageGateWayRpcClient struct { + zk discoveryRegistry.SvcDiscoveryRegistry +} + +func NewMessageGateWayRpcClient(zk discoveryRegistry.SvcDiscoveryRegistry) *MessageGateWayRpcClient { + return &MessageGateWayRpcClient{ + zk: zk, + } +} + +func (m *MessageGateWayRpcClient) GetFriendsInfo(ctx context.Context, ownerUserID, friendUserID string) (resp *sdkws.FriendInfo, err error) { + cc, err := m.getConn() + if err != nil { + return nil, err + } + r, err := friend.NewFriendClient(cc).GetDesignatedFriends(ctx, &friend.GetDesignatedFriendsReq{OwnerUserID: ownerUserID, FriendUserIDs: []string{friendUserID}}) + if err != nil { + return nil, err + } + resp = r.FriendsInfo[0] + return +} +func (m *MessageGateWayRpcClient) getConn() (*grpc.ClientConn, error) { + return m.zk.GetConn(config.Config.RpcRegisterName.OpenImMessageGatewayName) +} + +// possibleFriendUserID是否在userID的好友中 +func (m *MessageGateWayRpcClient) IsFriend(ctx context.Context, possibleFriendUserID, userID string) (bool, error) { + cc, err := m.getConn() + if err != nil { + return false, err + } + resp, err := friend.NewFriendClient(cc).IsFriend(ctx, &friend.IsFriendReq{UserID1: userID, UserID2: possibleFriendUserID}) + if err != nil { + return false, err + } + return resp.InUser1Friends, nil + +} + +func (m *MessageGateWayRpcClient) GetFriendIDs(ctx context.Context, ownerUserID string) (friendIDs []string, err error) { + cc, err := m.getConn() + if err != nil { + return nil, err + } + req := friend.GetFriendIDsReq{UserID: ownerUserID} + resp, err := friend.NewFriendClient(cc).GetFriendIDs(ctx, &req) + if err != nil { + return nil, err + } + return resp.FriendIDs, err +}