payload.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright 2017 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package payload
  5. import (
  6. "encoding/json"
  7. "fmt"
  8. "io"
  9. "github.com/miniflux/miniflux2/model"
  10. )
  11. type EntriesResponse struct {
  12. Total int `json:"total"`
  13. Entries model.Entries `json:"entries"`
  14. }
  15. func DecodeUserPayload(data io.Reader) (*model.User, error) {
  16. var user model.User
  17. decoder := json.NewDecoder(data)
  18. if err := decoder.Decode(&user); err != nil {
  19. return nil, fmt.Errorf("Unable to decode user JSON object: %v", err)
  20. }
  21. return &user, nil
  22. }
  23. func DecodeURLPayload(data io.Reader) (string, error) {
  24. type payload struct {
  25. URL string `json:"url"`
  26. }
  27. var p payload
  28. decoder := json.NewDecoder(data)
  29. if err := decoder.Decode(&p); err != nil {
  30. return "", fmt.Errorf("invalid JSON payload: %v", err)
  31. }
  32. return p.URL, nil
  33. }
  34. func DecodeEntryStatusPayload(data io.Reader) ([]int64, string, error) {
  35. type payload struct {
  36. EntryIDs []int64 `json:"entry_ids"`
  37. Status string `json:"status"`
  38. }
  39. var p payload
  40. decoder := json.NewDecoder(data)
  41. if err := decoder.Decode(&p); err != nil {
  42. return nil, "", fmt.Errorf("invalid JSON payload: %v", err)
  43. }
  44. return p.EntryIDs, p.Status, nil
  45. }
  46. func DecodeFeedCreationPayload(data io.Reader) (string, int64, error) {
  47. type payload struct {
  48. FeedURL string `json:"feed_url"`
  49. CategoryID int64 `json:"category_id"`
  50. }
  51. var p payload
  52. decoder := json.NewDecoder(data)
  53. if err := decoder.Decode(&p); err != nil {
  54. return "", 0, fmt.Errorf("invalid JSON payload: %v", err)
  55. }
  56. return p.FeedURL, p.CategoryID, nil
  57. }
  58. func DecodeFeedModificationPayload(data io.Reader) (*model.Feed, error) {
  59. var feed model.Feed
  60. decoder := json.NewDecoder(data)
  61. if err := decoder.Decode(&feed); err != nil {
  62. return nil, fmt.Errorf("Unable to decode feed JSON object: %v", err)
  63. }
  64. return &feed, nil
  65. }
  66. func DecodeCategoryPayload(data io.Reader) (*model.Category, error) {
  67. var category model.Category
  68. decoder := json.NewDecoder(data)
  69. if err := decoder.Decode(&category); err != nil {
  70. return nil, fmt.Errorf("Unable to decode category JSON object: %v", err)
  71. }
  72. return &category, nil
  73. }