代码拉取完成,页面将自动刷新
package handlerconv
import (
	"net/http"
	"github.com/kataras/iris/context"
	"github.com/kataras/iris/core/errors"
)
var errHandler = errors.New(`
	Passed argument is not a func(context.Context) neither one of these types:
	- http.Handler
	- func(w http.ResponseWriter, r *http.Request)
	- func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)
	---------------------------------------------------------------------
	It seems to be a  %T points to: %v`)
// FromStd converts native http.Handler & http.HandlerFunc to context.Handler.
//
// Supported form types:
// 		 .FromStd(h http.Handler)
// 		 .FromStd(func(w http.ResponseWriter, r *http.Request))
// 		 .FromStd(func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc))
func FromStd(handler interface{}) context.Handler {
	switch handler.(type) {
	case context.Handler:
		{
			//
			//it's already a iris handler
			//
			return handler.(context.Handler)
		}
	case http.Handler:
		//
		// handlerFunc.ServeHTTP(w,r)
		//
		{
			h := handler.(http.Handler)
			return func(ctx context.Context) {
				h.ServeHTTP(ctx.ResponseWriter(), ctx.Request())
			}
		}
	case func(http.ResponseWriter, *http.Request):
		{
			//
			// handlerFunc(w,r)
			//
			return FromStd(http.HandlerFunc(handler.(func(http.ResponseWriter, *http.Request))))
		}
	case func(http.ResponseWriter, *http.Request, http.HandlerFunc):
		{
			//
			// handlerFunc(w,r, http.HandlerFunc)
			//
			return FromStdWithNext(handler.(func(http.ResponseWriter, *http.Request, http.HandlerFunc)))
		}
	default:
		{
			//
			// No valid handler passed
			//
			panic(errHandler.Format(handler, handler))
		}
	}
}
// FromStdWithNext receives a standar handler - middleware form - and returns a
// compatible context.Handler wrapper.
func FromStdWithNext(h func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)) context.Handler {
	return func(ctx context.Context) {
		next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			ctx.Next()
		})
		h(ctx.ResponseWriter(), ctx.Request(), next)
	}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
 马建仓 AI 助手
马建仓 AI 助手