FIX: Checked If File Exists Before Submitting Queue Job
This commit is contained in:
@@ -10,7 +10,6 @@ import (
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
"thamanyah/cms/v2/internal/api"
|
||||
"thamanyah/cms/v2/internal/db/repositories"
|
||||
@@ -21,7 +20,7 @@ import (
|
||||
|
||||
const (
|
||||
videoUploadPrefix = "videos"
|
||||
uploadURLExpiry = 15 * time.Minute
|
||||
uploadURLExpiry = 60 * time.Minute
|
||||
maxJSONBodySize = 1 << 20 // 1 MiB
|
||||
)
|
||||
|
||||
@@ -92,7 +91,7 @@ func PresignVideoUpload(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
key := videoUploadPrefix + "/" + filename
|
||||
|
||||
presignedURL, err := services.S3Client.GetPresignedURL(r.Context(), key, req.ContentType, time.Hour)
|
||||
presignedURL, err := services.S3Client.GetPresignedURL(r.Context(), key, req.ContentType, uploadURLExpiry)
|
||||
if err != nil {
|
||||
writeProblem(w, http.StatusInternalServerError, "Could not prepare upload.",
|
||||
"A presigned upload URL could not be issued for the storage bucket. This is a server-side fault; no upload slot was reserved, so retry the request.")
|
||||
@@ -145,6 +144,13 @@ func CompleteVideoUpload(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
exists := services.S3Client.DoesFileExist(r.Context(), key)
|
||||
if exists {
|
||||
writeProblem(w, http.StatusUnprocessableEntity, "Failed to find video in storage",
|
||||
"The video file that was supposed to be uploaded via the url sent in the PresignVideoUpload endpoint was not uploaded before calling this endpoint")
|
||||
return
|
||||
}
|
||||
|
||||
err := validateCatagoryIDS(r.Context(), req.CategoryIDs)
|
||||
if err != nil {
|
||||
log.Printf("Something Went Wrong Loading Categories: %s", err)
|
||||
@@ -210,17 +216,6 @@ func validateCatagoryIDS(ctx context.Context, submitted []int16) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func formatCategoryIDs(ids []int16) string {
|
||||
formatted := make([]string, 0, len(ids))
|
||||
for _, id := range ids {
|
||||
formatted = append(formatted, strconv.Itoa(int(id)))
|
||||
}
|
||||
if len(formatted) == 1 {
|
||||
return "id " + formatted[0]
|
||||
}
|
||||
return "ids " + strings.Join(formatted, ", ")
|
||||
}
|
||||
|
||||
func randomFilename(original string) (string, error) {
|
||||
ext := filepath.Ext(filepath.Base(original))
|
||||
buf := make([]byte, 16)
|
||||
|
||||
Reference in New Issue
Block a user