Maru v0.9.5 Maru.Helper

Define helper for maru router.

Shared Params

Defined shared params with Maru.Helper like this:

defmodule SharedParams do
  use Maru.Helper

  params :period do
    optional :start_date
    optional :end_date
  end

  params :pagination do
    optional :page, type: Integer
    optional :per_page, type: Integer
  end
end

And use shared params within Maru.Router like this:

defmodule API do
  helpers SharedParams

  params do
    use [:period, :pagination]
  end
  get do
    ...
  end
end

Extended functions or macros

Defined helper like this:

defmodule Authorization do

use Maru.Helper

defmacro current_user do
  quote do
    assigns[:current_user]
  end
end

defmacro current_user! do
  quote do
    current_user || raise Unauthorized
  end
end

end

And use it within Maru.Router like this:

defmodule API do
  helpers Authorization

  get do
    current_user!
    ...
  end
end