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