Webmentions

A Webmention module for Elixir.

Installation

This package is available in Hex

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

    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:

This will give you either

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

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

{: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.

Configuration

The HTTP timeout (in milliseconds) for all outgoing requests can be configured via the application environment:

config :webmentions, timeout: 30_000

Default is 5_000 (5 seconds). The value is read at compile time, so changes require recompiling the :webmentions dependency (mix deps.compile webmentions --force).

Dependencies

We need Floki for HTML parsing and Tesla for HTTP communication.