middleware

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2014 License: BSD-3-Clause Imports: 30 Imported by: 0

Documentation

Overview

foked from https://github.com/martini-contrib/render/blob/master/render.go

Index

Constants

View Source
const (
	ContentType   = "Content-Type"
	ContentLength = "Content-Length"
	ContentJSON   = "application/json"
	ContentHTML   = "text/html"
	ContentXHTML  = "application/xhtml+xml"
)

Variables

View Source
var (
	// Maximum amount of memory to use when parsing a multipart form.
	// Set this to whatever value you prefer; default is 10 MB.
	MaxMemory = int64(1024 * 1024 * 10)
)

Functions

func Bind added in v0.3.0

func Bind(obj interface{}, ifacePtr ...interface{}) martini.Handler

Bind accepts a copy of an empty struct and populates it with values from the request (if deserialization is successful). It wraps up the functionality of the Form and Json middleware according to the Content-Type of the request, and it guesses if no Content-Type is specified. Bind invokes the ErrorHandler middleware to bail out if errors occurred. If you want to perform your own error handling, use Form or Json middleware directly. An interface pointer can be added as a second argument in order to map the struct to a specific interface.

func BindIgnErr added in v0.3.0

func BindIgnErr(obj interface{}, ifacePtr ...interface{}) martini.Handler

BindIgnErr will do the exactly same thing as Bind but without any error handling, which user has freedom to deal with them. This allows user take advantages of validation.

func ErrorHandler added in v0.3.0

func ErrorHandler(errs base.BindingErrors, resp http.ResponseWriter)

ErrorHandler simply counts the number of errors in the context and, if more than 0, writes a 400 Bad Request response and a JSON payload describing the errors with the "Content-Type" set to "application/json". Middleware remaining on the stack will not even see the request if, by this point, there are any errors. This is a "default" handler, of sorts, and you are welcome to use your own instead. The Bind middleware invokes this automatically for convenience.

func Form added in v0.3.0

func Form(formStruct interface{}, ifacePtr ...interface{}) martini.Handler

Form is middleware to deserialize form-urlencoded data from the request. It gets data from the form-urlencoded body, if present, or from the query string. It uses the http.Request.ParseForm() method to perform deserialization, then reflection is used to map each field into the struct with the proper type. Structs with primitive slice types (bool, float, int, string) can support deserialization of repeated form keys, for example: key=val1&key=val2&key=val3 An interface pointer can be added as a second argument in order to map the struct to a specific interface.

func InitContext

func InitContext() martini.Handler

InitContext initializes a classic context for a request.

func Json added in v0.3.0

func Json(jsonStruct interface{}, ifacePtr ...interface{}) martini.Handler

Json is middleware to deserialize a JSON payload from the request into the struct that is passed in. The resulting struct is then validated, but no error handling is actually performed here. An interface pointer can be added as a second argument in order to map the struct to a specific interface.

func Logger

func Logger() martini.Handler

func MultipartForm added in v0.3.0

func MultipartForm(formStruct interface{}, ifacePtr ...interface{}) martini.Handler

func Renderer

func Renderer(options ...RenderOptions) martini.Handler

func RepoAssignment

func RepoAssignment(redirect bool, args ...bool) martini.Handler

func Toggle

func Toggle(options *ToggleOptions) martini.Handler

func Validate added in v0.3.0

func Validate(obj interface{}) martini.Handler

Validate is middleware to enforce required fields. If the struct passed in is a Validator, then the user-defined Validate method is executed, and its errors are mapped to the context. This middleware performs no error handling: it merely detects them and maps them.

Types

type Context

type Context struct {
	*Render

	Req      *http.Request
	Res      http.ResponseWriter
	Flash    *Flash
	Session  session.SessionStore
	Cache    cache.Cache
	User     *models.User
	IsSigned bool

	Repo struct {
		IsOwner    bool
		IsWatching bool
		IsBranch   bool
		IsTag      bool
		IsCommit   bool
		HasAccess  bool
		Repository *models.Repository
		Owner      *models.User
		Commit     *git.Commit
		GitRepo    *git.Repository
		BranchName string
		CommitId   string
		RepoLink   string
		CloneLink  struct {
			SSH   string
			HTTPS string
			Git   string
		}
		Mirror *models.Mirror
	}
	// contains filtered or unexported fields
}

Context represents context of a request.

func (*Context) CsrfToken

func (ctx *Context) CsrfToken() string

func (*Context) CsrfTokenValid

func (ctx *Context) CsrfTokenValid() bool

func (*Context) Debug

func (ctx *Context) Debug(msg string, args ...interface{})

func (*Context) GetCookie

func (ctx *Context) GetCookie(name string) string

func (*Context) GetSecureCookie

func (ctx *Context) GetSecureCookie(Secret, key string) (string, bool)

Get secure cookie from request by a given key.

func (*Context) HTML

func (ctx *Context) HTML(status int, name string, htmlOpt ...HTMLOptions)

HTML calls render.HTML underlying but reduce one argument.

func (*Context) Handle

func (ctx *Context) Handle(status int, title string, err error)

Handle handles and logs error by given status.

func (*Context) HasError

func (ctx *Context) HasError() bool

HasError returns true if error occurs in form validation.

func (*Context) Query

func (ctx *Context) Query(name string) string

Query querys form parameter.

func (*Context) RenderWithErr

func (ctx *Context) RenderWithErr(msg, tpl string, form auth.Form)

RenderWithErr used for page has form validation but need to prompt error to users.

func (*Context) ServeContent added in v0.3.0

func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{})

func (*Context) ServeFile added in v0.3.0

func (ctx *Context) ServeFile(file string, names ...string)

func (*Context) SetCookie

func (ctx *Context) SetCookie(name string, value string, others ...interface{})

func (*Context) SetSecureCookie

func (ctx *Context) SetSecureCookie(Secret, name, value string, others ...interface{})

Set Secure cookie for response.

type Delims

type Delims struct {
	Left string

	Right string
}

type Flash added in v0.3.0

type Flash struct {
	url.Values
	ErrorMsg, SuccessMsg string
}

func (*Flash) Error added in v0.3.0

func (f *Flash) Error(msg string)

func (*Flash) Success added in v0.3.0

func (f *Flash) Success(msg string)

type HTMLOptions

type HTMLOptions struct {
	Layout string
}

type Render

type Render struct {
	http.ResponseWriter

	Data base.TmplData
	// contains filtered or unexported fields
}

func (*Render) Error

func (r *Render) Error(status int, message ...string)

func (*Render) HTML

func (r *Render) HTML(status int, name string, binding interface{}, htmlOpt ...HTMLOptions)

func (*Render) HTMLString

func (r *Render) HTMLString(name string, binding interface{}, htmlOpt ...HTMLOptions) (string, error)

func (*Render) JSON

func (r *Render) JSON(status int, v interface{})

func (*Render) JSONString

func (r *Render) JSONString(v interface{}) (string, error)

func (*Render) Redirect

func (r *Render) Redirect(location string, status ...int)

func (*Render) Template

func (r *Render) Template() *template.Template

type RenderOptions

type RenderOptions struct {
	Directory string

	Layout string

	Extensions []string

	Funcs []template.FuncMap

	Delims Delims

	Charset string

	IndentJSON bool

	HTMLContentType string
}

type ToggleOptions

type ToggleOptions struct {
	SignInRequire  bool
	SignOutRequire bool
	AdminRequire   bool
	DisableCsrf    bool
}

type Validator added in v0.3.0

type Validator interface {
	Validate(*base.BindingErrors, *http.Request, martini.Context)
}

Implement the Validator interface to define your own input validation before the request even gets to your application. The Validate method will be executed during the validation phase.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL