mirror of https://github.com/gofiber/fiber.git
parent
732b4c720e
commit
27a7b21716
4
app.go
4
app.go
|
@ -490,8 +490,8 @@ func (app *App) prefork(address string) (ln net.Listener, err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, child := range childs {
|
for k := range childs {
|
||||||
if err := child.Wait(); err != nil {
|
if err := childs[k].Wait(); err != nil {
|
||||||
return ln, err
|
return ln, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
61
ctx.go
61
ctx.go
|
@ -103,26 +103,26 @@ func (ctx *Ctx) Accepts(offers ...string) (offer string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
specs := strings.Split(h, ",")
|
specs := strings.Split(h, ",")
|
||||||
for _, value := range offers {
|
for i := range offers {
|
||||||
mimetype := getMIME(value)
|
mimetype := getMIME(offers[i])
|
||||||
// if mimetype != "" {
|
// if mimetype != "" {
|
||||||
// mimetype = strings.Split(mimetype, ";")[0]
|
// mimetype = strings.Split(mimetype, ";")[0]
|
||||||
// } else {
|
// } else {
|
||||||
// mimetype = offer
|
// mimetype = offer
|
||||||
// }
|
// }
|
||||||
for _, spec := range specs {
|
for k := range specs {
|
||||||
spec = strings.TrimSpace(spec)
|
spec := strings.TrimSpace(specs[k])
|
||||||
if strings.HasPrefix(spec, "*/*") {
|
if strings.HasPrefix(spec, "*/*") {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(spec, mimetype) {
|
if strings.HasPrefix(spec, mimetype) {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.Contains(spec, "/*") {
|
if strings.Contains(spec, "/*") {
|
||||||
if strings.HasPrefix(spec, strings.Split(mimetype, "/")[0]) {
|
if strings.HasPrefix(spec, strings.Split(mimetype, "/")[0]) {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,15 +142,14 @@ func (ctx *Ctx) AcceptsCharsets(offers ...string) (offer string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
specs := strings.Split(h, ",")
|
specs := strings.Split(h, ",")
|
||||||
for _, value := range offers {
|
for i := range offers {
|
||||||
for _, spec := range specs {
|
for k := range specs {
|
||||||
|
spec := strings.TrimSpace(specs[k])
|
||||||
spec = strings.TrimSpace(spec)
|
|
||||||
if strings.HasPrefix(spec, "*") {
|
if strings.HasPrefix(spec, "*") {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(spec, value) {
|
if strings.HasPrefix(spec, offers[i]) {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,14 +168,14 @@ func (ctx *Ctx) AcceptsEncodings(offers ...string) (offer string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
specs := strings.Split(h, ",")
|
specs := strings.Split(h, ",")
|
||||||
for _, value := range offers {
|
for i := range offers {
|
||||||
for _, spec := range specs {
|
for k := range specs {
|
||||||
spec = strings.TrimSpace(spec)
|
spec := strings.TrimSpace(specs[k])
|
||||||
if strings.HasPrefix(spec, "*") {
|
if strings.HasPrefix(spec, "*") {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(spec, value) {
|
if strings.HasPrefix(spec, offers[i]) {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,14 +193,14 @@ func (ctx *Ctx) AcceptsLanguages(offers ...string) (offer string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
specs := strings.Split(h, ",")
|
specs := strings.Split(h, ",")
|
||||||
for _, value := range offers {
|
for i := range offers {
|
||||||
for _, spec := range specs {
|
for k := range specs {
|
||||||
spec = strings.TrimSpace(spec)
|
spec := strings.TrimSpace(specs[k])
|
||||||
if strings.HasPrefix(spec, "*") {
|
if strings.HasPrefix(spec, "*") {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(spec, value) {
|
if strings.HasPrefix(spec, offers[i]) {
|
||||||
return value
|
return offers[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -441,7 +440,8 @@ func (ctx *Ctx) Fresh() bool {
|
||||||
}
|
}
|
||||||
var etagStal = true
|
var etagStal = true
|
||||||
var matches = parseTokenList(getBytes(noneMatch))
|
var matches = parseTokenList(getBytes(noneMatch))
|
||||||
for _, match := range matches {
|
for i := range matches {
|
||||||
|
match := matches[i]
|
||||||
if match == etag || match == "W/"+etag || "W/"+match == etag {
|
if match == etag || match == "W/"+etag || "W/"+match == etag {
|
||||||
etagStal = false
|
etagStal = false
|
||||||
break
|
break
|
||||||
|
@ -506,8 +506,8 @@ func (ctx *Ctx) Is(extension string) (match bool) {
|
||||||
|
|
||||||
exts, _ := mime.ExtensionsByType(ctx.Get(HeaderContentType))
|
exts, _ := mime.ExtensionsByType(ctx.Get(HeaderContentType))
|
||||||
if len(exts) > 0 {
|
if len(exts) > 0 {
|
||||||
for _, item := range exts {
|
for i := range exts {
|
||||||
if item == extension {
|
if exts[i] == extension {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -555,7 +555,8 @@ func (ctx *Ctx) JSONP(data interface{}, callback ...string) error {
|
||||||
// Links joins the links followed by the property to populate the response’s Link HTTP header field.
|
// Links joins the links followed by the property to populate the response’s Link HTTP header field.
|
||||||
func (ctx *Ctx) Links(link ...string) {
|
func (ctx *Ctx) Links(link ...string) {
|
||||||
h := ""
|
h := ""
|
||||||
for i, l := range link {
|
for i := range link {
|
||||||
|
l := link[i]
|
||||||
if i%2 == 0 {
|
if i%2 == 0 {
|
||||||
h += "<" + l + ">"
|
h += "<" + l + ">"
|
||||||
} else {
|
} else {
|
||||||
|
|
18
utils.go
18
utils.go
|
@ -73,7 +73,8 @@ func getParams(path string) (params []string) {
|
||||||
}
|
}
|
||||||
segments := strings.Split(path, "/")
|
segments := strings.Split(path, "/")
|
||||||
replacer := strings.NewReplacer(":", "", "?", "")
|
replacer := strings.NewReplacer(":", "", "?", "")
|
||||||
for _, s := range segments {
|
for i := range segments {
|
||||||
|
s := segments[i]
|
||||||
if s == "" {
|
if s == "" {
|
||||||
continue
|
continue
|
||||||
} else if s[0] == ':' {
|
} else if s[0] == ':' {
|
||||||
|
@ -89,7 +90,8 @@ func getParams(path string) (params []string) {
|
||||||
func getRegex(path string) (*regexp.Regexp, error) {
|
func getRegex(path string) (*regexp.Regexp, error) {
|
||||||
pattern := "^"
|
pattern := "^"
|
||||||
segments := strings.Split(path, "/")
|
segments := strings.Split(path, "/")
|
||||||
for _, s := range segments {
|
for i := range segments {
|
||||||
|
s := segments[i]
|
||||||
if s == "" {
|
if s == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -159,8 +161,8 @@ var getBytesImmutable = func(s string) (b []byte) {
|
||||||
|
|
||||||
// Check if -prefork is in arguments
|
// Check if -prefork is in arguments
|
||||||
func isPrefork() bool {
|
func isPrefork() bool {
|
||||||
for _, v := range os.Args[1:] {
|
for i := range os.Args[1:] {
|
||||||
if v == "-prefork" {
|
if os.Args[1:][i] == "-prefork" {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,8 +171,8 @@ func isPrefork() bool {
|
||||||
|
|
||||||
// Check if -child is in arguments
|
// Check if -child is in arguments
|
||||||
func isChild() bool {
|
func isChild() bool {
|
||||||
for _, v := range os.Args[1:] {
|
for i := range os.Args[1:] {
|
||||||
if v == "-child" {
|
if os.Args[1:][i] == "-child" {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,8 +208,8 @@ func parseTokenList(noneMatchBytes []byte) []string {
|
||||||
end int
|
end int
|
||||||
list []string
|
list []string
|
||||||
)
|
)
|
||||||
for i, v := range noneMatchBytes {
|
for i := range noneMatchBytes {
|
||||||
switch v {
|
switch noneMatchBytes[i] {
|
||||||
case 0x20:
|
case 0x20:
|
||||||
if start == end {
|
if start == end {
|
||||||
start = i + 1
|
start = i + 1
|
||||||
|
|
Loading…
Reference in New Issue