mirror of
https://github.com/astaxie/beego.git
synced 2024-11-25 11:20:57 +00:00
Added to input.go: AcceptHtml, AcceptsXml and AcceptsJson functions which check the header agains a regex for simpler mult-content-type handling.
This commit is contained in:
parent
2e51c124f1
commit
1a6ea693b5
@ -21,12 +21,21 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/astaxie/beego/session"
|
||||
)
|
||||
|
||||
// Regexes for checking the accept headers
|
||||
// TODO make sure these are correct
|
||||
var (
|
||||
acceptsHtmlRegex = regexp.MustCompile(`(text/html|application/xhtml\+xml)(?:,|$)`)
|
||||
acceptsXmlRegex = regexp.MustCompile(`(application/xml|text/xml)(?:,|$)`)
|
||||
acceptsJsonRegex = regexp.MustCompile(`(application/json)(?:,|$)?`)
|
||||
)
|
||||
|
||||
// BeegoInput operates the http request header, data, cookie and body.
|
||||
// it also contains router params and current session.
|
||||
type BeegoInput struct {
|
||||
@ -163,6 +172,21 @@ func (input *BeegoInput) IsUpload() bool {
|
||||
return strings.Contains(input.Header("Content-Type"), "multipart/form-data")
|
||||
}
|
||||
|
||||
// Checks if request accepts html response
|
||||
func (input *BeegoInput) AcceptsHtml() bool {
|
||||
return acceptsHtmlRegex.MatchString(input.Header("Accept"))
|
||||
}
|
||||
|
||||
// Checks if request accepts xml response
|
||||
func (input *BeegoInput) AcceptsXml() bool {
|
||||
return acceptsXmlRegex.MatchString(input.Header("Accept"))
|
||||
}
|
||||
|
||||
// Checks if request accepts json response
|
||||
func (input *BeegoInput) AcceptsJson() bool {
|
||||
return acceptsJsonRegex.MatchString(input.Header("Accept"))
|
||||
}
|
||||
|
||||
// IP returns request client ip.
|
||||
// if in proxy, return first proxy id.
|
||||
// if error, return 127.0.0.1.
|
||||
|
Loading…
Reference in New Issue
Block a user