Class: Smooth::Presentable::ApiEndpoint

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/smooth/presentable/api_endpoint.rb

Instance Method Summary collapse

Instance Method Details

#base_scopeObject



28
29
30
# File 'lib/smooth/presentable/api_endpoint.rb', line 28

def base_scope
  resource_model
end

#current_user_roleObject



32
33
34
# File 'lib/smooth/presentable/api_endpoint.rb', line 32

def current_user_role
  :default
end

#indexObject



36
37
38
39
40
# File 'lib/smooth/presentable/api_endpoint.rb', line 36

def index
  base_scope.present(params)
    .as(presenter_format)
    .to(current_user_role).results
end

#presenter_formatObject



24
25
26
# File 'lib/smooth/presentable/api_endpoint.rb', line 24

def presenter_format
  params[:presenter] || params[:presenter_format] || :default
end

#resource_modelObject



16
17
18
# File 'lib/smooth/presentable/api_endpoint.rb', line 16

def resource_model
  params[:resource] && params[:resource].singularize.camelize.constantize rescue nil
end

#showObject



42
43
44
45
# File 'lib/smooth/presentable/api_endpoint.rb', line 42

def show
  record = base_scope.find(params[:id])
  record.present_as(presenter_format)
end

#valid_resource?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/smooth/presentable/api_endpoint.rb', line 20

def valid_resource?
  resource_model && resource_model.ancestors.include?(Smooth::Presentable)
end