adds rest api connector
- routing setup with path to message_controller - messages api to database updated to function similar to a stack system (push, pop, peek, ..) - rest calls the same as database calls - setup default controller showing text message - parsing database output with Jason to client - adds curl examples
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
defmodule BumpWeb.PageController do
|
||||
defmodule BumpWeb.DefaultController do
|
||||
use BumpWeb, :controller
|
||||
|
||||
def index(conn, _params) do
|
||||
render(conn, "index.html")
|
||||
text conn, "Bump API"
|
||||
end
|
||||
end
|
37
lib/bump_web/controllers/message_controller.ex
Normal file
37
lib/bump_web/controllers/message_controller.ex
Normal file
@ -0,0 +1,37 @@
|
||||
defmodule BumpWeb.MessageController do
|
||||
use BumpWeb, :controller
|
||||
|
||||
alias Bump.Messages
|
||||
|
||||
def index(conn, _params) do
|
||||
text conn, "Bump Api"
|
||||
end
|
||||
|
||||
def list(conn, %{"sender" => sender, "minutes" => minutes}) do
|
||||
list = Messages.list(sender, String.to_integer(minutes))
|
||||
text conn, Jason.encode!(list)
|
||||
|
||||
end
|
||||
|
||||
def clear(conn, %{"sender" => sender}) do
|
||||
Messages.clear(sender)
|
||||
text conn, "OK"
|
||||
|
||||
end
|
||||
|
||||
def push(conn, %{"sender" => sender, "message" => message}) do
|
||||
Messages.push(sender, message)
|
||||
text conn, "OK"
|
||||
|
||||
end
|
||||
|
||||
def pop(conn, %{"sender" => sender}) do
|
||||
message = Messages.pop(sender)
|
||||
text conn, Jason.encode!(message)
|
||||
end
|
||||
|
||||
def peak(conn, %{"sender" => sender}) do
|
||||
message = Messages.peak(sender)
|
||||
text conn, Jason.encode!(message)
|
||||
end
|
||||
end
|
@ -1,25 +1,28 @@
|
||||
defmodule BumpWeb.Router do
|
||||
use BumpWeb, :router
|
||||
|
||||
pipeline :browser do
|
||||
plug :accepts, ["html"]
|
||||
plug :fetch_session
|
||||
plug :fetch_live_flash
|
||||
plug :put_root_layout, {BumpWeb.LayoutView, :root}
|
||||
plug :protect_from_forgery
|
||||
plug :put_secure_browser_headers
|
||||
end
|
||||
|
||||
pipeline :api do
|
||||
plug :accepts, ["json"]
|
||||
end
|
||||
|
||||
scope "/", BumpWeb do
|
||||
pipe_through :browser
|
||||
|
||||
get "/", PageController, :index
|
||||
scope "/api", BumpWeb do
|
||||
pipe_through :api
|
||||
post "/push", MessageController, :push
|
||||
post "/peak", MessageController, :peak
|
||||
post "/pop", MessageController, :pop
|
||||
post "/list", MessageController, :list
|
||||
post "/clear", MessageController, :clear
|
||||
end
|
||||
|
||||
|
||||
pipeline :browser do
|
||||
plug :accepts, ["html"]
|
||||
end
|
||||
|
||||
scope "/", BumpWeb do
|
||||
pipe_through :browser
|
||||
get "/", DefaultController, :index
|
||||
end
|
||||
# Other scopes may use custom stacks.
|
||||
# scope "/api", BumpWeb do
|
||||
# pipe_through :api
|
||||
@ -33,23 +36,5 @@ defmodule BumpWeb.Router do
|
||||
# you can use Plug.BasicAuth to set up some basic authentication
|
||||
# as long as you are also using SSL (which you should anyway).
|
||||
if Mix.env() in [:dev, :test] do
|
||||
import Phoenix.LiveDashboard.Router
|
||||
|
||||
scope "/" do
|
||||
pipe_through :browser
|
||||
live_dashboard "/dashboard", metrics: BumpWeb.Telemetry
|
||||
end
|
||||
end
|
||||
|
||||
# Enables the Swoosh mailbox preview in development.
|
||||
#
|
||||
# Note that preview only shows emails that were sent by the same
|
||||
# node running the Phoenix server.
|
||||
if Mix.env() == :dev do
|
||||
scope "/dev" do
|
||||
pipe_through :browser
|
||||
|
||||
forward "/mailbox", Plug.Swoosh.MailboxPreview
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user