Create & Init Project...
This commit is contained in:
42
app/service/main/msm/http/BUILD
Normal file
42
app/service/main/msm/http/BUILD
Normal file
@ -0,0 +1,42 @@
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"app_auth.go",
|
||||
"config.go",
|
||||
"credential.go",
|
||||
"ecode.go",
|
||||
"http.go",
|
||||
],
|
||||
importpath = "go-common/app/service/main/msm/http",
|
||||
tags = ["automanaged"],
|
||||
deps = [
|
||||
"//app/service/main/msm/conf:go_default_library",
|
||||
"//app/service/main/msm/model:go_default_library",
|
||||
"//app/service/main/msm/service:go_default_library",
|
||||
"//library/ecode:go_default_library",
|
||||
"//library/log:go_default_library",
|
||||
"//library/net/http/blademaster:go_default_library",
|
||||
"//library/net/http/blademaster/middleware/verify:go_default_library",
|
||||
],
|
||||
)
|
27
app/service/main/msm/http/app_auth.go
Normal file
27
app/service/main/msm/http/app_auth.go
Normal file
@ -0,0 +1,27 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/service/main/msm/model"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func scope(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
scopeMap map[int64]*model.Scope
|
||||
param = new(struct {
|
||||
AppTreeID int64 `form:"app_tree_id" validate:"gt=0"`
|
||||
})
|
||||
)
|
||||
if err = c.Bind(param); err != nil {
|
||||
return
|
||||
}
|
||||
if scopeMap, err = svr.ServiceScopes(c, param.AppTreeID); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
data := make(map[string]interface{}, 2)
|
||||
data["service_tree_id"] = param.AppTreeID
|
||||
data["scopes"] = scopeMap
|
||||
c.JSON(data, nil)
|
||||
}
|
37
app/service/main/msm/http/config.go
Normal file
37
app/service/main/msm/http/config.go
Normal file
@ -0,0 +1,37 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// push config update
|
||||
func push(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
param = new(struct {
|
||||
Ver int64 `form:"version" validate:"gte=0"`
|
||||
App string `form:"service" validate:"required"`
|
||||
BVer string `form:"build_ver" validate:"required"`
|
||||
Env string `form:"environment" validate:"required"`
|
||||
})
|
||||
)
|
||||
if err = c.Bind(param); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, svr.Push(c, param.App, param.BVer, param.Env, param.Ver))
|
||||
}
|
||||
|
||||
func setToken(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
param = new(struct {
|
||||
App string `form:"service" validate:"required"`
|
||||
Token string `form:"token" validate:"required"`
|
||||
Env string `form:"environment" validate:"required"`
|
||||
})
|
||||
)
|
||||
if err = c.Bind(param); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, svr.SetToken(c, param.App, param.Env, param.Token))
|
||||
}
|
43
app/service/main/msm/http/credential.go
Normal file
43
app/service/main/msm/http/credential.go
Normal file
@ -0,0 +1,43 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
const (
|
||||
_contentType = "Content-Type"
|
||||
_urlJSON = "application/json"
|
||||
)
|
||||
|
||||
// credential verify.
|
||||
func credential(ctx *bm.Context) {
|
||||
var (
|
||||
appIDStr string
|
||||
signature string
|
||||
)
|
||||
req := ctx.Request
|
||||
params := req.Form
|
||||
header := req.Header
|
||||
if header.Get(_contentType) == _urlJSON {
|
||||
appIDStr = header.Get("App-Tree-ID")
|
||||
signature = header.Get("Signature")
|
||||
header.Del("Signature")
|
||||
} else {
|
||||
appIDStr = params.Get("app_tree_id")
|
||||
signature = params.Get("signature")
|
||||
params.Del("signature")
|
||||
}
|
||||
appID, _ := strconv.ParseInt(appIDStr, 10, 64)
|
||||
if appID == 0 || signature == "" {
|
||||
ctx.JSON(nil, ecode.RequestErr)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
if ok := svr.CheckSign(appID, signature); !ok {
|
||||
ctx.JSON(nil, ecode.SignCheckErr)
|
||||
ctx.Abort()
|
||||
}
|
||||
}
|
42
app/service/main/msm/http/ecode.go
Normal file
42
app/service/main/msm/http/ecode.go
Normal file
@ -0,0 +1,42 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/service/main/msm/model"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func codes(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
code *model.Codes
|
||||
param = new(struct {
|
||||
Ver int64 `form:"ver"`
|
||||
})
|
||||
)
|
||||
if err = c.Bind(param); err != nil {
|
||||
return
|
||||
}
|
||||
if code, err = svr.Codes(c, param.Ver); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(code, nil)
|
||||
}
|
||||
|
||||
func codesLangs(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
code *model.CodesLangs
|
||||
param = new(struct {
|
||||
Ver int64 `form:"ver"`
|
||||
})
|
||||
)
|
||||
if err = c.Bind(param); err != nil {
|
||||
return
|
||||
}
|
||||
if code, err = svr.CodesLangs(c, param.Ver); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(code, nil)
|
||||
}
|
56
app/service/main/msm/http/http.go
Normal file
56
app/service/main/msm/http/http.go
Normal file
@ -0,0 +1,56 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"go-common/app/service/main/msm/conf"
|
||||
"go-common/app/service/main/msm/service"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/middleware/verify"
|
||||
)
|
||||
|
||||
var (
|
||||
vfySvr *verify.Verify
|
||||
svr *service.Service
|
||||
)
|
||||
|
||||
// Init init config.
|
||||
func Init(c *conf.Config, s *service.Service) {
|
||||
svr = s
|
||||
vfySvr = verify.New(nil)
|
||||
engine := bm.DefaultServer(c.BM)
|
||||
oldRouter(engine)
|
||||
innerRouter(engine)
|
||||
if err := engine.Start(); err != nil {
|
||||
log.Error("engine.Start error(%v)", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func oldRouter(e *bm.Engine) {
|
||||
e.Ping(ping)
|
||||
group := e.Group("/x/v1/msm", vfySvr.Verify)
|
||||
{
|
||||
group.GET("/codes/2", codes)
|
||||
group.POST("/conf/push", push)
|
||||
group.POST("/conf/setToken", setToken)
|
||||
group.GET("/codes/langs", codesLangs)
|
||||
}
|
||||
}
|
||||
|
||||
func innerRouter(e *bm.Engine) {
|
||||
group := e.Group("/x/internal/msm/v1")
|
||||
{
|
||||
group.GET("/codes/2", vfySvr.Verify, codes)
|
||||
group.GET("/auth/scope", credential, scope)
|
||||
}
|
||||
}
|
||||
|
||||
// ping check server ok.
|
||||
func ping(c *bm.Context) {
|
||||
if svr.Ping() != nil {
|
||||
log.Error("service ping error")
|
||||
c.AbortWithStatus(http.StatusServiceUnavailable)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user