feat: service
continuous-integration/drone/push Build was killed

This commit is contained in:
2022-01-11 04:00:39 +08:00
parent 35119f2003
commit baa0eb8db2
22 changed files with 450 additions and 34 deletions
@@ -0,0 +1,17 @@
package config
import "git.icechen.cn/monorepo/backend/pkg/config"
type Cfg struct {
LarkAppID string `json:"lark_app_id"`
LarkAppSecret string `json:"lark_app_secret"`
}
var Config Cfg
func init() {
err := config.GetConfig(&Config)
if err != nil {
panic(err)
}
}
@@ -0,0 +1,31 @@
package lark
import (
"context"
cfg "git.icechen.cn/monorepo/backend/app/zeus/service/lark/internal/config"
"github.com/larksuite/oapi-sdk-go/core"
"github.com/larksuite/oapi-sdk-go/core/config"
authen "github.com/larksuite/oapi-sdk-go/service/authen/v1"
)
type Lark struct {
conf *config.Config
}
func NewLark() Lark {
appSettings := core.NewInternalAppSettings(
core.SetAppCredentials(cfg.Config.LarkAppID, cfg.Config.LarkAppSecret))
conf := core.NewConfig(core.DomainFeiShu, appSettings, core.SetLoggerLevel(core.LoggerLevelError))
return Lark{
conf: conf,
}
}
func (l Lark) Auth(code string) (*authen.UserAccessTokenInfo, error) {
s := authen.NewService(l.conf)
return s.Authens.AccessToken(core.WrapContext(context.Background()), &authen.AuthenAccessTokenReqBody{
GrantType: "",
Code: code,
}).Do()
}
@@ -0,0 +1,50 @@
package lark
import (
"context"
"fmt"
"google.golang.org/grpc/keepalive"
"log"
"net"
"time"
"git.icechen.cn/monorepo/backend/pkg/proto/zeus/lark"
"github.com/jinzhu/copier"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
func RpcServer() {
lis, err := net.Listen("tcp", ":3000")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer(grpc.KeepaliveParams(keepalive.ServerParameters{
MaxConnectionIdle: 5 * time.Minute,
}))
lark.RegisterUserServer(s, &Server{})
reflection.Register(s)
fmt.Println("lark server run in :3000")
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
type Server struct{}
func (s Server) Login(ctx context.Context, in *lark.LoginRequest) (*lark.LoginResponse, error) {
userInfo, err := NewLark().Auth(in.Code)
if err != nil {
return nil, err
}
resp := new(lark.LoginResponse)
err = copier.Copy(resp, userInfo)
if err != nil {
return nil, err
}
return resp, nil
}