Skip to content

Commit 569fbd2

Browse files
authored
Merge pull request #29 from antavelos/manage-rel-url
Write fix to handle relative URL
2 parents ff16c52 + a9987b6 commit 569fbd2

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

ctrl.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package main
2020
import (
2121
"fmt"
2222
"log"
23+
"net/url"
2324
"os/exec"
2425
"strings"
2526

@@ -655,8 +656,11 @@ func LoadContent(g *c.Gui, v *c.View) error {
655656
if currItem == nil {
656657
return nil
657658
}
659+
660+
site := SitesList.CurrentItem().(db.Site)
658661
event := currItem.(db.Event)
659-
CurrentContent, _ = GetContent(event.Url)
662+
663+
CurrentContent, _ = GetContent(getContentURL(site, event.Url))
660664
if err := UpdateContent(g, CurrentContent); err != nil {
661665
log.Println("Error on UpdateContent", err)
662666
return err
@@ -712,3 +716,16 @@ func Help(g *c.Gui, v *c.View) error {
712716

713717
return nil
714718
}
719+
720+
func getContentURL(site db.Site, contentUrl string) string {
721+
if !strings.HasPrefix(contentUrl, "http") {
722+
u, err := url.Parse(site.Url)
723+
if err != nil {
724+
return contentUrl // it would have failed anyway (todo: maybe log error message and display it to end user?)
725+
}
726+
727+
return fmt.Sprintf("%s://%s/%s", u.Scheme, u.Host, strings.TrimPrefix(contentUrl, "/"))
728+
}
729+
730+
return contentUrl
731+
}

ctrl_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package main
2+
3+
import (
4+
"github.com/antavelos/terminews/db"
5+
"testing"
6+
)
7+
8+
func TestGetContentURL(t *testing.T) {
9+
type test struct {
10+
site db.Site
11+
url string
12+
expected string
13+
}
14+
15+
tests := []test{
16+
{
17+
site: db.Site{Url: "https://blog.example.org/index.xml"},
18+
url: "/2021/02/a-blog-post",
19+
expected: "https://blog.example.org/2021/02/a-blog-post",
20+
},
21+
{
22+
site: db.Site{Url: "http://blog.example.org/index.xml"},
23+
url: "2021/02/a-blog-post",
24+
expected: "http://blog.example.org/2021/02/a-blog-post",
25+
},
26+
{
27+
site: db.Site{Url: "https://blog.example.org/feed.rss"},
28+
url: "https://blog.example.org/super-blog-post",
29+
expected: "https://blog.example.org/super-blog-post",
30+
},
31+
{
32+
site: db.Site{Url: "http://blog.example.org/feed.rss"},
33+
url: "http://blog.example.org/super-blog-post",
34+
expected: "http://blog.example.org/super-blog-post",
35+
},
36+
}
37+
38+
for _, test := range tests {
39+
value := getContentURL(test.site, test.url)
40+
if value != test.expected {
41+
t.Errorf("got: %s want: %s", value, test.expected)
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)