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{}