middleware

package
v0.4.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2024 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CrossDomain = func(ctx *context.Context) {
	ctx.Header("Access-Control-Allow-Origin", ctx.Request().Header.Get("Origin"))
	ctx.Header("Access-Control-Allow-Headers", "Content-Type,Content-Disposition,X-Request-Id,X-Request-Some")
	ctx.Header("Access-Control-Expose-Headers", "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Type,cache-control,Set-Auth,Content-Disposition")
	ctx.Header("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE,PATCH,HEAD,TRACE")
	ctx.Header("Access-Control-Allow-Credentials", "true")
	ctx.Header("Access-Control-Max-Age", "7200")
	if ctx.Request().Method == "OPTIONS" {
		ctx.StatusCode(200)
	} else {
		ctx.Next()
	}
}
View Source
var Default = func(ctx *context.Context) {
	traceId := ctx.GetHeader("X-Request-Id")
	if traceId == "" {
		traceId = uuid.New().String()
	}
	threadlocal.SetTraceId(traceId)
	userId := ctx.GetHeader("X-Request-UserId")
	if userId != "" {
		threadlocal.SetUserId(userId)
	}
	zlog.Info("MainHandlerName:{},router:{}", ctx.GetCurrentRoute().MainHandlerName(), ctx.RouteName())
	ctx.Next()
}
View Source
var GlobalRecover = func(ctx *context.Context) {
	defer func() {
		if err := recover(); err != nil {
			if ctx.IsStopped() {
				return
			}

			if tx.IsInTX() {
				tx.NeedRollback()
				tx.TryCommit()
			}

			var stacktrace string
			for i := 1; ; i++ {
				_, f, l, got := runtime.Caller(i)
				if !got {
					break
				}
				stacktrace += fmt.Sprintf("%s:%d\n", f, l)
			}

			errMsg := fmt.Sprintf("%s", err)
			zlog.Info("异常Ctl入口:{}", ctx.HandlerName())
			zlog.Error("ErrorInfo:{}", errMsg)

			if strings.HasPrefix(errMsg, "") {
				_ = ctx.JSON(response.Error(common_error.SYSTEM_ERROR, errMsg))
			}
			ctx.StatusCode(500)
			ctx.StopExecution()
		}
	}()
	ctx.Next()

	if tx.IsInTX() {
		tx.TryCommit()
	}
}
View Source
var NeedLogin = func(ctx *context.Context) {
	userId := ctx.GetHeader("X-Request-UserId")
	if userId == "" {
		ctx.JSON(response.Error(common_error.NOT_LOGGED_IN, nil))
	} else {
		if userId != "" {
			threadlocal.SetUserId(userId)
			ctx.Next()
		} else {
			ctx.JSON(response.Error(common_error.NOT_LOGGED_IN, nil))
		}
	}
}
View Source
var SaveOp = func(ctx *context.Context) {
	if lr, ok := rm.IrisRouterMap[ctx.RouteName()]; ok {
		if lr.SaveOp {
			req := &rpc_pbs.UserOperationBehaviorReq{
				UserId:       threadlocal.GetUserId(),
				ServerName:   common_config.GetAppName(),
				ApiPath:      ctx.RouteName(),
				EventCode:    ctx.GetCurrentRoute().MainHandlerName(),
				EventName:    rm.IrisRouterMap[ctx.RouteName()].Description,
				ExtendData:   "{}",
				Ipv4:         common_utils.RemoteIp(ctx.Request()),
				Ipv6:         "",
				Device:       "未知",
				UserAgent:    ctx.Request().UserAgent(),
				SomeId:       ctx.Request().Header.Get("X-Request-Some"),
				TraceId:      threadlocal.GetTraceId(),
				BehaviorTime: time.Now().Format(common_const.DataFormat),
			}
			traceId := threadlocal.GetTraceId()
			_ = common_goroutine.GetNonBlockingAntsPool().Submit(func() {
				threadlocal.SetUserId(traceId)
				universal.SaveUserOperationBehavior(req)
			})
		}
	}
	ctx.Next()
}

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL