mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 21:19:19 +00:00
url fixer
This commit is contained in:
parent
9fa8b8440a
commit
7d61f705bf
@ -6,6 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -54,3 +55,23 @@ func Parse(r io.Reader) (*Feed, error) {
|
|||||||
r = io.MultiReader(bytes.NewReader(chunk), r)
|
r = io.MultiReader(bytes.NewReader(chunk), r)
|
||||||
return callback(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
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user