class AdminApi::CodeSnippetsController

Public Instance Methods

index() click to toggle source
# File lib/nexmo_developer/app/controllers/admin_api/code_snippets_controller.rb, line 5
def index
  return unless authenticate

  params.permit!

  @events = Usage::CodeSnippetEvent

  if params[:created_after] || params[:created_before]
    @events = @events.created_between(params[:created_after], params[:created_before])
  end

  query = []
  query.push('snippet = :snippet') if params[:snippet]
  query.push('language = :language') if params[:language]

  unless query.empty?
    @events = @events.where([query.join(' and '), params.to_h])
  end

  @events = @events.group(:snippet, :language, :section, :action).count(:action)
  @events = organize_data(@events)

  render 'index'
end

Private Instance Methods

organize_data(events) click to toggle source
# File lib/nexmo_developer/app/controllers/admin_api/code_snippets_controller.rb, line 32
def organize_data(events)
  output = {}
  events.each do |path, count|
    pointer = output
    path.each do |k|
      leaf_value = (k == path.last) ? count : {}
      pointer[k] = pointer[k] || leaf_value
      pointer = pointer[k]
    end
  end
  output
end