class StatusPageIO::Reporter

Attributes

api_base[RW]
api_key[RW]
error_metric_id[RW]
metric_id[RW]
page_id[RW]
redis_url[RW]
request_metric_id[RW]

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/status_page/reporter.rb, line 19
def initialize
  yield(self)
  @redis = Redis.new(url: redis_url )
end
report(&config) click to toggle source
# File lib/status_page/reporter.rb, line 14
def self.report(&config)
  reporter = new(&config)
  reporter.report
end

Public Instance Methods

post_request(metric_id, metrics={}) click to toggle source
# File lib/status_page/reporter.rb, line 51
def post_request(metric_id, metrics={})
  HTTParty.post(
      "#{@api_base}/pages/#{@page_id}/metrics/#{metric_id}/data.json",
      headers: {
          'Authorization' => "OAuth #{@api_key}",
      },
      body: {
          data: metrics
      }
  )
end
report() click to toggle source
# File lib/status_page/reporter.rb, line 24
def report
  report_errors
  report_requests
end
report_errors() click to toggle source
# File lib/status_page/reporter.rb, line 40
def report_errors
  metric_hash = {
      timestamp: Time.now.to_i,
      value: @redis.get('error_count')
  }

  post_request(@error_metric_id, metric_hash)

  @redis.set('error_count', 0)
end
report_requests() click to toggle source
# File lib/status_page/reporter.rb, line 29
def report_requests
  metric_hash = {
      timestamp: Time.now.to_i,
      value: @redis.get('request_count')
  }

  post_request @request_metric_id, metric_hash

  @redis.set('request_count', 0)
end