class SentrySummary::Aggregator

Public Class Methods

new(client) click to toggle source
# File lib/sentry-summary/aggregator.rb, line 5
def initialize(client)
  @client = client
end

Public Instance Methods

events_by_route(since = "24 hours ago") click to toggle source
# File lib/sentry-summary/aggregator.rb, line 9
def events_by_route(since = "24 hours ago")
  issues = client.issues("api", since)

  issues.each_with_object({}) do |issue, hash|
    events = client.events(issue.id)

    events.each do |event|
      hash[event.route] ||= {}

      closest_title = closest_title(hash[event.route].keys, event.metadata[:value])
      hash[event.route][closest_title] = (hash[event.route][closest_title] || 0) + 1
    end

    hash
  end
end
events_by_type(since = "24 hours ago") click to toggle source
# File lib/sentry-summary/aggregator.rb, line 26
def events_by_type(since = "24 hours ago")
  issues = client.issues("api", since)

  issues.each_with_object({}) do |issue, hash|
    events = client.events(issue.id)

    events.each do |event|
      type = event.metadata[:value]
      type = closest_title(hash.keys, type)
      hash[type] ||= {}

      hash[type][event.route] = (hash[type][event.route] || 0) + 1
    end

    hash
  end
end

Private Instance Methods

client() click to toggle source
# File lib/sentry-summary/aggregator.rb, line 54
def client
  @client
end
closest_title(titles, candidate) click to toggle source
# File lib/sentry-summary/aggregator.rb, line 46
def closest_title(titles, candidate)
  closest_title = titles.max_by { |title| title.similar(candidate) }

  return candidate unless closest_title && closest_title.similar(candidate) > 80

  closest_title
end