README.md

# Webmentions

A [Webmention](https://indiewebcamp.com/Webmention) module for Elixir.

## Installation

This package is [available in Hex](https://hex.pm/packages/webmentions)

1. Add webmentions to your list of dependencies in `mix.exs`:

   ```elixir
   def deps do
     [{:webmentions, "~> 2.0.0"}]
   end
   ```

## Usage

Just call `Webmentions.send_webmentions("http://example.org/")` where
the URL is the URL of the source document:
    
    Webmentions.send_webmentions("http://example.org/", opts \\ [])

Options include:
  * `root_selector`: css class filtering the block where to look for links (default: `.h-entry`)
  * `reject_nofollow`: doesn't send webmention to links with `rel="nofollow"` attribute (default: `true`)

This will give you either

```elixir
{:ok, [%Webmentions.Response{}]}
```

where the list contains a list of response structures for each endpoint we sent a webmention to or

```elixir
{:error, reason}
```

If you already know the list of URL mentions, you can skip parsing the
source URL and send webmentions to all destinations URL (if they support it):

    destinations = ["http://example.org/", "http://other.org/"]
    Webmentions.send_webmentions_for_links("https://source.org", destinations)

It will behave as `Webmentions.send_webmentions/2` does.

## Dependencies

We need [Floki](https://github.com/philss/floki) for HTML parsing and
[Tesla](https://github.com/teamon/tesla) for HTTP communication.