70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package param
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
//MethodParam keeps param information to be auto passed to controller methods
 | 
						|
type MethodParam struct {
 | 
						|
	name         string
 | 
						|
	in           paramType
 | 
						|
	required     bool
 | 
						|
	defaultValue string
 | 
						|
}
 | 
						|
 | 
						|
type paramType byte
 | 
						|
 | 
						|
const (
 | 
						|
	param paramType = iota
 | 
						|
	path
 | 
						|
	body
 | 
						|
	header
 | 
						|
)
 | 
						|
 | 
						|
// New creates a new MethodParam with name and specific options
 | 
						|
func New(name string, opts ...MethodParamOption) *MethodParam {
 | 
						|
	return newParam(name, nil, opts)
 | 
						|
}
 | 
						|
 | 
						|
func newParam(name string, parser paramParser, opts []MethodParamOption) (param *MethodParam) {
 | 
						|
	param = &MethodParam{name: name}
 | 
						|
	for _, option := range opts {
 | 
						|
		option(param)
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// Make creates an array of MethodParmas or an empty array
 | 
						|
func Make(list ...*MethodParam) []*MethodParam {
 | 
						|
	if len(list) > 0 {
 | 
						|
		return list
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func (mp *MethodParam) String() string {
 | 
						|
	options := []string{}
 | 
						|
	result := "param.New(\"" + mp.name + "\""
 | 
						|
	if mp.required {
 | 
						|
		options = append(options, "param.IsRequired")
 | 
						|
	}
 | 
						|
	switch mp.in {
 | 
						|
	case path:
 | 
						|
		options = append(options, "param.InPath")
 | 
						|
	case body:
 | 
						|
		options = append(options, "param.InBody")
 | 
						|
	case header:
 | 
						|
		options = append(options, "param.InHeader")
 | 
						|
	}
 | 
						|
	if mp.defaultValue != "" {
 | 
						|
		options = append(options, fmt.Sprintf(`param.Default("%s")`, mp.defaultValue))
 | 
						|
	}
 | 
						|
	if len(options) > 0 {
 | 
						|
		result += ", "
 | 
						|
	}
 | 
						|
	result += strings.Join(options, ", ")
 | 
						|
	result += ")"
 | 
						|
	return result
 | 
						|
}
 |