parser.go 988 B

12345678910111213141516171819202122232425262728293031
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package parser // import "miniflux.app/v2/internal/reader/parser"
  4. import (
  5. "strings"
  6. "miniflux.app/v2/internal/errors"
  7. "miniflux.app/v2/internal/model"
  8. "miniflux.app/v2/internal/reader/atom"
  9. "miniflux.app/v2/internal/reader/json"
  10. "miniflux.app/v2/internal/reader/rdf"
  11. "miniflux.app/v2/internal/reader/rss"
  12. )
  13. // ParseFeed analyzes the input data and returns a normalized feed object.
  14. func ParseFeed(baseURL, data string) (*model.Feed, *errors.LocalizedError) {
  15. switch DetectFeedFormat(data) {
  16. case FormatAtom:
  17. return atom.Parse(baseURL, strings.NewReader(data))
  18. case FormatRSS:
  19. return rss.Parse(baseURL, strings.NewReader(data))
  20. case FormatJSON:
  21. return json.Parse(baseURL, strings.NewReader(data))
  22. case FormatRDF:
  23. return rdf.Parse(baseURL, strings.NewReader(data))
  24. default:
  25. return nil, errors.NewLocalizedError("Unsupported feed format")
  26. }
  27. }