1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-09-15 18:57:04 +00:00

Rename internal url package to avoid overlap with net/url

This commit is contained in:
Frédéric Guillot 2023-08-13 19:09:01 -07:00
parent 9f465fd70d
commit e5d9f2f5a0
23 changed files with 74 additions and 75 deletions

View file

@ -14,7 +14,7 @@ import (
"miniflux.app/v2/internal/model"
"miniflux.app/v2/internal/reader/date"
"miniflux.app/v2/internal/reader/sanitizer"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
)
// Specs: http://web.archive.org/web/20060811235523/http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html
@ -32,13 +32,13 @@ func (a *atom03Feed) Transform(baseURL string) *model.Feed {
feed := new(model.Feed)
feedURL := a.Links.firstLinkWithRelation("self")
feed.FeedURL, err = url.AbsoluteURL(baseURL, feedURL)
feed.FeedURL, err = urllib.AbsoluteURL(baseURL, feedURL)
if err != nil {
feed.FeedURL = feedURL
}
siteURL := a.Links.originalLink()
feed.SiteURL, err = url.AbsoluteURL(baseURL, siteURL)
feed.SiteURL, err = urllib.AbsoluteURL(baseURL, siteURL)
if err != nil {
feed.SiteURL = siteURL
}
@ -50,7 +50,7 @@ func (a *atom03Feed) Transform(baseURL string) *model.Feed {
for _, entry := range a.Entries {
item := entry.Transform()
entryURL, err := url.AbsoluteURL(feed.SiteURL, item.URL)
entryURL, err := urllib.AbsoluteURL(feed.SiteURL, item.URL)
if err == nil {
item.URL = entryURL
}

View file

@ -16,7 +16,7 @@ import (
"miniflux.app/v2/internal/reader/date"
"miniflux.app/v2/internal/reader/media"
"miniflux.app/v2/internal/reader/sanitizer"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
)
// Specs:
@ -38,13 +38,13 @@ func (a *atom10Feed) Transform(baseURL string) *model.Feed {
feed := new(model.Feed)
feedURL := a.Links.firstLinkWithRelation("self")
feed.FeedURL, err = url.AbsoluteURL(baseURL, feedURL)
feed.FeedURL, err = urllib.AbsoluteURL(baseURL, feedURL)
if err != nil {
feed.FeedURL = feedURL
}
siteURL := a.Links.originalLink()
feed.SiteURL, err = url.AbsoluteURL(baseURL, siteURL)
feed.SiteURL, err = urllib.AbsoluteURL(baseURL, siteURL)
if err != nil {
feed.SiteURL = siteURL
}
@ -58,7 +58,7 @@ func (a *atom10Feed) Transform(baseURL string) *model.Feed {
for _, entry := range a.Entries {
item := entry.Transform()
entryURL, err := url.AbsoluteURL(feed.SiteURL, item.URL)
entryURL, err := urllib.AbsoluteURL(feed.SiteURL, item.URL)
if err == nil {
item.URL = entryURL
}
@ -237,7 +237,7 @@ func (r *atom10Entry) entryCategories() []string {
// We accept only HTML or XHTML documents for now since the intention is to have the same behavior as RSS.
func (a *atom10Entry) entryCommentsURL() string {
commentsURL := a.Links.firstLinkWithRelationAndType("replies", "text/html", "application/xhtml+xml")
if url.IsAbsoluteURL(commentsURL) {
if urllib.IsAbsoluteURL(commentsURL) {
return commentsURL
}
return ""

View file

@ -7,16 +7,15 @@ import (
"encoding/base64"
"fmt"
"io"
"net/url"
"strings"
stdlib_url "net/url"
"miniflux.app/v2/internal/config"
"miniflux.app/v2/internal/crypto"
"miniflux.app/v2/internal/http/client"
"miniflux.app/v2/internal/logger"
"miniflux.app/v2/internal/model"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
"github.com/PuerkitoBio/goquery"
)
@ -24,7 +23,7 @@ import (
// FindIcon try to find the website's icon.
func FindIcon(websiteURL, iconURL, userAgent string, fetchViaProxy, allowSelfSignedCertificates bool) (*model.Icon, error) {
if iconURL == "" {
rootURL := url.RootURL(websiteURL)
rootURL := urllib.RootURL(websiteURL)
logger.Debug("[FindIcon] Trying to find an icon: rootURL=%q websiteURL=%q userAgent=%q", rootURL, websiteURL, userAgent)
clt := client.NewClientWithConfig(rootURL, config.Opts)
@ -90,9 +89,9 @@ func parseDocument(websiteURL string, data io.Reader) (string, error) {
}
if iconURL == "" {
iconURL = url.RootURL(websiteURL) + "favicon.ico"
iconURL = urllib.RootURL(websiteURL) + "favicon.ico"
} else {
iconURL, _ = url.AbsoluteURL(websiteURL, iconURL)
iconURL, _ = urllib.AbsoluteURL(websiteURL, iconURL)
}
return iconURL, nil
@ -173,7 +172,7 @@ func parseImageDataURL(value string) (*model.Icon, error) {
return nil, fmt.Errorf(`icon: invalid data %q (%v)`, value, err)
}
case "":
decodedData, err := stdlib_url.QueryUnescape(data)
decodedData, err := url.QueryUnescape(data)
if err != nil {
return nil, fmt.Errorf(`icon: unable to decode data URL %q`, value)
}

View file

@ -12,7 +12,7 @@ import (
"miniflux.app/v2/internal/model"
"miniflux.app/v2/internal/reader/date"
"miniflux.app/v2/internal/reader/sanitizer"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
)
type jsonFeed struct {
@ -67,12 +67,12 @@ func (j *jsonFeed) Transform(baseURL string) *model.Feed {
feed := new(model.Feed)
feed.FeedURL, err = url.AbsoluteURL(baseURL, j.FeedURL)
feed.FeedURL, err = urllib.AbsoluteURL(baseURL, j.FeedURL)
if err != nil {
feed.FeedURL = j.FeedURL
}
feed.SiteURL, err = url.AbsoluteURL(baseURL, j.SiteURL)
feed.SiteURL, err = urllib.AbsoluteURL(baseURL, j.SiteURL)
if err != nil {
feed.SiteURL = j.SiteURL
}
@ -90,7 +90,7 @@ func (j *jsonFeed) Transform(baseURL string) *model.Feed {
for _, item := range j.Items {
entry := item.Transform()
entryURL, err := url.AbsoluteURL(feed.SiteURL, entry.URL)
entryURL, err := urllib.AbsoluteURL(feed.SiteURL, entry.URL)
if err == nil {
entry.URL = entryURL
}

View file

@ -14,7 +14,7 @@ import (
"miniflux.app/v2/internal/model"
"miniflux.app/v2/internal/reader/date"
"miniflux.app/v2/internal/reader/sanitizer"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
)
type rdfFeed struct {
@ -30,7 +30,7 @@ func (r *rdfFeed) Transform(baseURL string) *model.Feed {
feed := new(model.Feed)
feed.Title = sanitizer.StripTags(r.Title)
feed.FeedURL = baseURL
feed.SiteURL, err = url.AbsoluteURL(baseURL, r.Link)
feed.SiteURL, err = urllib.AbsoluteURL(baseURL, r.Link)
if err != nil {
feed.SiteURL = r.Link
}
@ -44,7 +44,7 @@ func (r *rdfFeed) Transform(baseURL string) *model.Feed {
if entry.URL == "" {
entry.URL = feed.SiteURL
} else {
entryURL, err := url.AbsoluteURL(feed.SiteURL, entry.URL)
entryURL, err := urllib.AbsoluteURL(feed.SiteURL, entry.URL)
if err == nil {
entry.URL = entryURL
}

View file

@ -10,7 +10,7 @@ import (
"miniflux.app/v2/internal/logger"
"miniflux.app/v2/internal/model"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
)
type rule struct {
@ -116,7 +116,7 @@ func applyRule(entryURL string, entry *model.Entry, rule rule) {
}
func getPredefinedRewriteRules(entryURL string) string {
urlDomain := url.Domain(entryURL)
urlDomain := urllib.Domain(entryURL)
for domain, rules := range predefinedRules {
if strings.Contains(urlDomain, domain) {
return rules

View file

@ -17,7 +17,7 @@ import (
"miniflux.app/v2/internal/reader/date"
"miniflux.app/v2/internal/reader/media"
"miniflux.app/v2/internal/reader/sanitizer"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
)
// Specs: https://cyber.harvard.edu/rss/rss.html
@ -42,13 +42,13 @@ func (r *rssFeed) Transform(baseURL string) *model.Feed {
feed := new(model.Feed)
siteURL := r.siteURL()
feed.SiteURL, err = url.AbsoluteURL(baseURL, siteURL)
feed.SiteURL, err = urllib.AbsoluteURL(baseURL, siteURL)
if err != nil {
feed.SiteURL = siteURL
}
feedURL := r.feedURL()
feed.FeedURL, err = url.AbsoluteURL(baseURL, feedURL)
feed.FeedURL, err = urllib.AbsoluteURL(baseURL, feedURL)
if err != nil {
feed.FeedURL = feedURL
}
@ -69,7 +69,7 @@ func (r *rssFeed) Transform(baseURL string) *model.Feed {
if entry.URL == "" {
entry.URL = feed.SiteURL
} else {
entryURL, err := url.AbsoluteURL(feed.SiteURL, entry.URL)
entryURL, err := urllib.AbsoluteURL(feed.SiteURL, entry.URL)
if err == nil {
entry.URL = entryURL
}
@ -406,7 +406,7 @@ func (r *rssItem) entryCommentsURL() string {
commentsURL := strings.TrimSpace(commentLink.Data)
// The comments URL is supposed to be absolute (some feeds publishes incorrect comments URL)
// See https://cyber.harvard.edu/rss/rss.html#ltcommentsgtSubelementOfLtitemgt
if url.IsAbsoluteURL(commentsURL) {
if urllib.IsAbsoluteURL(commentsURL) {
return commentsURL
}
}

View file

@ -12,7 +12,7 @@ import (
"strings"
"miniflux.app/v2/internal/config"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
"golang.org/x/net/html"
)
@ -141,7 +141,7 @@ func sanitizeAttributes(baseURL, tagName string, attributes []html.Attribute) ([
value = attribute.Val
isAnchorLink = true
} else {
value, err = url.AbsoluteURL(baseURL, value)
value, err = urllib.AbsoluteURL(baseURL, value)
if err != nil {
continue
}
@ -350,12 +350,12 @@ func isValidIframeSource(baseURL, src string) bool {
}
// allow iframe from same origin
if url.Domain(baseURL) == url.Domain(src) {
if urllib.Domain(baseURL) == urllib.Domain(src) {
return true
}
// allow iframe from custom invidious instance
if config.Opts != nil && config.Opts.InvidiousInstance() == url.Domain(src) {
if config.Opts != nil && config.Opts.InvidiousInstance() == urllib.Domain(src) {
return true
}
@ -467,7 +467,7 @@ func sanitizeSrcsetAttr(baseURL, value string) string {
imageCandidates := ParseSrcSetAttribute(value)
for _, imageCandidate := range imageCandidates {
absoluteURL, err := url.AbsoluteURL(baseURL, imageCandidate.ImageURL)
absoluteURL, err := urllib.AbsoluteURL(baseURL, imageCandidate.ImageURL)
if err == nil {
imageCandidate.ImageURL = absoluteURL
}

View file

@ -13,7 +13,7 @@ import (
"miniflux.app/v2/internal/http/client"
"miniflux.app/v2/internal/logger"
"miniflux.app/v2/internal/reader/readability"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
"github.com/PuerkitoBio/goquery"
)
@ -46,7 +46,7 @@ func Fetch(websiteURL, rules, userAgent string, cookie string, allowSelfSignedCe
}
// The entry URL could redirect somewhere else.
sameSite := url.Domain(websiteURL) == url.Domain(response.EffectiveURL)
sameSite := urllib.Domain(websiteURL) == urllib.Domain(response.EffectiveURL)
websiteURL = response.EffectiveURL
if rules == "" {
@ -87,7 +87,7 @@ func scrapContent(page io.Reader, rules string) (string, error) {
}
func getPredefinedScraperRules(websiteURL string) string {
urlDomain := url.Domain(websiteURL)
urlDomain := urllib.Domain(websiteURL)
for domain, rules := range predefinedRules {
if strings.Contains(urlDomain, domain) {

View file

@ -14,7 +14,7 @@ import (
"miniflux.app/v2/internal/http/client"
"miniflux.app/v2/internal/reader/browser"
"miniflux.app/v2/internal/reader/parser"
"miniflux.app/v2/internal/url"
"miniflux.app/v2/internal/urllib"
"github.com/PuerkitoBio/goquery"
)
@ -90,7 +90,7 @@ func parseWebPage(websiteURL string, data io.Reader) (Subscriptions, *errors.Loc
if feedURL, exists := s.Attr("href"); exists {
if feedURL != "" {
subscription.URL, _ = url.AbsoluteURL(websiteURL, feedURL)
subscription.URL, _ = urllib.AbsoluteURL(websiteURL, feedURL)
}
}
@ -149,20 +149,20 @@ func tryWellKnownUrls(websiteURL, userAgent, cookie, username, password string)
"rss/": "rss",
}
websiteURLRoot := url.RootURL(websiteURL)
websiteURLRoot := urllib.RootURL(websiteURL)
baseURLs := []string{
// Look for knownURLs in the root.
websiteURLRoot,
}
// Look for knownURLs in current subdirectory, such as 'example.com/blog/'.
websiteURL, _ = url.AbsoluteURL(websiteURL, "./")
websiteURL, _ = urllib.AbsoluteURL(websiteURL, "./")
if websiteURL != websiteURLRoot {
baseURLs = append(baseURLs, websiteURL)
}
for _, baseURL := range baseURLs {
for knownURL, kind := range knownURLs {
fullURL, err := url.AbsoluteURL(baseURL, knownURL)
fullURL, err := urllib.AbsoluteURL(baseURL, knownURL)
if err != nil {
continue
}