in rellenv/context.go [115:187]
func (p *Parser) FromRequest(r *http.Request) (*Env, error) {
e := p.Default()
if appid, err := strconv.ParseUint(r.FormValue("appid"), 10, 64); err == nil {
e.appID = appid
}
if appid, err := strconv.ParseUint(r.FormValue("client_id"), 10, 64); err == nil {
e.appID = appid
}
if level := r.FormValue("level"); level != "" {
e.level = level
}
if locale := r.FormValue("locale"); locale != "" {
e.locale = locale
}
if env := r.FormValue("server"); env != "" {
e.Env = env
}
if version := r.FormValue("version"); version != "" {
e.Version = version
}
if viewMode := r.FormValue("view-mode"); viewMode != "" {
e.ViewMode = viewMode
}
if module := r.FormValue("module"); module != "" {
e.Module = module
}
if status, err := strconv.ParseBool(r.FormValue("status")); err == nil {
e.Status = status
}
if fr, err := strconv.ParseBool(r.FormValue("frictionlessRequests")); err == nil {
e.FrictionlessRequests = fr
}
if init, err := strconv.ParseBool(r.FormValue("init")); err == nil {
e.Init = init
}
var err error
rawSr := r.FormValue("signed_request")
if rawSr != "" {
e.SignedRequest, err = fbsr.Unmarshal(
[]byte(rawSr),
p.App.SecretByte(),
p.SignedRequestMaxAge,
)
if err == nil {
if e.SignedRequest.Page != nil {
e.ViewMode = PageTab
} else {
e.ViewMode = Canvas
}
}
} else {
cookie, _ := r.Cookie(fmt.Sprintf("fbsr_%d", e.appID))
if cookie != nil {
e.SignedRequest, err = fbsr.Unmarshal(
[]byte(cookie.Value),
p.App.SecretByte(),
p.SignedRequestMaxAge,
)
}
}
e.Host = p.Forwarded.Host(r)
e.Scheme = p.Forwarded.Scheme(r)
if e.SignedRequest != nil && e.SignedRequest.UserID != 0 {
e.isEmployee = p.EmpChecker.Check(e.SignedRequest.UserID)
}
e.appNamespace = p.AppNSFetcher.Get(e.appID)
if e.Env != "" && !envRegexp.MatchString(e.Env) {
e.Env = ""
}
return e, nil
}