Skip to content

Instantly share code, notes, and snippets.

@mndvns
Created February 1, 2016 21:10
Show Gist options
  • Save mndvns/40ae9fe68816d821b1ef to your computer and use it in GitHub Desktop.
Save mndvns/40ae9fe68816d821b1ef to your computer and use it in GitHub Desktop.
defmodule HTTPHelper do
defmacro generate(name) do
names = name <> "s"
camel = Mix.Utils.camelize(name)
camels = Mix.Utils.camelize(names)
mod = Module.concat([camel])
mods = Module.concat([camels])
quote do
get "/#{unquote(names)}", {Api.Resource.Cases, unquote(mods)},
service: Api.Service.unquote(mod),
read: {Api.Resource.Cases.Read, unquote(mods).Read},
create: {Api.Resource.Cases.Create, unquote(mods).Create},
delete: {Api.Resource.Cases.Delete, unquote(mods).Delete}
post "/#{unquote(names)}", {Api.Resource.Cases.Create, unquote(mods).Create},
service: Api.Service.unquote(mod),
read: {Api.Resource.Cases.Read, unquote(mods).Read}
get "/#{unquote(names)}/:item", {Api.Resource.Cases.Read, unquote(mods).Read},
service: Api.Service.unquote(mod),
delete: {Api.Resource.Cases.Delete, unquote(mods).Delete}
delete "/#{unquote(names)}/:item", {Api.Resource.Cases.Delete, unquote(mods).Delete},
service: Api.Service.unquote(mod),
index: {Api.Resource.Cases, unquote(mods)}
end
end
end
defmodule Api.HTTP do
use PoeApi.HTTP
import HTTPHelper
get "/", Api.Resource.Root
generate "change_request"
generate "service_request"
generate "incident"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment