diff --git a/main.go b/main.go index ce3b24a..944637e 100644 --- a/main.go +++ b/main.go @@ -63,6 +63,10 @@ func (l Links) FilterByRel(r string) Links { // String returns the string representation of multiple Links // for use in HTTP responses etc func (l Links) String() string { + if l == nil { + return fmt.Sprint(nil) + } + var strs []string for _, link := range l { strs = append(strs, link.String()) @@ -74,7 +78,7 @@ func (l Links) String() string { // ; rel="foo", ; rel="bar"; wat="dis" // returning a slice of Link structs func Parse(raw string) Links { - links := make(Links, 0) + var links Links // One chunk: ; rel="foo" for _, chunk := range strings.Split(raw, ",") { @@ -110,7 +114,9 @@ func Parse(raw string) Links { } - links = append(links, link) + if link.URL != "" && link.Rel != "" { + links = append(links, link) + } } return links diff --git a/main_test.go b/main_test.go index 6c8a4a0..d9eef51 100644 --- a/main_test.go +++ b/main_test.go @@ -38,6 +38,13 @@ func TestSimple(t *testing.T) { } +func TestEmpty(t *testing.T) { + links := Parse("") + if links != nil { + t.Errorf("Return value should be nil, but was %s", len(links)) + } +} + func TestLinkMethods(t *testing.T) { header := "; rel=\"prev\"; pet=\"cat\"" links := Parse(header)