// Code generated by depstubber. It has been edited to fix a problem with embedded fields.
// This is a simple stub for github.com/revel/revel, strictly for use in testing.

// See the LICENSE file for information about the licensing of the original library.
// Source: github.com/revel/revel (exports: Controller,Params,Request,Router; functions: HTTP_QUERY)

// Package revel is a stub of github.com/revel/revel, generated by depstubber, with minor edits.
package revel

import (
	context "context"
	logger "github.com/revel/revel/logger"
	session "github.com/revel/revel/session"
	io "io"
	multipart "mime/multipart"
	http "net/http"
	url "net/url"
	os "os"
	reflect "reflect"
	regexp "regexp"
	time "time"
)

type AcceptLanguage struct {
	Language string
	Quality  float32
}

type AcceptLanguages []AcceptLanguage

func (_ AcceptLanguages) Len() int {
	return 0
}

func (_ AcceptLanguages) Less(_ int, _ int) bool {
	return false
}

func (_ AcceptLanguages) String() string {
	return ""
}

func (_ AcceptLanguages) Swap(_ int, _ int) {}

type ActionDefinition struct {
	Host   string
	Method string
	URL    string
	Action string
	Star   bool
	Args   map[string]string
}

func (_ *ActionDefinition) String() string {
	return ""
}

func ActionInvoker(_ *Controller, _ []Filter) {}

func AddHTTPMux(_ string, _ interface{}) {}

func AddInitEventHandler(_ EventHandler) {}

type ContentDisposition string

var (
	NoDisposition ContentDisposition = ""
	Attachment    ContentDisposition = "attachment"
	Inline        ContentDisposition = "inline"
)

type Controller struct {
	Name          string
	Type          *ControllerType
	MethodName    string
	MethodType    *MethodType
	AppController interface{}
	Action        string
	ClientIP      string
	Request       *Request
	Response      *Response
	Result        Result
	Flash         Flash
	Session       session.Session
	Params        *Params
	Args          map[string]interface{}
	ViewArgs      map[string]interface{}
	Validation    *Validation
	Log           logger.MultiLogger
}

func (_ *Controller) Destroy() {}

func (_ *Controller) FlashParams() {}

func (_ *Controller) Forbidden(_ string, _ ...interface{}) Result {
	return nil
}

func (_ *Controller) Message(_ string, _ ...interface{}) string {
	return ""
}

func (_ *Controller) NotFound(_ string, _ ...interface{}) Result {
	return nil
}

func (_ *Controller) Redirect(_ interface{}, _ ...interface{}) Result {
	return nil
}

func (_ *Controller) Render(_ ...interface{}) Result {
	return nil
}

func (_ *Controller) RenderBinary(_ io.Reader, _ string, _ ContentDisposition, _ time.Time) Result {
	return nil
}

func (_ *Controller) RenderError(_ error) Result {
	return nil
}

func (_ *Controller) RenderFile(_ *os.File, _ ContentDisposition) Result {
	return nil
}

func (_ *Controller) RenderFileName(_ string, _ ContentDisposition) Result {
	return nil
}

func (_ *Controller) RenderHTML(_ string) Result {
	return nil
}

func (_ *Controller) RenderJSON(_ interface{}) Result {
	return nil
}

func (_ *Controller) RenderJSONP(_ string, _ interface{}) Result {
	return nil
}

func (_ *Controller) RenderTemplate(_ string) Result {
	return nil
}

func (_ *Controller) RenderText(_ string, _ ...interface{}) Result {
	return nil
}

func (_ *Controller) RenderXML(_ interface{}) Result {
	return nil
}

func (_ *Controller) SetAction(_ string, _ string) error {
	return nil
}

func (_ *Controller) SetController(_ ServerContext) {}

func (_ *Controller) SetCookie(_ *http.Cookie) {}

func (_ *Controller) SetTypeAction(_ string, _ string, _ *ControllerType) error {
	return nil
}

func (_ *Controller) Stats() map[string]interface{} {
	return nil
}

func (_ *Controller) TemplateOutput(_ string) ([]byte, error) {
	return nil, nil
}

func (_ *Controller) Todo() Result {
	return nil
}

type ControllerFieldPath struct {
	IsPointer      bool
	FieldIndexPath []int
	FunctionCall   reflect.Value
}

