Group types and vars

This commit is contained in:
Alexander Melentyev 2021-08-22 21:43:00 +03:00
parent 4e7584175d
commit 73a8bb7a01
13 changed files with 221 additions and 193 deletions

12
auth.go
View File

@ -16,15 +16,17 @@ import (
// AuthUserKey is the cookie name for user credential in basic auth.
const AuthUserKey = "user"
// Accounts defines a key/value for user/pass list of authorized logins.
type Accounts map[string]string
type (
// Accounts defines a key/value for user/pass list of authorized logins.
Accounts map[string]string
type authPair struct {
authPair struct {
value string
user string
}
}
type authPairs []authPair
authPairs []authPair
)
func (a authPairs) searchCredential(authValue string) (string, bool) {
if authValue == "" {

View File

@ -24,27 +24,29 @@ const (
MIMEYAML = "application/x-yaml"
)
// Binding describes the interface which needs to be implemented for binding the
// data present in the request such as JSON request body, query parameters or
// the form POST.
type Binding interface {
type (
// Binding describes the interface which needs to be implemented for binding the
// data present in the request such as JSON request body, query parameters or
// the form POST.
Binding interface {
Name() string
Bind(*http.Request, interface{}) error
}
}
// BindingBody adds BindBody method to Binding. BindBody is similar with Bind,
// but it reads the body from supplied bytes instead of req.Body.
type BindingBody interface {
// BindingBody adds BindBody method to Binding. BindBody is similar with Bind,
// but it reads the body from supplied bytes instead of req.Body.
BindingBody interface {
Binding
BindBody([]byte, interface{}) error
}
}
// BindingUri adds BindUri method to Binding. BindUri is similar with Bind,
// but it read the Params.
type BindingUri interface {
// BindingUri adds BindUri method to Binding. BindUri is similar with Bind,
// but it read the Params.
BindingUri interface {
Name() string
BindUri(map[string][]string, interface{}) error
}
}
)
// StructValidator is the minimal interface which needs to be implemented in
// order for it to be used as the validator engine for ensuring the correctness

View File

@ -22,27 +22,29 @@ const (
MIMEYAML = "application/x-yaml"
)
// Binding describes the interface which needs to be implemented for binding the
// data present in the request such as JSON request body, query parameters or
// the form POST.
type Binding interface {
type (
// Binding describes the interface which needs to be implemented for binding the
// data present in the request such as JSON request body, query parameters or
// the form POST.
Binding interface {
Name() string
Bind(*http.Request, interface{}) error
}
}
// BindingBody adds BindBody method to Binding. BindBody is similar with Bind,
// but it reads the body from supplied bytes instead of req.Body.
type BindingBody interface {
// BindingBody adds BindBody method to Binding. BindBody is similar with Bind,
// but it reads the body from supplied bytes instead of req.Body.
BindingBody interface {
Binding
BindBody([]byte, interface{}) error
}
}
// BindingUri adds BindUri method to Binding. BindUri is similar with Bind,
// but it read the Params.
type BindingUri interface {
// BindingUri adds BindUri method to Binding. BindUri is similar with Bind,
// but it read the Params.
BindingUri interface {
Name() string
BindUri(map[string][]string, interface{}) error
}
}
)
// StructValidator is the minimal interface which needs to be implemented in
// order for it to be used as the validator engine for ensuring the correctness

View File

@ -10,9 +10,11 @@ import (
const defaultMemory = 32 << 20
type formBinding struct{}
type formPostBinding struct{}
type formMultipartBinding struct{}
type (
formBinding struct{}
formPostBinding struct{}
formMultipartBinding struct{}
)
func (formBinding) Name() string {
return "form"

View File

@ -13,16 +13,18 @@ import (
"github.com/gin-gonic/gin/internal/json"
)
// EnableDecoderUseNumber is used to call the UseNumber method on the JSON
// Decoder instance. UseNumber causes the Decoder to unmarshal a number into an
// interface{} as a Number instead of as a float64.
var EnableDecoderUseNumber = false
var (
// EnableDecoderUseNumber is used to call the UseNumber method on the JSON
// Decoder instance. UseNumber causes the Decoder to unmarshal a number into an
// interface{} as a Number instead of as a float64.
EnableDecoderUseNumber = false
// EnableDecoderDisallowUnknownFields is used to call the DisallowUnknownFields method
// on the JSON Decoder instance. DisallowUnknownFields causes the Decoder to
// return an error when the destination is a struct and the input contains object
// keys which do not match any non-ignored, exported fields in the destination.
var EnableDecoderDisallowUnknownFields = false
// EnableDecoderDisallowUnknownFields is used to call the DisallowUnknownFields method
// on the JSON Decoder instance. DisallowUnknownFields causes the Decoder to
// return an error when the destination is a struct and the input contains object
// keys which do not match any non-ignored, exported fields in the destination.
EnableDecoderDisallowUnknownFields = false
)
type jsonBinding struct{}

View File

@ -30,14 +30,16 @@ const (
ErrorTypeNu = 2
)
// Error represents a error's specification.
type Error struct {
type (
// Error represents a error's specification.
Error struct {
Err error
Type ErrorType
Meta interface{}
}
}
type errorMsgs []*Error
errorMsgs []*Error
)
var _ error = &Error{}

10
fs.go
View File

@ -9,13 +9,15 @@ import (
"os"
)
type onlyFilesFS struct {
type (
onlyFilesFS struct {
fs http.FileSystem
}
}
type neuteredReaddirFile struct {
neuteredReaddirFile struct {
http.File
}
}
)
// Dir returns a http.FileSystem that can be used by http.FileServer(). It is used internally
// in router.Static().

22
gin.go
View File

@ -27,11 +27,13 @@ var (
var defaultPlatform string
// HandlerFunc defines the handler used by gin middleware as return value.
type HandlerFunc func(*Context)
type (
// HandlerFunc defines the handler used by gin middleware as return value.
HandlerFunc func(*Context)
// HandlersChain defines a HandlerFunc array.
type HandlersChain []HandlerFunc
// HandlersChain defines a HandlerFunc array.
HandlersChain []HandlerFunc
)
// Last returns the last handler in the chain. ie. the last handler is the main one.
func (c HandlersChain) Last() HandlerFunc {
@ -41,16 +43,18 @@ func (c HandlersChain) Last() HandlerFunc {
return nil
}
// RouteInfo represents a request route's specification which contains method and path and its handler.
type RouteInfo struct {
type (
// RouteInfo represents a request route's specification which contains method and path and its handler.
RouteInfo struct {
Method string
Path string
Handler string
HandlerFunc HandlerFunc
}
}
// RoutesInfo defines a RouteInfo array.
type RoutesInfo []RouteInfo
// RoutesInfo defines a RouteInfo array.
RoutesInfo []RouteInfo
)
// Trusted platforms
const (

View File

@ -35,8 +35,9 @@ const (
var consoleColorMode = autoColor
// LoggerConfig defines the config for Logger middleware.
type LoggerConfig struct {
type (
// LoggerConfig defines the config for Logger middleware.
LoggerConfig struct {
// Optional. Default value is gin.defaultLogFormatter
Formatter LogFormatter
@ -47,13 +48,13 @@ type LoggerConfig struct {
// SkipPaths is a url path array which logs are not written.
// Optional.
SkipPaths []string
}
}
// LogFormatter gives the signature of the formatter function passed to LoggerWithFormatter
type LogFormatter func(params LogFormatterParams) string
// LogFormatter gives the signature of the formatter function passed to LoggerWithFormatter
LogFormatter func(params LogFormatterParams) string
// LogFormatterParams is the structure any formatter will be handed when time to log comes
type LogFormatterParams struct {
// LogFormatterParams is the structure any formatter will be handed when time to log comes
LogFormatterParams struct {
Request *http.Request
// TimeStamp shows the time after the server returns a response.
@ -76,7 +77,8 @@ type LogFormatterParams struct {
BodySize int
// Keys are the keys set on the request's context.
Keys map[string]interface{}
}
}
)
// StatusCodeColor is the ANSI color for appropriately logging http status code to a terminal.
func (p *LogFormatterParams) StatusCodeColor() string {

22
mode.go
View File

@ -29,17 +29,19 @@ const (
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
var (
// 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()
DefaultWriter io.Writer = os.Stdout
// DefaultErrorWriter is the default io.Writer used by Gin to debug errors
var DefaultErrorWriter io.Writer = os.Stderr
// DefaultErrorWriter is the default io.Writer used by Gin to debug errors
DefaultErrorWriter io.Writer = os.Stderr
)
var (
ginMode = debugCode

View File

@ -16,8 +16,9 @@ const (
defaultStatus = http.StatusOK
)
// ResponseWriter ...
type ResponseWriter interface {
type (
// ResponseWriter ...
ResponseWriter interface {
http.ResponseWriter
http.Hijacker
http.Flusher
@ -41,13 +42,14 @@ type ResponseWriter interface {
// get the http.Pusher for server push
Pusher() http.Pusher
}
}
type responseWriter struct {
responseWriter struct {
http.ResponseWriter
size int
status int
}
}
)
var _ ResponseWriter = &responseWriter{}

View File

@ -16,14 +16,15 @@ var (
regEnLetter = regexp.MustCompile("^[A-Z]+$")
)
// IRouter defines all router handle interface includes single and group router.
type IRouter interface {
type (
// IRouter defines all router handle interface includes single and group router.
IRouter interface {
IRoutes
Group(string, ...HandlerFunc) *RouterGroup
}
}
// IRoutes defines all router handle interface.
type IRoutes interface {
// IRoutes defines all router handle interface.
IRoutes interface {
Use(...HandlerFunc) IRoutes
Handle(string, string, ...HandlerFunc) IRoutes
@ -39,16 +40,17 @@ type IRoutes interface {
StaticFile(string, string) IRoutes
Static(string, string) IRoutes
StaticFS(string, http.FileSystem) IRoutes
}
}
// RouterGroup is used internally to configure router, a RouterGroup is associated with
// a prefix and an array of handlers (middleware).
type RouterGroup struct {
// RouterGroup is used internally to configure router, a RouterGroup is associated with
// a prefix and an array of handlers (middleware).
RouterGroup struct {
Handlers HandlersChain
basePath string
engine *Engine
root bool
}
}
)
var _ IRouter = &RouterGroup{}

16
tree.go
View File

@ -19,16 +19,18 @@ var (
strStar = []byte("*")
)
// Param is a single URL parameter, consisting of a key and a value.
type Param struct {
type (
// Param is a single URL parameter, consisting of a key and a value.
Param struct {
Key string
Value string
}
}
// Params is a Param-slice, as returned by the router.
// The slice is ordered, the first URL parameter is also the first slice value.
// It is therefore safe to read values by the index.
type Params []Param
// Params is a Param-slice, as returned by the router.
// The slice is ordered, the first URL parameter is also the first slice value.
// It is therefore safe to read values by the index.
Params []Param
)
// Get returns the value of the first Param which key matches the given name and a boolean true.
// If no matching Param is found, an empty string is returned and a boolean false .