typo + /account/removefriend

This commit is contained in:
gamray 2024-05-18 12:38:31 +02:00
parent 7990f0978a
commit a538c8415d
3 changed files with 49 additions and 1 deletions

View File

@ -43,6 +43,7 @@ func Init(mux *http.ServeMux) error {
mux.HandleFunc("POST /account/changepw", handleAccountChangePW)
mux.HandleFunc("GET /account/logout", handleAccountLogout)
mux.HandleFunc("POST /account/addfriend", handleAddFriend)
mux.HandleFunc("POST /account/removefriend", handleRemoveFriend)
// game
mux.HandleFunc("GET /game/titlestats", handleGameTitleStats)

View File

@ -159,6 +159,33 @@ func handleAddFriend(w http.ResponseWriter, r *http.Request) {
jsonResponse(w, r, response)
}
func handleRemoveFriend(w http.ResponseWriter, r *http.Request) {
formErr := r.ParseForm()
if formErr != nil {
httpError(w, r, fmt.Errorf("failed to parse request form: %s", formErr), http.StatusBadRequest)
return
}
uuid, err := uuidFromRequest(r)
if err != nil {
httpError(w, r, err, http.StatusBadRequest)
return
}
success, err := db.RemoveFriend(uuid, r.Form.Get("username"))
message := "Success"
if !success {
message = err.Error()
}
response := defs.GenericResponse{
Success: success,
Message: message,
}
jsonResponse(w, r, response)
}
// game
func handleGameTitleStats(w http.ResponseWriter, r *http.Request) {
stats := defs.TitleStats{

View File

@ -285,7 +285,7 @@ func AddFriend(uuid []byte, friendUsername string) (bool, error) {
var doesUserExist int
err = handle.QueryRow("SELECT COUNT(*) FROM accounts WHERE username = ?", friendUsername).Scan(&doesUserExist)
if err != nil {
return false, fmt.Errorf("An error occured, if this persist, please contact an administrators.")
return false, fmt.Errorf("An error occured, if this persist, please contact an administrator.")
}
if doesUserExist == 0 {
@ -298,6 +298,26 @@ func AddFriend(uuid []byte, friendUsername string) (bool, error) {
}
_, err = handle.Exec("INSERT INTO friends (user, friend, since) VALUES (?, ?, UTC_TIMESTAMP())", username, friendUsername)
if err != nil {
return false, fmt.Errorf("An error occured, if this persist, please contact an administrator.")
}
return true, nil
}
func RemoveFriend(uuid []byte, friendUsername string) (bool, error) {
// We are making db errors more generic as error is used in the response data to the client.
username, err := FetchUsernameFromUUID(uuid);
if err != nil {
return false, fmt.Errorf("An error occured, are you connected ?")
}
alreadyFriends, _ := isFriendWith(username, friendUsername)
if !alreadyFriends {
return false, fmt.Errorf("You are not friend with this user")
}
_, err = handle.Exec("DELETE FROM friends WHERE user = ? AND friend = ?", username, friendUsername)
if err != nil {
return false, err
}