summaryrefslogblamecommitdiff
path: root/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex
blob: d2062bf2658c9a8aacba3fee9d73cf7ef03acd32 (plain) (tree)
1
2
3
4
5
6
7
8
                                                         


                              
                                      

                              
 



                                                                                              




                                                                    







                                                     
 


                              
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