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"
)
func ConvertStringUint32(s string) (uint32, error) {
func StringToUint32(s string) (uint32, error) {
v, err := strconv.ParseUint(s, 10, 32)
return uint32(v), err
}
func ConvertStringToRgba(str string) (*types.Rgba, error) {
func StringToRgba(str string) (*types.Rgba, error) {
parts := strings.SplitN(str, ",", 5)
if len(parts) != 4 {
return nil, fmt.Errorf("invalid rgba")
@@ -20,12 +20,12 @@ import (
)
func HandleDm(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
@@ -51,9 +51,9 @@ func HandleDm(response http.ResponseWriter, request *http.Request) {
var target *types.User
if user.Id == conn.RequestorId {
target, err = GetUserById(ctx, conn.RecipientId)
target, err = getUserById(ctx, conn.RecipientId)
} else if user.Id == conn.RecipientId {
target, err = GetUserById(ctx, conn.RequestorId)
target, err = getUserById(ctx, conn.RequestorId)
} else {
http.Error(response, "invalid connectionid", http.StatusBadRequest)
return
@@ -86,11 +86,11 @@ func HandleDm(response http.ResponseWriter, request *http.Request) {
}
func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
@@ -107,7 +107,7 @@ func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http
before = time.Now()
}
messagesCap, err := convertions.ConvertStringUint32(request.FormValue("messages"))
messagesCap, err := convertions.StringToUint32(request.FormValue("messages"))
if err != nil {
messagesCap = globals.MaxDirectMsgCache
}
@@ -162,11 +162,11 @@ func HandleUserGetConnectionMessages(response http.ResponseWriter, request *http
}
func HandleUserNewConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
requestor, err := GetUserByToken(ctx, request.FormValue("token"))
requestor, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
@@ -176,7 +176,7 @@ func HandleUserNewConnection(response http.ResponseWriter, request *http.Request
http.Error(response, "no such user", http.StatusUnauthorized)
return
}
recipient, err := GetUserById(ctx, recipientId)
recipient, err := getUserById(ctx, recipientId)
if err != nil {
http.Error(response, "no such user", http.StatusUnauthorized)
return
@@ -221,12 +221,12 @@ func HandleUserNewConnection(response http.ResponseWriter, request *http.Request
}
func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
@@ -246,14 +246,14 @@ func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Requ
var user2 *types.User
if conn.RequestorId == user.Id {
recipient, err := GetUserById(ctx, conn.RecipientId)
recipient, err := getUserById(ctx, conn.RecipientId)
if err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError)
return
}
user2 = recipient
} else if conn.RecipientId == user.Id {
requestor, err := GetUserById(ctx, conn.RequestorId)
requestor, err := getUserById(ctx, conn.RequestorId)
if err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError)
return
@@ -280,11 +280,11 @@ func HandleUserDeleteConnection(response http.ResponseWriter, request *http.Requ
}
func HandleUserElevateConnection(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
@@ -324,9 +324,9 @@ func HandleUserElevateConnection(response http.ResponseWriter, request *http.Req
var user2 *types.User
if conn.RequestorId == user.Id {
user2, err = GetUserById(ctx, conn.RecipientId)
user2, err = getUserById(ctx, conn.RecipientId)
} else {
user2, err = GetUserById(ctx, conn.RequestorId)
user2, err = getUserById(ctx, conn.RequestorId)
}
if err != nil {
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) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
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"
)
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)
if err != nil {
user = &types.User{Id: userId}
@@ -24,10 +24,10 @@ func GetUserById(ctx context.Context, userId uuid.UUID) (*types.User, error) {
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)
if err != nil {
return nil, err
}
return GetUserById(ctx, userId)
return getUserById(ctx, userId)
}
+6 -2
View File
@@ -2,15 +2,19 @@ package http
import (
"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 {
http.Error(*response, "POST only", http.StatusMethodNotAllowed)
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)
return false
}
return true
@@ -16,7 +16,7 @@ import (
)
func HandleUserNewToken(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
@@ -75,7 +75,7 @@ func HandleUserNewToken(response http.ResponseWriter, request *http.Request) {
}
func HandleUserNew(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
@@ -116,7 +116,7 @@ func HandleUserNew(response http.ResponseWriter, request *http.Request) {
}
func HandleUserDelete(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
@@ -139,18 +139,18 @@ func HandleUserDelete(response http.ResponseWriter, request *http.Request) {
// HandleUserModifyAppearance currently just color
func HandleUserModifyAppearance(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
}
color, err := convertions.ConvertStringToRgba(request.FormValue("color"))
color, err := convertions.StringToRgba(request.FormValue("color"))
if err != nil {
http.Error(response, "invalid color", http.StatusBadRequest)
return
@@ -166,12 +166,12 @@ func HandleUserModifyAppearance(response http.ResponseWriter, request *http.Requ
// HandleUserModifyAbout currently just pronouns
func HandleUserModifyAbout(response http.ResponseWriter, request *http.Request) {
if !postValidCheckWithResponseOnFail(&response, request) {
if !postValidCheckWithResponseOnFail(&response, request, false) {
return
}
ctx := request.Context()
user, err := GetUserByToken(ctx, request.FormValue("token"))
user, err := getUserByToken(ctx, request.FormValue("token"))
if err != nil {
http.Error(response, "invalid token", http.StatusUnauthorized)
return
+5 -1
View File
@@ -8,6 +8,7 @@ import (
"go-socket/packages/globals"
"github.com/google/uuid"
"github.com/minio/minio-go/v7"
"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,
minio.PutObjectOptions{
ContentType: contentType,
PartSize: globals.FileProcessingPartSize,
NumThreads: globals.FileProcessingThreads,
UserMetadata: map[string]string{
"uploader": uploader.String(),
},
})
return err
}