url fixer

This commit is contained in:
Nazar Kanaev 2021-03-22 22:28:15 +00:00
parent 9fa8b8440a
commit 7d61f705bf

View File

@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"io"
"net/url"
"strings"
)
@ -54,3 +55,23 @@ func Parse(r io.Reader) (*Feed, error) {
r = io.MultiReader(bytes.NewReader(chunk), r)
return callback(r)
}
func FixURLs(feed *Feed, base string) error {
baseUrl, err := url.Parse(base)
if err != nil {
return fmt.Errorf("failed to parse base url: %#v", base)
}
siteUrl, err := url.Parse(feed.SiteURL)
if err != nil {
return fmt.Errorf("failed to parse feed url: %#v", feed.SiteURL)
}
feed.SiteURL = baseUrl.ResolveReference(siteUrl).String()
for _, item := range feed.Items {
itemUrl, err := url.Parse(item.URL)
if err != nil {
return fmt.Errorf("failed to parse item url: %#v", item.URL)
}
item.URL = siteUrl.ResolveReference(itemUrl).String()
}
return nil
}