hooks.go 1.8 KB
Newer Older
A
astaxie 已提交
1 2 3 4 5 6 7
package beego

import (
	"mime"
	"path/filepath"
	"strconv"

J
JessonChan 已提交
8 9
	"net/http"

A
astaxie 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23
	"github.com/astaxie/beego/session"
)

//
func registerMime() error {
	for k, v := range mimemaps {
		mime.AddExtensionType(k, v)
	}
	return nil
}

// register default error http handlers, 404,401,403,500 and 503.
func registerDefaultErrorHandler() error {

J
JessonChan 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36
	for e, h := range map[string]func(http.ResponseWriter, *http.Request){
		"401": unauthorized,
		"402": paymentRequired,
		"403": forbidden,
		"404": notFound,
		"405": methodNotAllowed,
		"500": internalServerError,
		"501": notImplemented,
		"502": badGateway,
		"503": serviceUnavailable,
		"504": gatewayTimeout,
	} {
		ErrorHandler(e, h)
A
astaxie 已提交
37 38 39 40 41 42 43 44 45 46 47
	}
	return nil
}

func registerSession() error {
	if SessionOn {
		var err error
		sessionConfig := AppConfig.String("sessionConfig")
		if sessionConfig == "" {
			sessionConfig = `{"cookieName":"` + SessionName + `",` +
				`"gclifetime":` + strconv.FormatInt(SessionGCMaxLifetime, 10) + `,` +
48 49
				`"providerConfig":"` + filepath.ToSlash(SessionProviderConfig) + `",` +
				`"secure":` + strconv.FormatBool(EnableHTTPTLS) + `,` +
A
astaxie 已提交
50 51 52 53
				`"enableSetCookie":` + strconv.FormatBool(SessionAutoSetCookie) + `,` +
				`"domain":"` + SessionDomain + `",` +
				`"cookieLifeTime":` + strconv.Itoa(SessionCookieLifeTime) + `}`
		}
A
astaxie 已提交
54
		GlobalSessions, err = session.NewManager(SessionProvider, sessionConfig)
A
astaxie 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
		if err != nil {
			return err
		}
		go GlobalSessions.GC()
	}
	return nil
}

func registerTemplate() error {
	if AutoRender {
		err := BuildTemplate(ViewsPath)
		if err != nil && RunMode == "dev" {
			Warn(err)
		}
	}
	return nil
}

func registerDocs() error {
	if EnableDocs {
		Get("/docs", serverDocs)
		Get("/docs/*", serverDocs)
	}
	return nil
}
A
astaxie 已提交
80 81 82 83 84 85 86

func registerAdmin() error {
	if EnableAdmin {
		go beeAdminApp.Run()
	}
	return nil
}