class BaneryStats::OutputSummary

Public Class Methods

run() click to toggle source
# File lib/banery_stats.rb, line 10
def self.run
  new.run
end

Public Instance Methods

own_user_id() click to toggle source
# File lib/banery_stats.rb, line 38
def own_user_id
  @own_user_id ||=
    begin
      data = http_get("https://avarteq.kanbanery.com/api/v1/user.json")
      data["id"]
    end
end
project_tasks(workspace_name, project_id) click to toggle source
# File lib/banery_stats.rb, line 32
def project_tasks(workspace_name, project_id)
  data = http_get("https://#{workspace_name}.kanbanery.com/api/v1/projects/#{project_id}/tasks.json")
  data.keep_if { |d| d.has_key?("owner_id") && d["owner_id"] == own_user_id }
  data
end
run() click to toggle source
# File lib/banery_stats.rb, line 14
def run
  workspaces.each do |workspace|
    puts "WORKSPACE #{workspace.name} #projects: #{workspace.projects.size}"
    workspace.projects.each do |workspace_project|
      project_tasks = project_tasks(workspace.name, workspace_project.id)
      puts "#{project_tasks.size.to_s.rjust(5)} #{workspace_project.name}"
    end
  end
end
workspaces() click to toggle source
# File lib/banery_stats.rb, line 24
def workspaces
  data = http_get("https://kanbanery.com/api/v1/user/workspaces.json/")
  data.collect do |workspace_data|
    projects = workspace_data["projects"].collect { |workspace_project| OpenStruct.new(id: workspace_project["id"], name: workspace_project["name"]) }
    OpenStruct.new(id: workspace_data["id"], name: workspace_data["name"], projects: projects)
  end
end

Private Instance Methods

http_get(url) click to toggle source
# File lib/banery_stats.rb, line 48
def http_get(url)
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(uri.request_uri)
  request['X-Kanbanery-ApiToken'] = BaneryStats.api_token or raise "You must set BaneryStats.api_token to your API token"

  response = http.request(request)

  data = ActiveSupport::JSON.decode(response.body)
end