package routing import ( "log" "net/http" lishwist "lishwist/core" "lishwist/http/response" "github.com/Teajey/rsvp" ) func ExpectAppSession(next func(*lishwist.Session, *response.Session, http.Header, *http.Request) rsvp.Response) response.HandlerFunc { return func(session *response.Session, h http.Header, r *http.Request) rsvp.Response { sessionKey, ok := session.GetValue("sessionKey").(string) if !ok { log.Printf("Failed to get key from session\n") return response.Error(http.StatusInternalServerError, "Something went wrong.") } appSession, err := lishwist.SessionFromKey(sessionKey) if err != nil { log.Printf("Failed to get session by key %v: %s\n", sessionKey, err) return response.Error(http.StatusInternalServerError, "Something went wrong.") } if appSession == nil { log.Printf("Session not found under key: %s\n", sessionKey) return response.Error(http.StatusInternalServerError, "Something went wrong.") } return next(appSession, session, h, r) } }