Fix to return nil if parse empty string

This commit is contained in:
178inaba 2017-05-04 16:38:13 +09:00
parent 236df730ed
commit 0d46e1b419
2 changed files with 15 additions and 2 deletions

10
main.go
View File

@ -63,6 +63,10 @@ func (l Links) FilterByRel(r string) Links {
// String returns the string representation of multiple Links // String returns the string representation of multiple Links
// for use in HTTP responses etc // for use in HTTP responses etc
func (l Links) String() string { func (l Links) String() string {
if l == nil {
return fmt.Sprint(nil)
}
var strs []string var strs []string
for _, link := range l { for _, link := range l {
strs = append(strs, link.String()) strs = append(strs, link.String())
@ -74,7 +78,7 @@ func (l Links) String() string {
// <url>; rel="foo", <url>; rel="bar"; wat="dis" // <url>; rel="foo", <url>; rel="bar"; wat="dis"
// returning a slice of Link structs // returning a slice of Link structs
func Parse(raw string) Links { func Parse(raw string) Links {
links := make(Links, 0) var links Links
// One chunk: <url>; rel="foo" // One chunk: <url>; rel="foo"
for _, chunk := range strings.Split(raw, ",") { 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 return links

View File

@ -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) { func TestLinkMethods(t *testing.T) {
header := "<https://api.github.com/user/9287/repos?page=1&per_page=100>; rel=\"prev\"; pet=\"cat\"" header := "<https://api.github.com/user/9287/repos?page=1&per_page=100>; rel=\"prev\"; pet=\"cat\""
links := Parse(header) links := Parse(header)