Import gofeed
This commit is contained in:
parent
5da1cf0bd5
commit
1fee75a927
5 changed files with 92 additions and 5 deletions
27
pkg/feeds/feeds.go
Normal file
27
pkg/feeds/feeds.go
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
package feeds
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/mmcdole/gofeed"
|
||||
)
|
||||
|
||||
func AddFeedToDB(feedURL string) error {
|
||||
// Cancel the request after 60 seconds if it hasn't finished
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||
defer cancel()
|
||||
|
||||
// Parse the feed
|
||||
fp := gofeed.NewParser()
|
||||
fp.UserAgent = "FeedVault/1.0 (RSS feed archive; https://feedvault.se; bot@feedvault.se; TheLovinator#9276)"
|
||||
|
||||
feed, err := fp.ParseURLWithContext(feedURL, ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error parsing feed: %s", err)
|
||||
}
|
||||
|
||||
fmt.Println(feed.Title)
|
||||
return nil
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package handlers
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/TheLovinator1/FeedVault/pkg/feeds"
|
||||
"github.com/TheLovinator1/FeedVault/pkg/html"
|
||||
"github.com/TheLovinator1/FeedVault/pkg/models"
|
||||
"github.com/TheLovinator1/FeedVault/pkg/validate"
|
||||
|
|
@ -27,7 +27,12 @@ func AddFeedHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var parseErrors []models.ParseResult
|
||||
|
||||
// Parse the form and get the URLs
|
||||
r.ParseForm()
|
||||
err := r.ParseForm()
|
||||
if err != nil {
|
||||
http.Error(w, "Error parsing form", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
urls := r.Form.Get("urls")
|
||||
if urls == "" {
|
||||
http.Error(w, "No URLs provided", http.StatusBadRequest)
|
||||
|
|
@ -44,8 +49,13 @@ func AddFeedHandler(w http.ResponseWriter, r *http.Request) {
|
|||
continue
|
||||
}
|
||||
|
||||
// "Add" the feed to the database
|
||||
log.Println("Adding feed:", feed_url)
|
||||
err = feeds.AddFeedToDB(feed_url)
|
||||
if err != nil {
|
||||
parseErrors = append(parseErrors, models.ParseResult{FeedURL: feed_url, Msg: err.Error(), IsError: true})
|
||||
continue
|
||||
}
|
||||
|
||||
// Feed was added successfully
|
||||
parseErrors = append(parseErrors, models.ParseResult{FeedURL: feed_url, Msg: "Added", IsError: false})
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue