diff --git a/webmention.go b/webmention.go index 4a82994..c6992db 100644 --- a/webmention.go +++ b/webmention.go @@ -177,10 +177,15 @@ func (OwlHtmlParser) GetWebmentionEndpoint(resp *http.Response) (string, error) findEndpoint = func(n *html.Node) (string, error) { if n.Type == html.ElementNode && (n.Data == "link" || n.Data == "a") { for _, attr := range n.Attr { - if attr.Key == "rel" && strings.Contains(attr.Val, "webmention") { - for _, attr := range n.Attr { - if attr.Key == "href" { - return attr.Val, nil + if attr.Key == "rel" { + vals := strings.Split(attr.Val, " ") + for _, val := range vals { + if val == "webmention" { + for _, attr := range n.Attr { + if attr.Key == "href" { + return attr.Val, nil + } + } } } } diff --git a/webmention_test.go b/webmention_test.go index 682587d..a96588e 100644 --- a/webmention_test.go +++ b/webmention_test.go @@ -75,6 +75,19 @@ func TestGetWebmentionEndpointLinkA(t *testing.T) { } } +func TestGetWebmentionEndpointLinkAFakeWebmention(t *testing.T) { + html := []byte("") + parser := &owl.OwlHtmlParser{} + endpoint, err := parser.GetWebmentionEndpoint(constructResponse(html)) + + if err != nil { + t.Errorf("Unable to parse feed: %v", err) + } + if endpoint != "http://example.com/webmention" { + t.Errorf("Wrong endpoint. Expected %v, got %v", "http://example.com/webmention", endpoint) + } +} + func TestGetWebmentionEndpointLinkHeader(t *testing.T) { html := []byte("") parser := &owl.OwlHtmlParser{}