FEAT: Initial Upload Page

This commit is contained in:
fahd
2026-08-12 19:03:02 +03:00
parent 7754051e9c
commit dc2d1c6e33
14 changed files with 1005 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
package services
import (
"context"
"time"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
var S3Client S3
type S3 interface {
GetPresignedURL(ctx context.Context, key, contentType string, expiry time.Duration) (string, error)
DoesFileExist(ctx context.Context, key string) (bool, error)
}
type S3Concrete struct {
S3Client *s3.Client
Bucket string
}
func (svc S3Concrete) GetPresignedURL(ctx context.Context, key, contentType string, expiry time.Duration) (string, error) {
presignClient := s3.NewPresignClient(svc.S3Client)
request, err := presignClient.PresignPutObject(ctx, &s3.PutObjectInput{
Bucket: &svc.Bucket,
Key: &key,
ContentType: &contentType,
}, s3.WithPresignExpires(expiry))
if err != nil {
return "", err
}
return request.URL, nil
}
func (svc S3Concrete) DoesFileExist(ctx context.Context, key string) (bool, error) {
_, error := svc.S3Client.HeadObject(ctx, &s3.HeadObjectInput{
Bucket: &svc.Bucket,
Key: &key,
})
if error != nil {
return false, error
}
return true, nil
}