// StandingsHandler returns a web handler function that provides information on // the user's toons' effective standings. func StandingsHandler(localdb db.LocalDB, sess server.Sessionizer) web.HandlerFunc { standingsFunc := func(c web.C, w http.ResponseWriter, r *http.Request) { s := sess.GetSession(&c, w, r) userID := s.User charID, _ := strconv.Atoi(c.URLParams["charID"]) npcCorpID, _ := strconv.Atoi(c.URLParams["npcCorpID"]) corpStanding, facStanding, err := localdb.CharacterStandings(userID, charID, npcCorpID) if err != nil { errorStr := "Unable to get character standings." if err == sql.ErrNoRows { errorStr = "Invalid corporation ID passed." } http.Error(w, fmt.Sprintf(`{"status": "Error", "error": "%v"}`, errorStr), http.StatusInternalServerError) return } connections, err := localdb.CharacterSkill(userID, charID, connectionsSkillID) if err != nil { http.Error(w, `{"status": "Error", "error": "Ouch"}`, http.StatusInternalServerError) return } diplomacy, err := localdb.CharacterSkill(userID, charID, diplomacySkillID) if err != nil { http.Error(w, `{"status": "Error", "error": "Ouch"}`, http.StatusInternalServerError) return } effectiveStanding := character.EffectiveStanding(corpStanding, facStanding, connections, diplomacy) statusMsg := struct { Status string `json:"status"` EffectiveStanding float64 `json:"standing"` }{ "OK", effectiveStanding, } statusJSON, _ := json.Marshal(&statusMsg) w.Write(statusJSON) return } return standingsFunc }