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