lib/nephos-server/router/helpers.rb in nephos-server-0.6.4 vs lib/nephos-server/router/helpers.rb in nephos-server-0.6.5
- old
+ new
@@ -2,41 +2,52 @@
@route_prefix ||= []
File.join(["/"] + @route_prefix)
end
# @param verb [String] has to be a valid http verb, so a string uppercase
+# @param url [String] if an url is provided, then it will be put in the hash
+# to have the same behavior as if it was specified in the what hash
+# \\{url: URL}
# @param what [Hash] has to contain the following keys:
# - :url
# - :controller
# - :method
#
# The method create a valid route, set in Nephos::Router::ROUTES
# it will call the method from the controller, based on the parameters
# if the client request match with the verb and the url provided.
#
# Checkout the documentation about the parameters and API for more informations
-def add_route(verb, what)
+def add_route(verb, url=nil, what)
raise InvalidRoute, "what must be a hash" unless what.is_a? Hash
- what[:url] = File.expand_path File.join(route_prefix, what[:url])
- Nephos::Router.check!(what)
- Nephos::Router.add_params!(what)
- Nephos::Router.add(what, verb)
+ what[:url] ||= url
+ Array(what[:url]).each do |url|
+ route = what.dup
+ route[:url] = url
+ route[:url] = File.expand_path File.join(route_prefix, route[:url])
+ Nephos::Router.check!(route)
+ Nephos::Router.add_params!(route)
+ Nephos::Router.add(route, verb)
+ end
end
+# @param url [String] see {#add_route}
# @param what [Hash] see {#add_route}
-def get what
- add_route "GET", what
+def get url=nil, what
+ add_route "GET", url, what
end
+# @param url [String] see {#add_route}
# @param what [Hash] see {#add_route}
-def post what
- add_route "POST", what
+def post url=nil, what
+ add_route "POST", url, what
end
+# @param url [String] see {#add_route}
# @param what [Hash] see {#add_route}
-def put what
- add_route "PUT", what
+def put url=nil, what
+ add_route "PUT", url, what
end
# @param name [String]
# @param block [Bloc]
#
@@ -47,6 +58,11 @@
def resource(name, &block)
@route_prefix ||= []
@route_prefix << name
block.call
@route_prefix.pop
+end
+
+# An alias is an url which have the same proprieties than the previous route
+def alias_route
+ raise "Not implemented yet"
end