in images/controller/cmd/reservation_broker/reservation_broker.go [396:427]
func registerAppHandler(s *Server, app broker.AppConfigSpec, appCtx *AppContext) {
// Register app route handler function
appName := app.Name
cookieName := fmt.Sprintf("broker_%s", appName)
s.Urls[app.Name] = func(w http.ResponseWriter, r *http.Request) {
// Get user from cookie or header
user := broker.GetUserFromCookieOrAuthHeader(r, cookieName, appCtx.AuthHeaderName)
if len(user) == 0 {
writeResponse(w, http.StatusBadRequest, fmt.Sprintf("Failed to get user from cookie or auth header"))
return
}
// IAP uses a prefix of accounts.google.com:email, remove this to just get the email
userToks := strings.Split(user, ":")
user = userToks[len(userToks)-1]
username := broker.GetUsernameFromHeaderOrDefault(r, appCtx.UsernameHeader, user)
// Handle each verb
switch r.Method {
case "POST":
status, msg := createApp(app, appCtx, user, username)
writeResponse(w, status, msg)
case "DELETE":
status, msg := deleteApp(app, appCtx, user, username)
writeResponse(w, status, msg)
case "GET":
status, msg := getAppStatus(w, app, appCtx, user, username)
writeResponse(w, status, msg)
}
}
}