feat: add endpoints for presigned upload URLs (GET /upload/avatar, GET /upload/image); refactor: replace ProfileDto with NewProfileDto in update profile endpoint; feat: implement S3 integration for avatar management; fix: update database queries to handle new avatar upload flow; chore: add new dependencies for S3 handling (golang.org/x/time); refactor: rename UploadService to S3Service; refactor: change return type for func LocalizeS3Url(originalURL string) (*url.URL, error); feat: add custom validator for upload_id
47 lines
1.8 KiB
Go
47 lines
1.8 KiB
Go
// Copyright (c) 2025 Nikolai Papin
|
|
//
|
|
// This file is part of Easywish
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
// the GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
package dto
|
|
|
|
type ProfileDto struct {
|
|
Name string `json:"name"`
|
|
Bio string `json:"bio"`
|
|
AvatarUrl *string `json:"avatar_url"`
|
|
Birthday int64 `json:"birthday"`
|
|
Color string `json:"color"`
|
|
ColorGrad string `json:"color_grad"`
|
|
}
|
|
|
|
type NewProfileDto struct {
|
|
Name string `json:"name" binding:"required" validate:"name"`
|
|
Bio string `json:"bio" validate:"bio"`
|
|
AvatarUploadID *string `json:"avatar_upload_id" validate:"upload_id=avatars"`
|
|
Birthday int64 `json:"birthday"`
|
|
Color string `json:"color" validate:"color_hex"`
|
|
ColorGrad string `json:"color_grad" validate:"color_hex"`
|
|
}
|
|
|
|
type ProfileSettingsDto struct {
|
|
HideFulfilled bool `json:"hide_fulfilled"`
|
|
HideProfileDetails bool `json:"hide_profile_details"`
|
|
HideForUnauthenticated bool `json:"hide_for_unauthenticated"`
|
|
HideBirthday bool `json:"hide_birthday"`
|
|
HideDates bool `json:"hide_dates"`
|
|
Captcha bool `json:"captcha"`
|
|
FollowersOnlyInteraction bool `json:"followers_only_interaction"`
|
|
}
|