func registerAppHandler()

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)
		}
	}
}