prepareHttpContext init HttpContext, init session & gzip config on HttpContext
(server *HttpServer, w http.ResponseWriter, req *http.Request)
| 549 | |
| 550 | // prepareHttpContext init HttpContext, init session & gzip config on HttpContext |
| 551 | func 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 |
| 592 | func releaseHttpContext(server *HttpServer, httpCtx Context) { |
no test coverage detected