MCPcopy Create free account
hub / github.com/devfeel/dotweb / prepareHttpContext

Function prepareHttpContext

server.go:551–589  ·  view source on GitHub ↗

prepareHttpContext init HttpContext, init session & gzip config on HttpContext

(server *HttpServer, w http.ResponseWriter, req *http.Request)

Source from the content-addressed store, hash-verified

549
550// prepareHttpContext init HttpContext, init session & gzip config on HttpContext
551func prepareHttpContext(server *HttpServer, w http.ResponseWriter, req *http.Request) Context {
552 // get from pool
553 response := server.pool.response.Get().(*Response)
554 request := server.pool.request.Get().(*Request)
555 httpCtx := server.pool.context.Get().(Context)
556 httpCtx.reset(response, request, server, nil, nil, nil)
557 response.reset(w)
558 request.reset(req, httpCtx)
559
560 // session
561 // if exists client-sessionid, use it
562 // if not exists client-sessionid, new one
563 if httpCtx.HttpServer().SessionConfig().EnabledSession {
564 sessionId, err := httpCtx.HttpServer().GetSessionManager().GetClientSessionID(httpCtx.Request().Request)
565 if err == nil && sessionId != "" {
566 httpCtx.setSessionID(sessionId)
567 } else {
568 httpCtx.setSessionID(httpCtx.HttpServer().GetSessionManager().NewSessionID())
569 cookie := &http.Cookie{
570 Name: httpCtx.HttpServer().sessionManager.StoreConfig().CookieName,
571 Value: url.QueryEscape(httpCtx.SessionID()),
572 Path: "/",
573 }
574 httpCtx.SetCookie(cookie)
575 }
576 }
577 // init gzip
578 if httpCtx.HttpServer().ServerConfig().EnabledGzip {
579 gw, err := gzip.NewWriterLevel(httpCtx.Response().Writer(), DefaultGzipLevel)
580 if err != nil {
581 panic("use gzip error -> " + err.Error())
582 }
583 grw := &gzipResponseWriter{Writer: gw, ResponseWriter: httpCtx.Response().Writer()}
584 httpCtx.Response().reset(grw)
585 httpCtx.Response().SetHeader(HeaderContentEncoding, gzipScheme)
586 }
587
588 return httpCtx
589}
590
591// releaseHttpContext release HttpContext, release gzip writer
592func releaseHttpContext(server *HttpServer, httpCtx Context) {

Callers 1

ServeHTTPMethod · 0.85

Calls 15

SessionConfigMethod · 0.80
GetClientSessionIDMethod · 0.80
GetSessionManagerMethod · 0.80
NewSessionIDMethod · 0.80
StoreConfigMethod · 0.80
ServerConfigMethod · 0.80
WriterMethod · 0.80
GetMethod · 0.65
resetMethod · 0.65
HttpServerMethod · 0.65
RequestMethod · 0.65
setSessionIDMethod · 0.65

Tested by

no test coverage detected