mirror of
				https://github.com/nkanaev/yarr.git
				synced 2025-10-30 06:31:07 +00:00 
			
		
		
		
	url fixer
This commit is contained in:
		| @@ -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 | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user