go_infrastructure
用途:工具包,基于 golang 实现
auth
- 基于 golang micro service 服务鉴权
package main
import (
"github.com/g-airport/go-infra/auth"
"github.com/micro/go-micro"
)
var FuncRights = map[string]auth.Auth {
// 控制日志是否输出
"ImplSrvName.FuncName":{1,true,true},
}
servive := micro.NewService()
service.Init(
// ...
micro.WrapHandler(auth.ServerAuthWrapper(FuncRights)),
)
//Prepare Interface
type ImplSrv struct {
}
func NewServer() *ImplSrv {
return &ImplSrv{}
}
//Run go-micro
ns := NewServer()
server := service.Server()
server.Handle(server.NewHandler(ns))
env
var (
Dir string
RunDir string
LogDir string
LogPath string
ConfigPath string
ConfigDir string
Pid int
Hostname string
)
config
- init some infrastructure eg: some middleware like
consul (service discover) , mq , gRPC ...
log
import (
"github.com/g-airport/go-infra/log"
"github.com/g-airport/go-infra/env"
)
func init() {
var Access log.Logger
path, _ := filepath.Abs(env.LogDir + "/access.log")
A, err = glog.NewLogger(path, "debug")
env.ErrExit(err)
// 通过 var Access log.Logger 设定
// 访问日志,调试日志,错误日志,...
// what ever you like 😁
}
//example
func log() {
//hanler err
var err error
A.Info("", err)
}
validate
errors
type Error struct {
Code int `json:"code"`
Status int `json:"Status"`
Detail string `json:"detail"`
Internal string `json:"internal,omitempty"`
Content interface{} `json:"content,omitempty"`
}
sync
buffer
import (
"github.com/g-airport/go-infra/buffer"
)
c := NewChan()
c.Put(1)
c.Get()