lib/voom/presenters/api/app.rb in voom-presenters-0.1.13 vs lib/voom/presenters/api/app.rb in voom-presenters-0.2.0
- old
+ new
@@ -1,9 +1,9 @@
require 'sinatra'
require 'json'
-require_relative '../../presenters'
-require_relative 'router'
+require 'voom/presenters'
+require 'voom/presenters/api/router'
module Voom
module Presenters
module Api
# This is the Rest API for voom services/component commands
@@ -11,18 +11,31 @@
set :root, File.expand_path('../../../..', __FILE__)
set :router_, Router
set :bind, '0.0.0.0'
get '/:_presenter_.pom' do
- render_presenter
+ render_presenter(params[:_presenter_])
end
+ get '/:_namespace1_/:_presenter_.pom' do
+ fq_presenter = [params[:_namespace1_], params[:_presenter_]].join(':')
+ pass unless Presenters::App.registered?(fq_presenter)
+ render_presenter(fq_presenter)
+ end
+
+ get '/:_namespace1_/:_namespace2_/:_presenter_.pom' do
+ fq_presenter = [params[:_namespace1_], params[:_namespace2_], params[:_presenter_]].join(':')
+ pass unless Presenters::App.registered?(fq_presenter)
+ render_presenter(fq_presenter)
+ end
+
+
private
- def render_presenter
+ def render_presenter(presenter)
# puts "/presenters/api/#{params[:version]}/#{params[:presenter]}/"
# puts "Parameters: #{params.inspect}"
- presenter = Voom::Presenters::App[params[:_presenter_]].call
+ presenter = Voom::Presenters::App[presenter].call
pom = presenter.expand(router: router, context: prepare_context)
content_type :json
JSON.dump(pom.to_hash)
end
\ No newline at end of file