Sha256: 5db8d4460e691a0efbbadf942b0bda9588fa433d0ff4e824706f00031e068b99

Contents?: true

Size: 770 Bytes

Versions: 14

Compression:

Stored size: 770 Bytes

Contents

class ForestLiana::Router
  def call(env)
    params = env['action_dispatch.request.path_parameters']
    resource = ForestLiana::SchemaUtils.find_model_from_table_name(params[:collection])

    class_name = resource.table_name.classify
    module_name = class_name.deconstantize

    name = module_name if module_name
    name += class_name.demodulize

    ctrl_class = "ForestLiana::UserSpace::#{name}Controller".constantize
    action = nil

    case env['REQUEST_METHOD']
    when 'GET'
      if params[:id]
        action = 'show'
      else
        action = 'index'
      end
    when 'PUT'
      action = 'update'
    when 'POST'
      action = 'create'
    when 'DELETE'
      action = 'destroy'
    end

    ctrl_class.action(action.to_sym).call(env)
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
forest_liana-1.6.5 app/controllers/forest_liana/router.rb
forest_liana-1.6.4 app/controllers/forest_liana/router.rb
forest_liana-1.6.3 app/controllers/forest_liana/router.rb
forest_liana-1.6.2 app/controllers/forest_liana/router.rb
forest_liana-1.6.1 app/controllers/forest_liana/router.rb
forest_liana-1.6.0 app/controllers/forest_liana/router.rb
forest_liana-1.5.26 app/controllers/forest_liana/router.rb
forest_liana-1.5.25 app/controllers/forest_liana/router.rb
forest_liana-1.5.24 app/controllers/forest_liana/router.rb
forest_liana-1.5.23 app/controllers/forest_liana/router.rb
forest_liana-1.5.22 app/controllers/forest_liana/router.rb
forest_liana-1.5.21 app/controllers/forest_liana/router.rb
forest_liana-1.5.20 app/controllers/forest_liana/router.rb
forest_liana-1.5.19 app/controllers/forest_liana/router.rb