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
 | |
| }
 |