func (_ *ControllerFieldPath) Invoke(_ reflect.Value, _ []reflect.Value) []reflect.Value {
	return nil
}

type ControllerType struct {
	Namespace         string
	ModuleSource      *Module
	Type              reflect.Type
	Methods           []*MethodType
	ControllerIndexes [][]int
	ControllerEvents  *ControllerTypeEvents
}

func (_ *ControllerType) Method(_ string) *MethodType {
	return nil
}

func (_ *ControllerType) Name() string {
	return ""
}

func (_ *ControllerType) ShortName() string {
	return ""
}

type ControllerTypeEvents struct {
	Before  []*ControllerFieldPath
	After   []*ControllerFieldPath
	Finally []*ControllerFieldPath
	Panic   []*ControllerFieldPath
}

type Error struct {
	SourceType  string
	Title       string
	Path        string
	Description string
	Line        int
	Column      int
	SourceLines []string
	Stack       string
	MetaError   string
	Link        string
}

func (_ *Error) ContextSource() []SourceLine {
	return nil
}

func (_ *Error) Error() string {
	return ""
}

func (_ *Error) SetLink(_ string) {}

type Event int

const (
	TEMPLATE_REFRESH_REQUESTED Event = iota
	TEMPLATE_REFRESH_COMPLETED
	REVEL_BEFORE_MODULES_LOADED
	REVEL_AFTER_MODULES_LOADED
	ENGINE_BEFORE_INITIALIZED
	ENGINE_STARTED
	ENGINE_SHUTDOWN_REQUEST
	ENGINE_SHUTDOWN
	ROUTE_REFRESH_REQUESTED
	ROUTE_REFRESH_COMPLETED
	REVEL_FAILURE
)

type EventHandler func(typeOf Event, value interface{}) (responseOf EventResponse)

type EventResponse int

type Filter func(c *Controller, filterChain []Filter)

var Filters = []Filter{}

var (
	PanicFilter             Filter = nil
	RouterFilter            Filter = nil
	FilterConfiguringFilter Filter = nil
	ParamsFilter            Filter = nil
	SessionFilter           Filter = nil
	FlashFilter             Filter = nil
	ValidationFilter        Filter = nil
	I18nFilter              Filter = nil
	InterceptorFilter       Filter = nil
	CompressFilter          Filter = nil
)

type Flash struct {
	Data map[string]string
	Out  map[string]string
}

func (_ Flash) Error(_ string, _ ...interface{}) {}

func (_ Flash) Success(_ string, _ ...interface{}) {}

var HTTP_QUERY int = 0

func InterceptMethod(intc InterceptorMethod, when When) {}

type InterceptorMethod interface{}

type Match struct {
	Regexp *regexp.Regexp
}

func (_ Match) DefaultMessage() string {
	return ""
}

func (_ Match) IsSatisfied(obj interface{}) bool {
	return false
}

type MaxSize struct {
	Max int
}

func (_ MaxSize) DefaultMessage() string {
	return ""
}

func (_ MaxSize) IsSatisfied(obj interface{}) bool {
	return false
}

type MethodArg struct {
	Name string
	Type reflect.Type
}

type MethodType struct {
	Name           string
	Args           []*MethodArg
	RenderArgNames map[int][]string
	Index          int
}

type MinSize struct {
	Min int
}

func (_ MinSize) DefaultMessage() string {
	return ""
}

func (_ MinSize) IsSatisfied(obj interface{}) bool {
	return false
}

type Module struct {
	Name               string
	ImportPath         string
	Path               string
	ControllerTypeList []*ControllerType
	Log                interface{}
}

func (_ *Module) AddController(_ *ControllerType) {}

func (_ *Module) ControllerByName(_ string, _ string) *ControllerType {
	return nil
}

func (_ *Module) Namespace() string {
	return ""
}

type MultipartForm struct {
	File  map[string][]*multipart.FileHeader
	Value url.Values
}

func OnAppStart(_ func(), _ ...int) {}

type OutResponse struct {
	Server ServerResponse
}

func (_ *OutResponse) Destroy() {}

func (_ *OutResponse) Header() *RevelHeader {
	return nil
}

func (_ *OutResponse) Write(_ []byte) (int, error) {
	return 0, nil
}

