|
|
@@ -0,0 +1,188 @@
|
|
|
+package gwtools
|
|
|
+
|
|
|
+import (
|
|
|
+ "git.sxidc.com/go-framework/baize/framework/core/api"
|
|
|
+ "git.sxidc.com/go-framework/baize/framework/gateway"
|
|
|
+ "net/http"
|
|
|
+)
|
|
|
+
|
|
|
+func PostPassThrough(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodPost, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func DeletePassThrough(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodDelete, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func PutPassThrough(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodPut, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func GetPassThrough(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodGet, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func PassThrough(builder *gateway.Builder, params *PassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func OnePostPassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodPost, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func OneDeletePassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodDelete, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func OnePutPassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodPut, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func OneGetPassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodGet, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func OnePassThrough(builder *gateway.Builder, params *OnePassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func PostCommonPassThrough(builder *gateway.Builder, params *SimpleCommonPassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodPost, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func DeleteCommonPassThrough(builder *gateway.Builder, params *SimpleCommonPassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodDelete, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func PutCommonPassThrough(builder *gateway.Builder, params *SimpleCommonPassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodPut, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func GetCommonPassThrough(builder *gateway.Builder, params *SimpleCommonPassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, http.MethodGet, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+func CommonPassThrough(builder *gateway.Builder, params *CommonPassThroughParams, middlewares ...api.Handler) {
|
|
|
+ params.passThrough(builder, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+type PassThroughRequestItem struct {
|
|
|
+ Request gateway.BuilderRequest
|
|
|
+ Callback gateway.RequestCallbackFunc
|
|
|
+}
|
|
|
+
|
|
|
+type SimplePassThroughParams struct {
|
|
|
+ RelativePath string
|
|
|
+ Request gateway.BuilderRequest
|
|
|
+}
|
|
|
+
|
|
|
+func (params *SimplePassThroughParams) passThrough(builder *gateway.Builder, httpMethod string, middlewares ...api.Handler) {
|
|
|
+ passThroughParams := &PassThroughParams{
|
|
|
+ HttpMethod: httpMethod,
|
|
|
+ SimplePassThroughParams: params,
|
|
|
+ }
|
|
|
+
|
|
|
+ passThroughParams.passThrough(builder, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+type PassThroughParams struct {
|
|
|
+ HttpMethod string
|
|
|
+ *SimplePassThroughParams
|
|
|
+}
|
|
|
+
|
|
|
+func (params *PassThroughParams) passThrough(builder *gateway.Builder, middlewares ...api.Handler) {
|
|
|
+ copyBuilder := builder.Url(params.HttpMethod, params.RelativePath)
|
|
|
+
|
|
|
+ switch req := params.Request.(type) {
|
|
|
+ case *gateway.PostRequest:
|
|
|
+ copyBuilder = copyBuilder.Post(req, nil)
|
|
|
+ case *gateway.DeleteRequest:
|
|
|
+ copyBuilder = copyBuilder.Delete(req, nil)
|
|
|
+ case *gateway.PutRequest:
|
|
|
+ copyBuilder = copyBuilder.Put(req, nil)
|
|
|
+ case *gateway.GetRequest:
|
|
|
+ copyBuilder = copyBuilder.Get(req, nil)
|
|
|
+ default:
|
|
|
+ panic("不支持的请求类型")
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+type SimpleOnePassThroughParams struct {
|
|
|
+ RelativePath string
|
|
|
+ RequestItem *PassThroughRequestItem
|
|
|
+}
|
|
|
+
|
|
|
+func (params *SimpleOnePassThroughParams) passThrough(builder *gateway.Builder, httpMethod string, middlewares ...api.Handler) {
|
|
|
+ onePassThroughParams := &OnePassThroughParams{
|
|
|
+ HttpMethod: httpMethod,
|
|
|
+ SimpleOnePassThroughParams: params,
|
|
|
+ }
|
|
|
+
|
|
|
+ onePassThroughParams.passThrough(builder, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+type OnePassThroughParams struct {
|
|
|
+ HttpMethod string
|
|
|
+ *SimpleOnePassThroughParams
|
|
|
+}
|
|
|
+
|
|
|
+func (params *OnePassThroughParams) passThrough(builder *gateway.Builder, middlewares ...api.Handler) {
|
|
|
+ copyBuilder := builder.Url(params.HttpMethod, params.RelativePath)
|
|
|
+
|
|
|
+ switch req := params.RequestItem.Request.(type) {
|
|
|
+ case *gateway.PostRequest:
|
|
|
+ copyBuilder = copyBuilder.Post(req, params.RequestItem.Callback)
|
|
|
+ case *gateway.DeleteRequest:
|
|
|
+ copyBuilder = copyBuilder.Delete(req, params.RequestItem.Callback)
|
|
|
+ case *gateway.PutRequest:
|
|
|
+ copyBuilder = copyBuilder.Put(req, params.RequestItem.Callback)
|
|
|
+ case *gateway.GetRequest:
|
|
|
+ copyBuilder = copyBuilder.Get(req, params.RequestItem.Callback)
|
|
|
+ default:
|
|
|
+ panic("不支持的请求类型")
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+type SimpleCommonPassThroughParams struct {
|
|
|
+ RelativePath string
|
|
|
+ RequestItems []PassThroughRequestItem
|
|
|
+}
|
|
|
+
|
|
|
+func (params *SimpleCommonPassThroughParams) passThrough(builder *gateway.Builder, httpMethod string, middlewares ...api.Handler) {
|
|
|
+ passThroughParams := &CommonPassThroughParams{
|
|
|
+ HttpMethod: httpMethod,
|
|
|
+ SimpleCommonPassThroughParams: params,
|
|
|
+ }
|
|
|
+
|
|
|
+ passThroughParams.passThrough(builder, middlewares...)
|
|
|
+}
|
|
|
+
|
|
|
+type CommonPassThroughParams struct {
|
|
|
+ HttpMethod string
|
|
|
+ *SimpleCommonPassThroughParams
|
|
|
+}
|
|
|
+
|
|
|
+func (params *CommonPassThroughParams) passThrough(builder *gateway.Builder, middlewares ...api.Handler) {
|
|
|
+ copyBuilder := builder.Url(params.HttpMethod, params.RelativePath)
|
|
|
+
|
|
|
+ for _, requestItem := range params.RequestItems {
|
|
|
+ switch req := requestItem.Request.(type) {
|
|
|
+ case *gateway.PostRequest:
|
|
|
+ copyBuilder = copyBuilder.Post(req, requestItem.Callback)
|
|
|
+ case *gateway.DeleteRequest:
|
|
|
+ copyBuilder = copyBuilder.Delete(req, requestItem.Callback)
|
|
|
+ case *gateway.PutRequest:
|
|
|
+ copyBuilder = copyBuilder.Put(req, requestItem.Callback)
|
|
|
+ case *gateway.GetRequest:
|
|
|
+ copyBuilder = copyBuilder.Get(req, requestItem.Callback)
|
|
|
+ default:
|
|
|
+ panic("不支持的请求类型")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(middlewares...)
|
|
|
+}
|