func deleteLink(w http.ResponseWriter, r *twocloud.RequestBundle) { username := r.Request.URL.Query().Get(":username") user := r.AuthUser if strings.ToLower(username) != strings.ToLower(r.AuthUser.Username) { if !r.AuthUser.IsAdmin { Respond(w, r, http.StatusUnauthorized, "You don't have access to that user's links.", []interface{}{}) return } id, err := r.GetUserID(username) if err != nil { r.Log.Error(err.Error()) Respond(w, r, http.StatusInternalServerError, "Internal server error", []interface{}{}) return } user, err = r.GetUser(id) if err != nil { r.Log.Error(err.Error()) Respond(w, r, http.StatusInternalServerError, "Internal server error", []interface{}{}) return } } deviceID, err := strconv.ParseUint(r.Request.URL.Query().Get(":device"), 10, 64) if err != nil { r.Log.Error(err.Error()) Respond(w, r, http.StatusBadRequest, "Invalid device ID", []interface{}{}) return } device, err := r.GetDevice(deviceID) if err != nil { r.Log.Error(err.Error()) Respond(w, r, http.StatusInternalServerError, "Internal server error", []interface{}{}) return } if device.UserID != user.ID { Respond(w, r, http.StatusBadRequest, "That device ID does not belong to that user.", []interface{}{}) return } linkID, err := strconv.ParseUint(r.Request.URL.Query().Get(":link"), 10, 64) if err != nil { Respond(w, r, http.StatusBadRequest, "Invalid link ID", []interface{}{}) return } link, err := r.GetLink(linkID) if err != nil { Respond(w, r, http.StatusInternalServerError, "Internal server error", []interface{}{}) return } err = r.DeleteLink(link) if err != nil { Respond(w, r, http.StatusInternalServerError, "Internal server error", []interface{}{}) return } Respond(w, r, http.StatusOK, "Successfully deleted the link", []interface{}{link}) return }