mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-16 21:32:11 +08:00
This allows the GoDoc to take advantage of new markup syntax introduced in Go 1.19. This does not require that our minimum supported version be bumped to Go 1.19 since the pkgsite renders our godoc regardless of supported Go version.
101 lines
2.3 KiB
Go
101 lines
2.3 KiB
Go
// Copyright 2014 Manu Martinez-Almeida. All rights reserved.
|
|
// Use of this source code is governed by a MIT style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gin
|
|
|
|
import (
|
|
"flag"
|
|
"io"
|
|
"os"
|
|
|
|
"github.com/gin-gonic/gin/binding"
|
|
)
|
|
|
|
// EnvGinMode indicates environment name for gin mode.
|
|
const EnvGinMode = "GIN_MODE"
|
|
|
|
const (
|
|
// DebugMode indicates gin mode is debug.
|
|
DebugMode = "debug"
|
|
// ReleaseMode indicates gin mode is release.
|
|
ReleaseMode = "release"
|
|
// TestMode indicates gin mode is test.
|
|
TestMode = "test"
|
|
)
|
|
|
|
const (
|
|
debugCode = iota
|
|
releaseCode
|
|
testCode
|
|
)
|
|
|
|
// DefaultWriter is the default io.Writer used by Gin for debug output and
|
|
// middleware output like Logger() or Recovery().
|
|
// Note that both Logger and Recovery provides custom ways to configure their
|
|
// output io.Writer.
|
|
// To support coloring in Windows use:
|
|
//
|
|
// import "github.com/mattn/go-colorable"
|
|
// gin.DefaultWriter = colorable.NewColorableStdout()
|
|
var DefaultWriter io.Writer = os.Stdout
|
|
|
|
// DefaultErrorWriter is the default io.Writer used by Gin to debug errors
|
|
var DefaultErrorWriter io.Writer = os.Stderr
|
|
|
|
var (
|
|
ginMode = debugCode
|
|
modeName = DebugMode
|
|
)
|
|
|
|
func init() {
|
|
mode := os.Getenv(EnvGinMode)
|
|
SetMode(mode)
|
|
}
|
|
|
|
// SetMode sets gin mode according to input string.
|
|
func SetMode(value string) {
|
|
if value == "" {
|
|
if flag.Lookup("test.v") != nil {
|
|
value = TestMode
|
|
} else {
|
|
value = DebugMode
|
|
}
|
|
}
|
|
|
|
switch value {
|
|
case DebugMode:
|
|
ginMode = debugCode
|
|
case ReleaseMode:
|
|
ginMode = releaseCode
|
|
case TestMode:
|
|
ginMode = testCode
|
|
default:
|
|
panic("gin mode unknown: " + value + " (available mode: debug release test)")
|
|
}
|
|
|
|
modeName = value
|
|
}
|
|
|
|
// DisableBindValidation closes the default validator.
|
|
func DisableBindValidation() {
|
|
binding.Validator = nil
|
|
}
|
|
|
|
// EnableJsonDecoderUseNumber sets true for binding.EnableDecoderUseNumber to
|
|
// call the UseNumber method on the JSON Decoder instance.
|
|
func EnableJsonDecoderUseNumber() {
|
|
binding.EnableDecoderUseNumber = true
|
|
}
|
|
|
|
// EnableJsonDecoderDisallowUnknownFields sets true for binding.EnableDecoderDisallowUnknownFields to
|
|
// call the DisallowUnknownFields method on the JSON Decoder instance.
|
|
func EnableJsonDecoderDisallowUnknownFields() {
|
|
binding.EnableDecoderDisallowUnknownFields = true
|
|
}
|
|
|
|
// Mode returns current gin mode.
|
|
func Mode() string {
|
|
return modeName
|
|
}
|