Skip to main content

lib/ex_line.ex

defmodule ExLine do
  @moduledoc """
  An Elixir client for the [LINE](https://developers.line.biz/) platform.

  `ExLine` wraps the LINE **Messaging API** (with LIFF / LINE Login planned). It is
  built around a few small ideas:

    * **Credentials are values.** Build an `ExLine.Client` and pass it per call;
      there is no global state, so multi-channel / multi-tenant apps are first-class.
    * **HTTP is swappable.** Calls go through `ExLine.Client.Adapter`, so tests can
      mock the network.
    * **Webhooks verify and route.** `ExLine.Webhook.Signature` / `ExLine.Webhook.Plug`
      verify the `x-line-signature`; `ExLine.EventRouter` dispatches events.

  ## Quick start

      client = ExLine.Client.new(access_token: "CHANNEL_ACCESS_TOKEN")
      ExLine.Api.Messaging.push(client, "U123...", ExLine.Message.text("hello"))

  See `ExLine.Api.Messaging`, `ExLine.Message`, `ExLine.Webhook.Signature`, and
  `ExLine.EventRouter`.
  """
end