github.com/hellobchain/third_party@v0.0.0-20230331131523-deb0478a2e52/gin/mode.go (about)

     1  // Copyright 2014 Manu Martinez-Almeida.  All rights reserved.
     2  // Use of this source code is governed by a MIT style
     3  // license that can be found in the LICENSE file.
     4  
     5  package gin
     6  
     7  import (
     8  	"io"
     9  	"os"
    10  
    11  	"github.com/hellobchain/third_party/gin/binding"
    12  )
    13  
    14  // EnvGinMode indicates environment name for gin mode.
    15  const EnvGinMode = "GIN_MODE"
    16  
    17  const (
    18  	// DebugMode indicates gin mode is debug.
    19  	DebugMode = "debug"
    20  	// ReleaseMode indicates gin mode is release.
    21  	ReleaseMode = "release"
    22  	// TestMode indicates gin mode is test.
    23  	TestMode = "test"
    24  )
    25  
    26  const (
    27  	debugCode = iota
    28  	releaseCode
    29  	testCode
    30  )
    31  
    32  // DefaultWriter is the default io.Writer used by Gin for debug output and
    33  // middleware output like Logger() or Recovery().
    34  // Note that both Logger and Recovery provides custom ways to configure their
    35  // output io.Writer.
    36  // To support coloring in Windows use:
    37  // 		import "github.com/mattn/go-colorable"
    38  // 		gin.DefaultWriter = colorable.NewColorableStdout()
    39  var DefaultWriter io.Writer = os.Stdout
    40  
    41  // DefaultErrorWriter is the default io.Writer used by Gin to debug errors
    42  var DefaultErrorWriter io.Writer = os.Stderr
    43  
    44  var ginMode = debugCode
    45  var modeName = DebugMode
    46  
    47  func init() {
    48  	mode := os.Getenv(EnvGinMode)
    49  	SetMode(mode)
    50  }
    51  
    52  // SetMode sets gin mode according to input string.
    53  func SetMode(value string) {
    54  	if value == "" {
    55  		value = DebugMode
    56  	}
    57  
    58  	switch value {
    59  	case DebugMode:
    60  		ginMode = debugCode
    61  	case ReleaseMode:
    62  		ginMode = releaseCode
    63  	case TestMode:
    64  		ginMode = testCode
    65  	default:
    66  		panic("gin mode unknown: " + value + " (available mode: debug release test)")
    67  	}
    68  
    69  	modeName = value
    70  }
    71  
    72  // DisableBindValidation closes the default validator.
    73  func DisableBindValidation() {
    74  	binding.Validator = nil
    75  }
    76  
    77  // EnableJsonDecoderUseNumber sets true for binding.EnableDecoderUseNumber to
    78  // call the UseNumber method on the JSON Decoder instance.
    79  func EnableJsonDecoderUseNumber() {
    80  	binding.EnableDecoderUseNumber = true
    81  }
    82  
    83  // EnableJsonDecoderDisallowUnknownFields sets true for binding.EnableDecoderDisallowUnknownFields to
    84  // call the DisallowUnknownFields method on the JSON Decoder instance.
    85  func EnableJsonDecoderDisallowUnknownFields() {
    86  	binding.EnableDecoderDisallowUnknownFields = true
    87  }
    88  
    89  // Mode returns currently gin mode.
    90  func Mode() string {
    91  	return modeName
    92  }