aboutsummaryrefslogtreecommitdiff
path: root/api/entry.go
diff options
context:
space:
mode:
authorGravatar Pascal Noisette <netpascal0123@aol.com> 2022-01-27 05:29:37 +0100
committerGravatar GitHub <noreply@github.com> 2022-01-26 20:29:37 -0800
commit21bbaf26918db00bed6f37176ac3ce77febc5dd1 (patch)
tree721e2d1a4777587a70b8f38de3021f3b0e45bd53 /api/entry.go
parent50c5850f0da9640817a65b25a45360f3ad31a466 (diff)
downloadv2-21bbaf26918db00bed6f37176ac3ce77febc5dd1.tar.gz
v2-21bbaf26918db00bed6f37176ac3ce77febc5dd1.tar.zst
v2-21bbaf26918db00bed6f37176ac3ce77febc5dd1.zip
Add API endpoint to fetch original article
Diffstat (limited to 'api/entry.go')
-rw-r--r--api/entry.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/api/entry.go b/api/entry.go
index 55542584..2cff47c2 100644
--- a/api/entry.go
+++ b/api/entry.go
@@ -13,6 +13,7 @@ import (
"miniflux.app/http/request"
"miniflux.app/http/response/json"
"miniflux.app/model"
+ "miniflux.app/reader/processor"
"miniflux.app/storage"
"miniflux.app/validator"
)
@@ -172,6 +173,46 @@ func (h *handler) toggleBookmark(w http.ResponseWriter, r *http.Request) {
json.NoContent(w, r)
}
+func (h *handler) fetchContent(w http.ResponseWriter, r *http.Request) {
+ loggedUserID := request.UserID(r)
+ entryID := request.RouteInt64Param(r, "entryID")
+
+ entryBuilder := h.store.NewEntryQueryBuilder(loggedUserID)
+ entryBuilder.WithEntryID(entryID)
+ entryBuilder.WithoutStatus(model.EntryStatusRemoved)
+
+ entry, err := entryBuilder.GetEntry()
+ if err != nil {
+ json.ServerError(w, r, err)
+ return
+ }
+
+ if entry == nil {
+ json.NotFound(w, r)
+ return
+ }
+
+ feedBuilder := storage.NewFeedQueryBuilder(h.store, loggedUserID)
+ feedBuilder.WithFeedID(entry.FeedID)
+ feed, err := feedBuilder.GetFeed()
+ if err != nil {
+ json.ServerError(w, r, err)
+ return
+ }
+
+ if feed == nil {
+ json.NotFound(w, r)
+ return
+ }
+
+ if err := processor.ProcessEntryWebPage(feed, entry); err != nil {
+ json.ServerError(w, r, err)
+ return
+ }
+
+ json.OK(w, r, map[string]string{"content": entry.Content})
+}
+
func configureFilters(builder *storage.EntryQueryBuilder, r *http.Request) {
beforeEntryID := request.QueryInt64Param(r, "before_entry_id", 0)
if beforeEntryID > 0 {