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
requires :message, type: Map do
requires :id
requires :type
optional :text
end
end
end
post "/" do
[event|_] = params[:events]
IO.puts "ReplyToken: " <> event[:replyToken]
handle_events(params[:events])
conn |> text("OK")
end
def handle_events([]), do: {:ok}
def handle_events([event|t]) do
handle_event(event[:type], event[:replyToken], event[:message])
handle_events(t)
end
def handle_event("message", replyToken, message) do
eventHandler = Application.get_env(:line_message, :eventHandler)
eventHandler.handle_message(replyToken, message)
end
def handle_event("beacon", replyToken, message) do
eventHandler = Application.get_env(:line_message, :eventHandler)
eventHandler.handle_beacon(replyToken, message)
end
end