64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package server_cli
|
|
|
|
import (
|
|
"apiServer_service/proto"
|
|
"apiServer_service/utils/loger"
|
|
"apiServer_service/utils/nacos"
|
|
"context"
|
|
"errors"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/metadata"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
// 获取 apiServer 的地址
|
|
func getApiServer() string {
|
|
service, err := nacos.DiscoverService("apiServer")
|
|
if err != nil {
|
|
loger.Error("getApiServer error", err)
|
|
return ""
|
|
}
|
|
return service.Ip + ":" + strconv.Itoa(int(service.Port))
|
|
}
|
|
|
|
// 获取 grpc 客户端
|
|
func getGrpcClient() (*proto.ServerVisitServiceClient, error) {
|
|
serverUri := getApiServer()
|
|
if serverUri == "" {
|
|
loger.Error("获取服务器地址失败")
|
|
return nil, errors.New("getApiServer error")
|
|
}
|
|
conn, err := grpc.NewClient(getApiServer(), grpc.WithInsecure())
|
|
if err != nil {
|
|
loger.Error("getGrpcClient error", err)
|
|
return nil, err
|
|
}
|
|
|
|
c := proto.NewServerVisitServiceClient(conn)
|
|
return &c, nil
|
|
}
|
|
|
|
// getContext 创建带有 token 的上下文
|
|
func getContext() context.Context { // 创建带有 token 的上下文
|
|
token := os.Getenv("GRPC_TOKEN")
|
|
md := metadata.Pairs("authorization", "Bearer "+token) // 设置 authorization 头
|
|
ctx := metadata.NewOutgoingContext(context.Background(), md)
|
|
return ctx
|
|
}
|
|
|
|
// ReportVisit 演示方法 向服务器上报访问记录
|
|
func ReportVisit(token, note, VisitIp, OS string, point, UserId int) error {
|
|
client, err := getGrpcClient()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
recode, err := (*client).AddServerVisitRecode(getContext(), &proto.ServerVisitRequest{})
|
|
if err != nil {
|
|
loger.Error("ReportVisit error", err)
|
|
return err
|
|
}
|
|
loger.Debug("ReportVisit", recode)
|
|
return nil
|
|
}
|