concordia-publishing-house/errbit

View on GitHub
app/controllers/api/v1/stats_controller.rb

Summary

Maintainability
A
25 mins
Test Coverage
class Api::V1::StatsController < ApplicationController
  respond_to :json, :xml

  # The stats API only requires an api_key for the given app.
  skip_before_filter :authenticate_user!
  before_filter :require_api_key_or_authenticate_user!

  def app
    if problem = @app.problems.order("last_notice_at desc").first
      @last_error_time = problem.last_notice_at
    end

    stats = {
      :name => @app.name,
      :last_error_time => @last_error_time,
      :unresolved_errors => @app.unresolved_count
    }

    respond_to do |format|
      format.html { render :json => Yajl.dump(stats) } # render JSON if no extension specified on path
      format.json { render :json => Yajl.dump(stats) }
      format.xml  { render :xml  => stats }
    end
  end


  protected

  def require_api_key_or_authenticate_user!
    if params[:api_key].present?
      if @app = App.where(:api_key => params[:api_key]).first
        return true
      end
    end

    authenticate_user!
  end

end