gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

mode.go (2357B)


      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 	"flag"
      9 	"io"
     10 	"os"
     11 
     12 	"github.com/gin-gonic/gin/binding"
     13 )
     14 
     15 // EnvGinMode indicates environment name for gin mode.
     16 const EnvGinMode = "GIN_MODE"
     17 
     18 const (
     19 	// DebugMode indicates gin mode is debug.
     20 	DebugMode = "debug"
     21 	// ReleaseMode indicates gin mode is release.
     22 	ReleaseMode = "release"
     23 	// TestMode indicates gin mode is test.
     24 	TestMode = "test"
     25 )
     26 
     27 const (
     28 	debugCode = iota
     29 	releaseCode
     30 	testCode
     31 )
     32 
     33 // DefaultWriter is the default io.Writer used by Gin for debug output and
     34 // middleware output like Logger() or Recovery().
     35 // Note that both Logger and Recovery provides custom ways to configure their
     36 // output io.Writer.
     37 // To support coloring in Windows use:
     38 //
     39 //	import "github.com/mattn/go-colorable"
     40 //	gin.DefaultWriter = colorable.NewColorableStdout()
     41 var DefaultWriter io.Writer = os.Stdout
     42 
     43 // DefaultErrorWriter is the default io.Writer used by Gin to debug errors
     44 var DefaultErrorWriter io.Writer = os.Stderr
     45 
     46 var (
     47 	ginMode  = debugCode
     48 	modeName = DebugMode
     49 )
     50 
     51 func init() {
     52 	mode := os.Getenv(EnvGinMode)
     53 	SetMode(mode)
     54 }
     55 
     56 // SetMode sets gin mode according to input string.
     57 func SetMode(value string) {
     58 	if value == "" {
     59 		if flag.Lookup("test.v") != nil {
     60 			value = TestMode
     61 		} else {
     62 			value = DebugMode
     63 		}
     64 	}
     65 
     66 	switch value {
     67 	case DebugMode:
     68 		ginMode = debugCode
     69 	case ReleaseMode:
     70 		ginMode = releaseCode
     71 	case TestMode:
     72 		ginMode = testCode
     73 	default:
     74 		panic("gin mode unknown: " + value + " (available mode: debug release test)")
     75 	}
     76 
     77 	modeName = value
     78 }
     79 
     80 // DisableBindValidation closes the default validator.
     81 func DisableBindValidation() {
     82 	binding.Validator = nil
     83 }
     84 
     85 // EnableJsonDecoderUseNumber sets true for binding.EnableDecoderUseNumber to
     86 // call the UseNumber method on the JSON Decoder instance.
     87 func EnableJsonDecoderUseNumber() {
     88 	binding.EnableDecoderUseNumber = true
     89 }
     90 
     91 // EnableJsonDecoderDisallowUnknownFields sets true for binding.EnableDecoderDisallowUnknownFields to
     92 // call the DisallowUnknownFields method on the JSON Decoder instance.
     93 func EnableJsonDecoderDisallowUnknownFields() {
     94 	binding.EnableDecoderDisallowUnknownFields = true
     95 }
     96 
     97 // Mode returns current gin mode.
     98 func Mode() string {
     99 	return modeName
    100 }