summaryrefslogtreecommitdiff
path: root/internal/api/handlers_media.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/handlers_media.go')
-rw-r--r--internal/api/handlers_media.go53
1 files changed, 51 insertions, 2 deletions
diff --git a/internal/api/handlers_media.go b/internal/api/handlers_media.go
index 1469342..3863ab0 100644
--- a/internal/api/handlers_media.go
+++ b/internal/api/handlers_media.go
@@ -30,7 +30,7 @@ func (s *Server) handleListSets(w http.ResponseWriter, r *http.Request) {
writeJSON(w, http.StatusOK, sets)
}
-func (s *Server) handleSetCover(w http.ResponseWriter, r *http.Request) {
+func (s *Server) handleGetSetCover(w http.ResponseWriter, r *http.Request) {
if !requireService(w, s.mediaSvc) {
return
}
@@ -39,7 +39,34 @@ func (s *Server) handleSetCover(w http.ResponseWriter, r *http.Request) {
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid set id"})
return
}
- if err := s.mediaSvc.RegenerateSetCover(r.Context(), setID, userIDFromContext(r)); err != nil {
+ folder := r.URL.Query().Get("folder")
+ fr, err := s.mediaSvc.GetSetCover(r.Context(), setID, folder, userIDFromContext(r))
+ if err != nil {
+ if errors.Is(err, service.ErrNotFound) {
+ writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"})
+ return
+ }
+ if errors.Is(err, service.ErrForbidden) {
+ writeJSON(w, http.StatusForbidden, map[string]string{"error": "forbidden"})
+ return
+ }
+ writeJSON(w, http.StatusInternalServerError, map[string]string{"error": err.Error()})
+ return
+ }
+ http.ServeFile(w, r, fr.Path)
+}
+
+func (s *Server) handlePostSetCover(w http.ResponseWriter, r *http.Request) {
+ if !requireService(w, s.mediaSvc) {
+ return
+ }
+ setID := pathID(r, "id")
+ if setID == 0 {
+ writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid set id"})
+ return
+ }
+ folder := r.URL.Query().Get("folder")
+ if err := s.mediaSvc.RegenerateSetCover(r.Context(), setID, folder, userIDFromContext(r)); err != nil {
if errors.Is(err, service.ErrNotFound) {
writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"})
return
@@ -54,6 +81,28 @@ func (s *Server) handleSetCover(w http.ResponseWriter, r *http.Request) {
writeJSON(w, http.StatusOK, map[string]string{"status": "ok"})
}
+func (s *Server) handleBrowseSet(w http.ResponseWriter, r *http.Request) {
+ if !requireService(w, s.mediaSvc) {
+ return
+ }
+ setID := pathID(r, "id")
+ if setID == 0 {
+ writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid set id"})
+ return
+ }
+ parent := r.URL.Query().Get("parent")
+ result, err := s.mediaSvc.BrowseSet(r.Context(), setID, userIDFromContext(r), parent)
+ if err != nil {
+ if errors.Is(err, service.ErrForbidden) {
+ writeJSON(w, http.StatusForbidden, map[string]string{"error": "forbidden"})
+ return
+ }
+ writeJSON(w, http.StatusInternalServerError, map[string]string{"error": err.Error()})
+ return
+ }
+ writeJSON(w, http.StatusOK, result)
+}
+
func (s *Server) handleUpload(w http.ResponseWriter, r *http.Request) {
if !requireService(w, s.mediaSvc) {
return