continue minIo, rename convertion methods and http methods

This commit is contained in:
2026-04-14 22:04:12 +02:00
parent 60a02b73c0
commit 53c2f71d5d
7 changed files with 76 additions and 36 deletions
+2 -2
View File
@@ -11,12 +11,12 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
) )
func ConvertStringUint32(s string) (uint32, error) { func StringToUint32(s string) (uint32, error) {
v, err := strconv.ParseUint(s, 10, 32) v, err := strconv.ParseUint(s, 10, 32)
return uint32(v), err return uint32(v), err
} }
func ConvertStringToRgba(str string) (*types.Rgba, error) { func StringToRgba(str string) (*types.Rgba, error) {
parts := strings.SplitN(str, ",", 5) parts := strings.SplitN(str, ",", 5)
if len(parts) != 4 { if len(parts) != 4 {
return nil, fmt.Errorf("invalid rgba") return nil, fmt.Errorf("invalid rgba")
@@ -20,12 +20,12 @@ import (
) )
func HandleDm(response http.ResponseWriter, request *http.Request) { func HandleDm(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
@@ -51,9 +51,9 @@ func HandleDm(response http.ResponseWriter, request *http.Request) {
var target *types.User var target *types.User
if user.Id == conn.RequestorId { if user.Id == conn.RequestorId {
target, err = GetUserById(ctx, conn.RecipientId) target, err = getUserById(ctx, conn.RecipientId)
} else if user.Id == conn.RecipientId { } else if user.Id == conn.RecipientId {
target, err = GetUserById(ctx, conn.RequestorId) target, err = getUserById(ctx, conn.RequestorId)
} else { } else {
http.Error(response, "invalid connectionid", http.StatusBadRequest) http.Error(response, "invalid connectionid", http.StatusBadRequest)
return return
@@ -86,11 +86,11 @@ func HandleDm(response http.ResponseWriter, request *http.Request) {
} }
func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http.Request) { func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
@@ -107,7 +107,7 @@ func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http
before = time.Now() before = time.Now()
} }
messagesCap, err := convertions.ConvertStringUint32(request.FormValue("messages")) messagesCap, err := convertions.StringToUint32(request.FormValue("messages"))
if err != nil { if err != nil {
messagesCap = globals.MaxDirectMsgCache messagesCap = globals.MaxDirectMsgCache
} }
@@ -162,11 +162,11 @@ func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http
} }
func HandleUserNewConnection(response http.ResponseWriter, request *http.Request) { func HandleUserNewConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
requestor, err := GetUserByToken(ctx, request.FormValue("token")) requestor, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
@@ -176,7 +176,7 @@ func HandleUserNewConnection(response http.ResponseWriter, request *http.Request
http.Error(response, "no such user", http.StatusUnauthorized) http.Error(response, "no such user", http.StatusUnauthorized)
return return
} }
recipient, err := GetUserById(ctx, recipientId) recipient, err := getUserById(ctx, recipientId)
if err != nil { if err != nil {
http.Error(response, "no such user", http.StatusUnauthorized) http.Error(response, "no such user", http.StatusUnauthorized)
return return
@@ -221,12 +221,12 @@ func HandleUserNewConnection(response http.ResponseWriter, request *http.Request
} }
func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Request) { func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
@@ -246,14 +246,14 @@ func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Requ
var user2 *types.User var user2 *types.User
if conn.RequestorId == user.Id { if conn.RequestorId == user.Id {
recipient, err := GetUserById(ctx, conn.RecipientId) recipient, err := getUserById(ctx, conn.RecipientId)
if err != nil { if err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError) http.Error(response, "internal server error", http.StatusInternalServerError)
return return
} }
user2 = recipient user2 = recipient
} else if conn.RecipientId == user.Id { } else if conn.RecipientId == user.Id {
requestor, err := GetUserById(ctx, conn.RequestorId) requestor, err := getUserById(ctx, conn.RequestorId)
if err != nil { if err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError) http.Error(response, "internal server error", http.StatusInternalServerError)
return return
@@ -280,11 +280,11 @@ func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Requ
} }
func HandleUserElevateConnection(response http.ResponseWriter, request *http.Request) { func HandleUserElevateConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
@@ -324,9 +324,9 @@ func HandleUserElevateConnection(response http.ResponseWriter, request *http.Req
var user2 *types.User var user2 *types.User
if conn.RequestorId == user.Id { if conn.RequestorId == user.Id {
user2, err = GetUserById(ctx, conn.RecipientId) user2, err = getUserById(ctx, conn.RecipientId)
} else { } else {
user2, err = GetUserById(ctx, conn.RequestorId) user2, err = getUserById(ctx, conn.RequestorId)
} }
if err != nil { if err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError) http.Error(response, "internal server error", http.StatusInternalServerError)
@@ -349,11 +349,11 @@ func HandleUserElevateConnection(response http.ResponseWriter, request *http.Req
} }
func HandleUserGetConnections(response http.ResponseWriter, request *http.Request) { func HandleUserGetConnections(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
+32
View File
@@ -0,0 +1,32 @@
package http
import (
"net/http"
"go-socket/packages/convertions"
)
func HandleFileUpload(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request, true) {
return
}
ctx := request.Context()
user, err := getUserByToken(ctx, request.Header.Get("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
}
connectionId, err := convertions.ConvertStringUuid(request.FormValue("connectionid"))
if err != nil {
http.Error(response, "invalid connectionid", http.StatusBadRequest)
return
}
_, ok := user.Connections[connectionId]
if !ok {
http.Error(response, "no such connection", http.StatusUnauthorized)
return
}
}
+3 -3
View File
@@ -11,7 +11,7 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
) )
func GetUserById(ctx context.Context, userId uuid.UUID) (*types.User, error) { func getUserById(ctx context.Context, userId uuid.UUID) (*types.User, error) {
user, err := cache.CacheGetUserById(userId) user, err := cache.CacheGetUserById(userId)
if err != nil { if err != nil {
user = &types.User{Id: userId} user = &types.User{Id: userId}
@@ -24,10 +24,10 @@ func GetUserById(ctx context.Context, userId uuid.UUID) (*types.User, error) {
return user, nil return user, nil
} }
func GetUserByToken(ctx context.Context, token string) (*types.User, error) { func getUserByToken(ctx context.Context, token string) (*types.User, error) {
userId, err := tokens.TokenValidateGetId(token) userId, err := tokens.TokenValidateGetId(token)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return GetUserById(ctx, userId) return getUserById(ctx, userId)
} }
+6 -2
View File
@@ -2,15 +2,19 @@ package http
import ( import (
"net/http" "net/http"
"go-socket/packages/globals"
) )
func postValidCheckWithResponseOnFail(response *http.ResponseWriter, request *http.Request) bool { func postValidCheckWithResponseOnFail(response *http.ResponseWriter, request *http.Request, withFile bool) bool {
if request.Method != http.MethodPost { if request.Method != http.MethodPost {
http.Error(*response, "POST only", http.StatusMethodNotAllowed) http.Error(*response, "POST only", http.StatusMethodNotAllowed)
return false return false
} }
if request.ContentLength > 8192 { if withFile && request.ContentLength > int64(globals.MaxPostWithFileBytes) ||
!withFile && request.ContentLength > int64(globals.MaxPostBytes) {
http.Error(*response, "Request too large", http.StatusRequestEntityTooLarge) http.Error(*response, "Request too large", http.StatusRequestEntityTooLarge)
return false
} }
return true return true
@@ -16,7 +16,7 @@ import (
) )
func HandleUserNewToken(response http.ResponseWriter, request *http.Request) { func HandleUserNewToken(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
@@ -75,7 +75,7 @@ func HandleUserNewToken(response http.ResponseWriter, request *http.Request) {
} }
func HandleUserNew(response http.ResponseWriter, request *http.Request) { func HandleUserNew(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
@@ -116,7 +116,7 @@ func HandleUserNew(response http.ResponseWriter, request *http.Request) {
} }
func HandleUserDelete(response http.ResponseWriter, request *http.Request) { func HandleUserDelete(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
@@ -139,18 +139,18 @@ func HandleUserDelete(response http.ResponseWriter, request *http.Request) {
// HandleUserModifyAppearance currently just color // HandleUserModifyAppearance currently just color
func HandleUserModifyAppearance(response http.ResponseWriter, request *http.Request) { func HandleUserModifyAppearance(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
} }
color, err := convertions.ConvertStringToRgba(request.FormValue("color")) color, err := convertions.StringToRgba(request.FormValue("color"))
if err != nil { if err != nil {
http.Error(response, "invalid color", http.StatusBadRequest) http.Error(response, "invalid color", http.StatusBadRequest)
return return
@@ -166,12 +166,12 @@ func HandleUserModifyAppearance(response http.ResponseWriter, request *http.Requ
// HandleUserModifyAbout currently just pronouns // HandleUserModifyAbout currently just pronouns
func HandleUserModifyAbout(response http.ResponseWriter, request *http.Request) { func HandleUserModifyAbout(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) { if !postValidCheckWithResponseOnFail(&response, request, false) {
return return
} }
ctx := request.Context() ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token")) user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil { if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized) http.Error(response, "invalid token", http.StatusUnauthorized)
return return
+5 -1
View File
@@ -8,6 +8,7 @@ import (
"go-socket/packages/globals" "go-socket/packages/globals"
"github.com/google/uuid"
"github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials" "github.com/minio/minio-go/v7/pkg/credentials"
) )
@@ -64,12 +65,15 @@ func MinInit() {
} }
func upload(ctx context.Context, key string, body io.Reader, size int64, contentType string) error { func upload(ctx context.Context, key string, body io.Reader, size int64, contentType string, uploader uuid.UUID) error {
_, err := minClient.PutObject(ctx, globals.FileStorageBucketName, key, body, size, _, err := minClient.PutObject(ctx, globals.FileStorageBucketName, key, body, size,
minio.PutObjectOptions{ minio.PutObjectOptions{
ContentType: contentType, ContentType: contentType,
PartSize: globals.FileProcessingPartSize, PartSize: globals.FileProcessingPartSize,
NumThreads: globals.FileProcessingThreads, NumThreads: globals.FileProcessingThreads,
UserMetadata: map[string]string{
"uploader": uploader.String(),
},
}) })
return err return err
} }