Class: AtomicAdmin::V1::ApplicationsController

Inherits:
AdminController
  • Object
show all
Includes:
Filtering
Defined in:
app/controllers/atomic_admin/v1/applications_controller.rb

Instance Method Summary collapse

Methods included from Filtering

#filter, #query_params

Methods inherited from AdminController

#record_not_found

Instance Method Details

#indexObject



8
9
10
11
# File 'app/controllers/atomic_admin/v1/applications_controller.rb', line 8

def index
  @applications, meta = filter(Application.all.lti)
  render json: { applications:  json_for_collection(@applications), meta: }
end

#interactionsObject



29
30
31
32
33
# File 'app/controllers/atomic_admin/v1/applications_controller.rb', line 29

def interactions
  application = Application.find(params[:id])
  interactions = AtomicAdmin.application_interactions.resolve(application: application)
  render json: { interactions: interactions }
end

#json_for(application) ⇒ Object



35
36
37
38
39
40
41
# File 'app/controllers/atomic_admin/v1/applications_controller.rb', line 35

def json_for(application)
  json = application.as_json.with_indifferent_access
  secret = json[:oauth_secret]
  json[:oauth_secret_preview] = secret[0..2] + '*' * (secret.length - 3) if secret

  json
end

#showObject



13
14
15
16
# File 'app/controllers/atomic_admin/v1/applications_controller.rb', line 13

def show
  @application = Application.find(params[:id])
  render json: { application: json_for(@application) }
end

#updateObject



18
19
20
21
22
23
24
25
26
27
# File 'app/controllers/atomic_admin/v1/applications_controller.rb', line 18

def update
  @application = Application.find(params[:id])

  # Strong params doesn't allow abritrary json, so we need to set the values manually
  @application.default_config = params[:default_config]
  @application.canvas_api_permissions = params[:canvas_api_permissions]

  @application.update!(update_params)
  render json: { application: json_for(@application) }
end