if middle.length
middle.push (...args) ~>
@debug.Log "Request on: #{type} => #{url} "
@_WrapRequest type + url, args
@app.route(@basePath + @apiVersion + '/' + @name + url)[type].apply @app.route(@basePath + @apiVersion + '/' + @name + url), middle
else
@app.route(@basePath + @apiVersion + '/' + @name + url)[type] (...args) ~>
@debug.Log "Request on: #{type} => #{url} "
@_WrapRequest type + url, args
else
@[type + url] = done
Config: ->
@Extend = ->
class ExtendedRoute extends @
_set = (verb) ~>
Route::[verb] = (...args) ->
args.unshift verb[0].toLowerCase() + verb[1 til verb.length]*''
@_Add.apply @, args
each _set, <[ All Post Get Put Delete ]>
class Collection extends Route
Config: ->
super()
@All \/:id* ~> it.SetInstance @resource.Fetch +it.params.id
@Get ~> @resource.List it.query
@Post ~> @resource.Create it.body
@Get \/:id ~> it.instance
@Put \/:id ~> it.instance.Set it.body
@Delete \/:id ~> it.instance.Delete!
class RPC extends Route
Config: ->
super()
@Post \/list ~> @resource.List it.body
@Post \/create ~> @resource.Create it.body
@Post \/fetch ~> @resource.Fetch it.body
@Post \/set/:id ~> @resource.Fetch +it.params.id .Set it.body
@Post \/delete/:id ~> @resource.Delete +it.params.id
Route.RPC = RPC
Route.Collection = Collection
module.exports = Route