| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- package pass_through
- import (
- "git.sxidc.com/go-framework/baize/framework/core/api"
- "git.sxidc.com/go-framework/baize/framework/gateway"
- "net/http"
- )
- func Post(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodPost, middlewares...)
- }
- func Delete(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodDelete, middlewares...)
- }
- func Put(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodPut, middlewares...)
- }
- func Get(builder *gateway.Builder, params *SimplePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodGet, middlewares...)
- }
- func PostPassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodPost, middlewares...)
- }
- func DeletePassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodDelete, middlewares...)
- }
- func PutPassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodPut, middlewares...)
- }
- func GetPassThrough(builder *gateway.Builder, params *SimpleOnePassThroughParams, middlewares ...api.Handler) {
- params.passThrough(builder, http.MethodGet, 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...)
- }
- type PassThroughRequestItem struct {
- Request gateway.BuilderRequest
- RequestResponseCallback gateway.RequestResponseCallback
- }
- 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)
- case *gateway.DeleteRequest:
- copyBuilder = copyBuilder.Delete(req)
- case *gateway.PutRequest:
- copyBuilder = copyBuilder.Put(req)
- case *gateway.GetRequest:
- copyBuilder = copyBuilder.Get(req)
- 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, gateway.WithRequestResponseCallback(params.RequestItem.RequestResponseCallback))
- case *gateway.DeleteRequest:
- copyBuilder = copyBuilder.Delete(req, gateway.WithRequestResponseCallback(params.RequestItem.RequestResponseCallback))
- case *gateway.PutRequest:
- copyBuilder = copyBuilder.Put(req, gateway.WithRequestResponseCallback(params.RequestItem.RequestResponseCallback))
- case *gateway.GetRequest:
- copyBuilder = copyBuilder.Get(req, gateway.WithRequestResponseCallback(params.RequestItem.RequestResponseCallback))
- 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, gateway.WithRequestResponseCallback(requestItem.RequestResponseCallback))
- case *gateway.DeleteRequest:
- copyBuilder = copyBuilder.Delete(req, gateway.WithRequestResponseCallback(requestItem.RequestResponseCallback))
- case *gateway.PutRequest:
- copyBuilder = copyBuilder.Put(req, gateway.WithRequestResponseCallback(requestItem.RequestResponseCallback))
- case *gateway.GetRequest:
- copyBuilder = copyBuilder.Get(req, gateway.WithRequestResponseCallback(requestItem.RequestResponseCallback))
- default:
- panic("不支持的请求类型")
- }
- }
- copyBuilder.Build(middlewares...)
- }
|