type Params struct {
	url.Values
	Fixed url.Values
	Route url.Values
	Query url.Values
	Form  url.Values
	Files map[string][]*multipart.FileHeader
	JSON  []byte
}

func (_ *Params) Bind(_ interface{}, _ string) {}

func (_ *Params) BindJSON(_ interface{}) error {
	return nil
}

type Request struct {
	In              ServerRequest
	Header          *RevelHeader
	ContentType     string
	Format          string
	AcceptLanguages AcceptLanguages
	Locale          string
	WebSocket       ServerWebSocket
	Method          string
	RemoteAddr      string
	Host            string
	URL             *url.URL
	Form            url.Values
	MultipartForm   *MultipartForm
}

func (_ *Request) Args() map[string]interface{} {
	return nil
}

func (_ *Request) Context() context.Context {
	return nil
}

func (_ *Request) Cookie(_ string) (ServerCookie, error) {
	return nil, nil
}

func (_ *Request) Destroy() {}

func (_ *Request) FormValue(_ string) string {
	return ""
}

func (_ *Request) GetBody() io.Reader {
	return nil
}

func (_ *Request) GetForm() (url.Values, error) {
	return nil, nil
}

func (_ *Request) GetHttpHeader(_ string) string {
	return ""
}

func (_ *Request) GetMultipartForm() (ServerMultipartForm, error) {
	return nil, nil
}

func (_ *Request) GetPath() string {
	return ""
}

func (_ *Request) GetQuery() url.Values {
	return nil
}

func (_ *Request) GetRequestURI() string {
	return ""
}

func (_ *Request) GetValue(_ int) interface{} {
	return nil
}

func (_ *Request) MultipartReader() (*multipart.Reader, error) {
	return nil, nil
}

func (_ *Request) ParseForm() error {
	return nil
}

func (_ *Request) ParseMultipartForm(_ int64) error {
	return nil
}

func (_ *Request) PostFormValue(_ string) string {
	return ""
}

func (_ *Request) Referer() string {
	return ""
}

func (_ *Request) SetRequest(_ ServerRequest) {}

func (_ *Request) UserAgent() string {
	return ""
}

type Required struct{}

func (_ Required) DefaultMessage() string {
	return ""
}

func (_ Required) IsSatisfied(obj interface{}) bool {
	return false
}

type Response struct {
	Status      int
	ContentType string
	Out         OutResponse
}

func (_ *Response) Destroy() {}

func (_ *Response) GetStreamWriter() StreamWriter {
	return nil
}

func (_ *Response) GetWriter() io.Writer {
	return nil
}

func (_ *Response) SetResponse(_ ServerResponse) {}

func (_ *Response) SetStatus(_ int) {}

func (_ *Response) SetWriter(_ io.Writer) bool {
	return false
}

func (_ *Response) WriteHeader(_ int, _ string) {}

type Result interface {
	Apply(_ *Request, _ *Response)
}

type RevelHeader struct {
	Server ServerHeader
}

func (_ *RevelHeader) Add(_ string, _ string) {}

func (_ *RevelHeader) Destroy() {}

func (_ *RevelHeader) Get(_ string) string {
	return ""
}

func (_ *RevelHeader) GetAll(_ string) []string {
	return nil
}

func (_ *RevelHeader) Set(_ string, _ string) {}

func (_ *RevelHeader) SetCookie(_ string) {}

func (_ *RevelHeader) SetStatus(_ int) {}

type Route struct {
	ModuleSource        *Module
	Method              string
	Path                string
	Action              string
	ControllerNamespace string
	ControllerName      string
	MethodName          string
	FixedParams         []string
	TreePath            string
	TypeOfController    *ControllerType
}

func (_ *Route) ActionPath() string {
	return ""
}

type RouteMatch struct {
	Action           string
	ControllerName   string
	MethodName       string
	FixedParams      []string
	Params           map[string][]string
	TypeOfController *ControllerType
	ModuleSource     *Module
}

type Router struct {
	Routes []*Route
	Tree   interface{}
	Module string
}

func (_ *Router) Refresh() *Error {
	return nil
}

func (_ *Router) Reverse(_ string, _ map[string]string) *ActionDefinition {
	return nil
}

func (_ *Router) ReverseError(_ string, _ map[string]string, _ *Request) (*ActionDefinition, error) {
	return nil, nil
}

func (_ *Router) Route(_ *Request) *RouteMatch {
	return nil
}

type ServerContext interface {
	GetRequest() ServerRequest
	GetResponse() ServerResponse
}

type ServerCookie interface {
	GetValue() string
}

type ServerHeader interface {
	Add(_ string, _ string)
	Del(_ string)
	Get(_ string) []string
	GetCookie(_ string) (ServerCookie, error)
	GetKeys() []string
	Set(_ string, _ string)
	SetCookie(_ string)
	SetStatus(_ int)
}

type ServerMultipartForm interface {
	GetFiles() map[string][]*multipart.FileHeader
	GetValues() url.Values
	RemoveAll() error
}

type ServerRequest interface {
	Get(_ int) (interface{}, error)
	GetRaw() interface{}
	Set(_ int, _ interface{}) bool
}

type ServerResponse interface {
	Get(_ int) (interface{}, error)
	GetRaw() interface{}
	Set(_ int, _ interface{}) bool
}

type ServerWebSocket interface {
	Get(_ int) (interface{}, error)
	GetRaw() interface{}
	MessageReceive(_ interface{}) error
	MessageReceiveJSON(_ interface{}) error
	MessageSend(_ interface{}) error
	MessageSendJSON(_ interface{}) error
	Set(_ int, _ interface{}) bool
}

type SourceLine struct {
	Source  string
	Line    int
	IsError bool
}

type StreamWriter interface {
	WriteStream(_ string, _ int64, _ time.Time, _ io.Reader) error
}

type Validation struct {
	Errors     []*ValidationError
	Request    *Request
	Translator func(string, string, ...interface{}) string
}

func (_ *Validation) Check(_ interface{}, _ ...Validator) *ValidationResult {
	return nil
}

func (_ *Validation) Clear() {}

func (_ *Validation) Domain(_ string) *ValidationResult {
	return nil
}

func (_ *Validation) Email(_ string) *ValidationResult {
	return nil
}

func (_ *Validation) Error(_ string, _ ...interface{}) *ValidationResult {
	return nil
}

func (_ *Validation) ErrorKey(_ string, _ ...interface{}) *ValidationResult {
	return nil
}

func (_ *Validation) ErrorMap() map[string]*ValidationError {
	return nil
}

func (_ *Validation) FilePath(_ string, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) HasErrors() bool {
	return false
}

func (_ *Validation) IPAddr(_ string, _ ...int) *ValidationResult {
	return nil
}

func (_ *Validation) Keep() {}

func (_ *Validation) Length(_ interface{}, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) MacAddr(_ string) *ValidationResult {
	return nil
}

func (_ *Validation) Match(_ string, _ *regexp.Regexp) *ValidationResult {
	return nil
}

func (_ *Validation) Max(_ int, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) MaxFloat(_ float64, _ float64) *ValidationResult {
	return nil
}

func (_ *Validation) MaxSize(_ interface{}, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) Min(_ int, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) MinFloat(_ float64, _ float64) *ValidationResult {
	return nil
}

func (_ *Validation) MinSize(_ interface{}, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) PureText(_ string, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) Range(_ int, _ int, _ int) *ValidationResult {
	return nil
}

func (_ *Validation) RangeFloat(_ float64, _ float64, _ float64) *ValidationResult {
	return nil
}

func (_ *Validation) Required(_ interface{}) *ValidationResult {
	return nil
}

func (_ *Validation) URL(_ string) *ValidationResult {
	return nil
}

func (_ *Validation) ValidationResult(_ bool) *ValidationResult {
	return nil
}

type ValidationError struct {
	Message string
	Key     string
}

func (_ *ValidationError) String() string {
	return ""
}

type ValidationResult struct {
	Error      *ValidationError
	Ok         bool
	Locale     string
	Translator func(string, string, ...interface{}) string
}

func (_ *ValidationResult) Key(_ string) *ValidationResult {
	return nil
}

func (_ *ValidationResult) Message(_ string, _ ...interface{}) *ValidationResult {
	return nil
}

func (_ *ValidationResult) MessageKey(_ string, _ ...interface{}) *ValidationResult {
	return nil
}

type Validator interface {
	DefaultMessage() string
	IsSatisfied(_ interface{}) bool
}

type When int

const (
	BEFORE When = iota
	AFTER
	PANIC
	FINALLY
)
