Sending Webmentions #10
|
@ -177,7 +177,10 @@ 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") {
|
||||
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
|
||||
|
@ -186,6 +189,8 @@ func (OwlHtmlParser) GetWebmentionEndpoint(resp *http.Response) (string, error)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for c := n.FirstChild; c != nil; c = c.NextSibling {
|
||||
endpoint, err := findEndpoint(c)
|
||||
if err == nil {
|
||||
|
|
|
@ -75,6 +75,19 @@ func TestGetWebmentionEndpointLinkA(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestGetWebmentionEndpointLinkAFakeWebmention(t *testing.T) {
|
||||
html := []byte("<a rel=\"not-webmention\" href=\"http://example.com/foo\" /><a rel=\"webmention\" href=\"http://example.com/webmention\" />")
|
||||
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{}
|
||||
|
|
Loading…
Reference in New Issue