Add API endpoint to fetch original article
This commit is contained in:
parent
50c5850f0d
commit
21bbaf2691
2 changed files with 42 additions and 0 deletions
|
@ -62,4 +62,5 @@ func Serve(router *mux.Router, store *storage.Storage, pool *worker.Pool) {
|
||||||
sr.HandleFunc("/entries", handler.setEntryStatus).Methods(http.MethodPut)
|
sr.HandleFunc("/entries", handler.setEntryStatus).Methods(http.MethodPut)
|
||||||
sr.HandleFunc("/entries/{entryID}", handler.getEntry).Methods(http.MethodGet)
|
sr.HandleFunc("/entries/{entryID}", handler.getEntry).Methods(http.MethodGet)
|
||||||
sr.HandleFunc("/entries/{entryID}/bookmark", handler.toggleBookmark).Methods(http.MethodPut)
|
sr.HandleFunc("/entries/{entryID}/bookmark", handler.toggleBookmark).Methods(http.MethodPut)
|
||||||
|
sr.HandleFunc("/entries/{entryID}/fetch-content", handler.fetchContent).Methods(http.MethodGet)
|
||||||
}
|
}
|
||||||
|
|
41
api/entry.go
41
api/entry.go
|
@ -13,6 +13,7 @@ import (
|
||||||
"miniflux.app/http/request"
|
"miniflux.app/http/request"
|
||||||
"miniflux.app/http/response/json"
|
"miniflux.app/http/response/json"
|
||||||
"miniflux.app/model"
|
"miniflux.app/model"
|
||||||
|
"miniflux.app/reader/processor"
|
||||||
"miniflux.app/storage"
|
"miniflux.app/storage"
|
||||||
"miniflux.app/validator"
|
"miniflux.app/validator"
|
||||||
)
|
)
|
||||||
|
@ -172,6 +173,46 @@ func (h *handler) toggleBookmark(w http.ResponseWriter, r *http.Request) {
|
||||||
json.NoContent(w, r)
|
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) {
|
func configureFilters(builder *storage.EntryQueryBuilder, r *http.Request) {
|
||||||
beforeEntryID := request.QueryInt64Param(r, "before_entry_id", 0)
|
beforeEntryID := request.QueryInt64Param(r, "before_entry_id", 0)
|
||||||
if beforeEntryID > 0 {
|
if beforeEntryID > 0 {
|
||||||
|
|
Loading…
Add table
Reference in a new issue