summaryrefslogtreecommitdiff
path: root/lib/matrix_app_service/phoenix/controllers/v1/transaction_controller.ex
blob: ebee3485cf62a6678a20f74c57b6bda7a53b26de (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
defmodule MatrixAppService.Phoenix.V1.TransactionController do
  use MatrixAppService.Phoenix, :controller

  @module Application.compile_env!(:matrix_app_service, :module)

  # %{"access_token" => access_token,
  #   "events" => [
  #     %{"age" => 199,
  #       "content" => %{
  #         "body" => "test",
  #         "msgtype" => "m.room.message"},
  #       "event_id" => "$pMDN7TcsCapjLRYoITwryk0anpQGs60y2Eng3lxropc",
  #       "origin_server_ts" => 1588950428966,
  #       "room_id" => "!SrVtqmyqzuaMnfVImP:matrix.imago.local",
  #       "sender" => "@alice:matrix.imago.local",
  #       "type" => "m.room.message",
  #       "unsigned" => %{"age" => 199},
  #       "user_id" => "@alice:matrix.imago.local"}],
  #   "txn_id" => "269"}

  defp create_event(
    %{"age" => age,
      "content" => content,
      "event_id" => event_id,
      "origin_server_ts" => origin_server_ts,
      "room_id" => room_id,
      "sender" => sender,
      "type" => type,
      "unsigned" => unsigned,
      "user_id" => user_id
    }) do
      event =
        %MatrixAppService.Event{
          age: age,
          content: content,
          event_id: event_id,
          origin_server_ts: origin_server_ts,
          room_id: room_id,
          sender: sender,
          type: type,
          unsigned: unsigned,
          user_id: user_id
        }

      @module.new_event(event)
    end

  def create(conn, %{"events" => events}) do
    Enum.each(events, &create_event(&1))
    send_resp(conn, 200, "{}")
  end
end