summaryrefslogtreecommitdiff
path: root/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex
blob: d2062bf2658c9a8aacba3fee9d73cf7ef03acd32 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
defmodule MatrixAppServiceWeb.V1.TransactionController do
  @moduledoc """
  Controller for transactions.
  """
  use MatrixAppServiceWeb, :controller
  alias MatrixAppService.Event
  require Logger

  @doc """
  https://matrix.org/docs/spec/application_service/r0.1.2#put-matrix-app-v1-transactions-txnid
  """
  def push(conn, %{"events" => events}) do
    adapter =
      conn.private[:transaction_adapter] ||
        MatrixAppServiceWeb.Endpoint.config(:transaction_adapter) ||
        raise "MatrixAppService: config key room_adapter missing"

    # Enum.each(events, &create_event(&1, adapter))
    Enum.each(events, fn event_params ->
      with {:ok, event} <- Event.new(event_params) do
        adapter.new_event(event)
      else
        error -> Logger.error(inspect(error))
      end
    end)

    send_resp(conn, 200, "{}")
  end
end