Current section
Files
Jump to
Current section
Files
lib/line-message/event_handle.ex
defmodule LineMessage.EventHandle do
use Maru.Router
plug Plug.Logger
plug Plug.Parsers, parsers: [:json],
json_decoder: Poison
get "/" do
conn |> text("OK")
end
params do
requires :events, type: List do
requires :replyToken
requires :type
optional :timestamp
requires :source, type: Map do
requires :type
requires :userId
end
optional :message, type: Map do
requires :id
requires :type
optional :text
end
optional :beacon, type: Map do
requires :hwid
requires :type
end
end
end
post "/" do
handle_events(params[:events])
conn |> text("OK")
end
def handle_events([]), do: {:ok}
def handle_events([event|t]) do
case event[:type] do
"message" -> handle_message(event[:replyToken], event[:source], event[:message])
"beacon" -> handle_beacon(event[:replyToken], event[:source], event[:beacon])
end
handle_events(t)
end
def handle_message(replyToken, source, message) do
eventHandler = Application.get_env(:line_message, :eventHandler)
eventHandler.handle_message(replyToken, source, message)
end
def handle_beacon(replyToken, source, beacon) do
eventHandler = Application.get_env(:line_message, :eventHandler)
eventHandler.handle_beacon(replyToken, source, beacon)
end
end