add getUserById helper in http delete old connections code from http
This commit is contained in:
@@ -23,12 +23,7 @@ func isMethodAllowed(response *http.ResponseWriter, request *http.Request) bool
|
||||
return true
|
||||
}
|
||||
|
||||
func getUser(ctx context.Context, token string) (*User, error) {
|
||||
userId, err := TokenValidateGetId(token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func getUserById(ctx context.Context, userId uint32) (*User, error) {
|
||||
user, err := CacheGetUserById(userId)
|
||||
if err != nil {
|
||||
user = &User{Id: userId}
|
||||
@@ -38,7 +33,7 @@ func getUser(ctx context.Context, token string) (*User, error) {
|
||||
if err = DbUserGetGroups(ctx, user); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = DbUserGetConnections(ctx, user); err != nil {
|
||||
if err = DbConnectionsGetBelongingToUser(ctx, user); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
CacheSaveUser(user)
|
||||
@@ -47,6 +42,14 @@ func getUser(ctx context.Context, token string) (*User, error) {
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func getUserByToken(ctx context.Context, token string) (*User, error) {
|
||||
userId, err := TokenValidateGetId(token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return getUserById(ctx, userId)
|
||||
}
|
||||
|
||||
func getGroup(ctx context.Context, groupId uint32) (*Group, error) {
|
||||
group, err := CacheGetGroup(groupId)
|
||||
if err != nil {
|
||||
@@ -70,7 +73,7 @@ func isOwner(user *User, group *Group) bool {
|
||||
}
|
||||
|
||||
func getIfOwnerUserAndGroup(ctx context.Context, response *http.ResponseWriter, request *http.Request) (*User, *Group, error) {
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(*response, "invalid token", http.StatusUnauthorized)
|
||||
return nil, nil, err
|
||||
@@ -143,6 +146,9 @@ func HttpHandleUserNew(response http.ResponseWriter, request *http.Request) {
|
||||
}
|
||||
|
||||
func HttpHandleUserDelete(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
ctx := request.Context()
|
||||
|
||||
userId, err := TokenValidateGetId(request.FormValue("token"))
|
||||
@@ -163,8 +169,12 @@ func HttpHandleUserDelete(response http.ResponseWriter, request *http.Request) {
|
||||
|
||||
// HttpHandleUserModifyAppearance currently just color
|
||||
func HttpHandleUserModifyAppearance(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
|
||||
ctx := request.Context()
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
@@ -186,8 +196,12 @@ func HttpHandleUserModifyAppearance(response http.ResponseWriter, request *http.
|
||||
|
||||
// HttpHandleUserModifyAbout currently just pronouns
|
||||
func HttpHandleUserModifyAbout(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
|
||||
ctx := request.Context()
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
@@ -209,47 +223,17 @@ func HttpHandleUserModifyAbout(response http.ResponseWriter, request *http.Reque
|
||||
}
|
||||
|
||||
func HttpHandleUserMessage(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
|
||||
ctx := request.Context()
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
targetId, err := ConvertStringUint32(request.FormValue("recipientid"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
target, err := CacheGetUserById(targetId)
|
||||
if err != nil {
|
||||
target = &User{Id: targetId}
|
||||
err = DbUserGetById(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
err = DbUserGetConnections(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if user.Connections[target.Id] == nil || !user.Connections[targetId].IsAccepted {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
message := request.FormValue("message")
|
||||
if message == "" {
|
||||
http.Error(response, "empty message", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
WsSendToUser(user, target, message)
|
||||
response.WriteHeader(http.StatusAccepted)
|
||||
}
|
||||
|
||||
func HttpHandleUserNewConnection(response http.ResponseWriter, request *http.Request) {
|
||||
@@ -258,184 +242,49 @@ func HttpHandleUserNewConnection(response http.ResponseWriter, request *http.Req
|
||||
}
|
||||
|
||||
ctx := request.Context()
|
||||
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
targetId, err := ConvertStringUint32(request.FormValue("recipientid"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if user.Id == targetId {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
target, err := CacheGetUserById(targetId)
|
||||
if err != nil {
|
||||
target = &User{Id: targetId}
|
||||
err = DbUserGetById(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
err = DbUserGetConnections(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
if user.Connections[target.Id] != nil {
|
||||
http.Error(response, "already sent/connected", http.StatusConflict)
|
||||
return
|
||||
}
|
||||
|
||||
timeNow := time.Now()
|
||||
|
||||
err = DbConnectionSave(ctx, timeNow, user.Id, targetId, false)
|
||||
if err != nil {
|
||||
http.Error(response, "internal server error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
user.Connections[target.Id] = &Connection{
|
||||
CreatedAt: timeNow,
|
||||
With: targetId,
|
||||
IsFromUser: true,
|
||||
IsAccepted: false,
|
||||
}
|
||||
if target.Connections == nil {
|
||||
target.Connections = make(map[uint32]*Connection)
|
||||
}
|
||||
target.Connections[user.Id] = &Connection{
|
||||
CreatedAt: timeNow,
|
||||
With: user.Id,
|
||||
IsFromUser: false,
|
||||
IsAccepted: false,
|
||||
}
|
||||
|
||||
response.WriteHeader(http.StatusCreated)
|
||||
}
|
||||
|
||||
func HttpHandleUserDeleteConnection(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
ctx := request.Context()
|
||||
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
targetId, err := ConvertStringUint32(request.FormValue("connectedid"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
target, err := CacheGetUserById(targetId)
|
||||
if err != nil {
|
||||
target = &User{Id: targetId}
|
||||
err = DbUserGetById(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
err = DbUserGetConnections(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
if user.Connections[targetId] == nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if user.Connections[targetId].IsFromUser {
|
||||
err = DbConnectionDelete(ctx, user.Id, targetId)
|
||||
} else {
|
||||
err = DbConnectionDelete(ctx, targetId, user.Id)
|
||||
}
|
||||
if err != nil {
|
||||
http.Error(response, "internal server error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
delete(user.Connections, targetId)
|
||||
delete(target.Connections, user.Id)
|
||||
|
||||
response.WriteHeader(http.StatusAccepted)
|
||||
}
|
||||
|
||||
func HttpHandleUserAcceptConnection(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
ctx := request.Context()
|
||||
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
targetId, err := ConvertStringUint32(request.FormValue("connectedid"))
|
||||
if err != nil || user.Connections[targetId] == nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
target, err := CacheGetUserById(targetId)
|
||||
if err != nil {
|
||||
target = &User{Id: targetId}
|
||||
err = DbUserGetById(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
err = DbUserGetConnections(ctx, target)
|
||||
if err != nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
}
|
||||
if target.Connections[user.Id] == nil {
|
||||
http.Error(response, "invalid recipient id", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if user.Connections[targetId].IsFromUser {
|
||||
http.Error(response, "cant accept own request", http.StatusConflict)
|
||||
return
|
||||
}
|
||||
|
||||
user.Connections[targetId].IsAccepted = true
|
||||
target.Connections[user.Id].IsAccepted = true
|
||||
|
||||
err = DbConnectionAccept(ctx, targetId, user.Id)
|
||||
if err != nil {
|
||||
http.Error(response, "internal server error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
response.WriteHeader(http.StatusAccepted)
|
||||
}
|
||||
|
||||
func HttpHandleUserGetConnections(response http.ResponseWriter, request *http.Request) {
|
||||
if !isMethodAllowed(&response, request) {
|
||||
return
|
||||
}
|
||||
ctx := request.Context()
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
json, err := json2.Marshal(user.Connections)
|
||||
if err != nil {
|
||||
http.Error(response, "internal server error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
response.WriteHeader(http.StatusAccepted)
|
||||
response.Write(json)
|
||||
}
|
||||
|
||||
func HttpHandleTokenNew(response http.ResponseWriter, request *http.Request) {
|
||||
@@ -505,7 +354,7 @@ func HttpHandeGroupCreate(response http.ResponseWriter, request *http.Request) {
|
||||
|
||||
ctx := request.Context()
|
||||
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
@@ -746,7 +595,7 @@ func HttpHandleGroupMessage(response http.ResponseWriter, request *http.Request)
|
||||
|
||||
ctx := request.Context()
|
||||
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusBadRequest)
|
||||
return
|
||||
@@ -791,7 +640,7 @@ func HttpHandleGroupsGetWithoutMembers(response http.ResponseWriter, request *ht
|
||||
|
||||
ctx := request.Context()
|
||||
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
@@ -822,7 +671,7 @@ func HttpHandleGroupMembersGet(response http.ResponseWriter, request *http.Reque
|
||||
}
|
||||
|
||||
ctx := request.Context()
|
||||
user, err := getUser(ctx, request.FormValue("token"))
|
||||
user, err := getUserByToken(ctx, request.FormValue("token"))
|
||||
if err != nil {
|
||||
http.Error(response, "invalid token", http.StatusUnauthorized)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user