elixir-maru / maru

Elixir RESTful Framework
https://maru.readme.io
BSD 3-Clause "New" or "Revised" License
1.32k stars 84 forks source link

plugin mode #107

Open falood opened 6 years ago

falood commented 6 years ago

make some dsl standalone and import as plugin.

plugin defined in the server module,

defmodule MyServer do
  use Maru.Server, otp_app: :my_api

  plugin Version, using: :param, parameter: "v"
end

when plugin defined in the server, we can use custom dsl in router code. The version dsl is defined by plugin.

defmodule MyRouter do
  use MyServer

  version "v1"
end

Plugin only works for routers use MyServer.

keep such DSLs internal

prefix
namespaces/route_param
desc
params
get/post
plug/plug_overridable
rescue_from

move such DSLs to plugin

version
mount
extend
pipeline