Kaynağa Gözat

完成初步gateway

yjp 1 yıl önce
ebeveyn
işleme
53f113612e
2 değiştirilmiş dosya ile 85 ekleme ve 0 silme
  1. 57 0
      framework/gateway/builder.go
  2. 28 0
      framework/gateway/gateway.go

+ 57 - 0
framework/gateway/builder.go

@@ -0,0 +1,57 @@
+package gateway
+
+import (
+	"fmt"
+	"git.sxidc.com/go-framework/baize/framework/core/api"
+)
+
+type Builder struct {
+	router api.Router
+
+	httpMethod   string
+	relativePath string
+}
+
+func (builder *Builder) Url(httpMethod string, relativePath string) *Builder {
+	newBuilder := builder.copy()
+	newBuilder.httpMethod = httpMethod
+	newBuilder.relativePath = relativePath
+	return newBuilder
+}
+
+func (builder *Builder) Request() *Builder {
+	newBuilder := builder.copy()
+
+	return newBuilder
+}
+
+func (builder *Builder) Response() *Builder {
+	newBuilder := builder.copy()
+
+	return newBuilder
+}
+
+func (builder *Builder) PassThrough() *Builder {
+	newBuilder := builder.copy()
+
+	return newBuilder
+}
+
+func (builder *Builder) Build(middlewares ...api.Handler) {
+	newBuilder := builder.copy()
+	newBuilder.router.AddRoute(builder.httpMethod, builder.relativePath, append(middlewares,
+		func(c *api.Context) {
+			fmt.Println("Come Here!!!")
+		})...)
+}
+
+func (builder *Builder) copy() *Builder {
+	newBuilder := &Builder{
+		router: builder.router,
+
+		httpMethod:   builder.httpMethod,
+		relativePath: builder.relativePath,
+	}
+
+	return newBuilder
+}

+ 28 - 0
framework/gateway/gateway.go

@@ -0,0 +1,28 @@
+package gateway
+
+import "git.sxidc.com/go-framework/baize/framework/core/api"
+
+type Gateway struct {
+	api *api.Api
+}
+
+func NewGateway(api *api.Api) *Gateway {
+	return &Gateway{
+		api: api,
+	}
+}
+
+func DestroyGateway(gw *Gateway) {
+	if gw == nil {
+		return
+	}
+
+	gw.api = nil
+	gw = nil
+}
+
+func (gw *Gateway) NewBuilder(routerType string, version string) *Builder {
+	return &Builder{
+		router: gw.api.ChooseRouter(routerType, version),
+	}
+}