enclosure.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package api // import "miniflux.app/v2/internal/api"
  4. import (
  5. json_parser "encoding/json"
  6. "net/http"
  7. "miniflux.app/v2/internal/http/request"
  8. "miniflux.app/v2/internal/http/response/json"
  9. "miniflux.app/v2/internal/model"
  10. "miniflux.app/v2/internal/validator"
  11. )
  12. func (h *handler) getEnclosureByID(w http.ResponseWriter, r *http.Request) {
  13. enclosureID := request.RouteInt64Param(r, "enclosureID")
  14. enclosure, err := h.store.GetEnclosure(enclosureID)
  15. if err != nil {
  16. json.ServerError(w, r, err)
  17. return
  18. }
  19. if enclosure == nil {
  20. json.NotFound(w, r)
  21. return
  22. }
  23. userID := request.UserID(r)
  24. if enclosure.UserID != userID {
  25. json.NotFound(w, r)
  26. return
  27. }
  28. enclosure.ProxifyEnclosureURL(h.router)
  29. json.OK(w, r, enclosure)
  30. }
  31. func (h *handler) updateEnclosureByID(w http.ResponseWriter, r *http.Request) {
  32. enclosureID := request.RouteInt64Param(r, "enclosureID")
  33. var enclosureUpdateRequest model.EnclosureUpdateRequest
  34. if err := json_parser.NewDecoder(r.Body).Decode(&enclosureUpdateRequest); err != nil {
  35. json.BadRequest(w, r, err)
  36. return
  37. }
  38. if err := validator.ValidateEnclosureUpdateRequest(&enclosureUpdateRequest); err != nil {
  39. json.BadRequest(w, r, err)
  40. return
  41. }
  42. enclosure, err := h.store.GetEnclosure(enclosureID)
  43. if err != nil {
  44. json.ServerError(w, r, err)
  45. return
  46. }
  47. if enclosure == nil {
  48. json.NotFound(w, r)
  49. return
  50. }
  51. userID := request.UserID(r)
  52. if enclosure.UserID != userID {
  53. json.NotFound(w, r)
  54. return
  55. }
  56. enclosure.MediaProgression = enclosureUpdateRequest.MediaProgression
  57. if err := h.store.UpdateEnclosure(enclosure); err != nil {
  58. json.ServerError(w, r, err)
  59. return
  60. }
  61. json.NoContent(w, r)
  62. }