diff --git a/packages/httpRequest/attachmentFile.go b/packages/httpRequest/files.go similarity index 54% rename from packages/httpRequest/attachmentFile.go rename to packages/httpRequest/files.go index 73b1639..1d2a576 100644 --- a/packages/httpRequest/attachmentFile.go +++ b/packages/httpRequest/files.go @@ -5,6 +5,7 @@ import ( "net/http" "strings" + "go-socket/packages/convertions" "go-socket/packages/globals" "go-socket/packages/minio" ) @@ -55,6 +56,83 @@ func HandleAttachmentFileUpload(response http.ResponseWriter, request *http.Requ response.Write([]byte(key)) } +func HandleGetUserAvatar(response http.ResponseWriter, request *http.Request) { + if !postValidCheckWithResponseOnFail(&response, request, postNormal) { + return + } + ctx := request.Context() + + _, err := getUserByToken(ctx, request.Header.Get("token")) + if err != nil { + http.Error(response, "invalid token", http.StatusUnauthorized) + return + } + + targetId, err := convertions.ConvertStringUuid(request.FormValue("userid")) + if err != nil { + http.Error(response, "invalid userid", http.StatusBadRequest) + return + } + + target, err := getUserById(ctx, targetId) + if err != nil { + http.Error(response, "user not found", http.StatusNotFound) + return + } + + if target.Avatar == "" { + http.Error(response, "no avatar", http.StatusNotFound) + return + } + + url, _, err := minio.GetDownloadUrlAndMetadata(ctx, string(minio.UserAvatarPrefix)+target.Avatar) + if err != nil { + http.Error(response, "internal server error", http.StatusInternalServerError) + return + } + + response.WriteHeader(http.StatusOK) + response.Write([]byte(url.String())) +} + +func HandleGetUserProfileBg(response http.ResponseWriter, request *http.Request) { + if !postValidCheckWithResponseOnFail(&response, request, postNormal) { + return + } + ctx := request.Context() + + if _, err := getUserByToken(ctx, request.Header.Get("token")); err != nil { + http.Error(response, "invalid token", http.StatusUnauthorized) + return + } + + targetId, err := convertions.ConvertStringUuid(request.FormValue("userid")) + if err != nil { + http.Error(response, "invalid userid", http.StatusBadRequest) + return + } + + target, err := getUserById(ctx, targetId) + if err != nil { + http.Error(response, "user not found", http.StatusNotFound) + return + } + + if target.ProfileBg == "" { + http.Error(response, "no profile background", http.StatusNotFound) + return + } + + url, _, err := minio.GetDownloadUrlAndMetadata(ctx, string(minio.UserProfileBgPrefix)+target.ProfileBg) + if err != nil { + http.Error(response, "internal server error", http.StatusInternalServerError) + return + } + + response.WriteHeader(http.StatusOK) + response.Write([]byte(url.String())) +} + func HandleAttachmentFileDownload(response http.ResponseWriter, request *http.Request) { if !postValidCheckWithResponseOnFail(&response, request, postNormal) { return diff --git a/packages/httpRequest/get.go b/packages/httpRequest/get.go index 7f5f6ac..7f2cb53 100644 --- a/packages/httpRequest/get.go +++ b/packages/httpRequest/get.go @@ -2,9 +2,10 @@ package httpRequest import ( "context" - "go-socket/packages/convertions" "net/http" + "go-socket/packages/convertions" + "go-socket/packages/cache" "go-socket/packages/postgresql" "go-socket/packages/tokens" diff --git a/todo.txt b/todo.txt index ba832f9..6c7bc36 100644 --- a/todo.txt +++ b/todo.txt @@ -1,4 +1,5 @@ -more user customization (avatar, banners, desc) - add hubs + +user banners + Alan's sun \ No newline at end of file