Skip to content

Instantly share code, notes, and snippets.

@danmayer
Created November 5, 2009 16:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danmayer/227163 to your computer and use it in GitHub Desktop.
Save danmayer/227163 to your computer and use it in GitHub Desktop.
a few examples of using the devver.net Caliper API
#This is a few examples of how to use the devver.net Caliper API
require 'cgi'
require "uri"
require "restclient"
require 'ruby-debug'
require 'json'
class CaliperAPI
def initialize(api_url)
@api_url = api_url
end
def get_community_metrics
community_metrics_json = RestClient.get("#{@api_url}/metrics")
end
def get_projects
projects_json = RestClient.get("#{@api_url}/projects")
end
def get_revisions
revisions_json = RestClient.get("#{@api_url}/revisions")
end
def get_project(repo, with_build = false)
api_base = "#{@api_url}/projects"
begin
params = {"repo_url" => repo}
params['start_build'] = 'true' if with_build
response = RestClient.post(api_base, params)
project = JSON.parse(response)
rescue RestClient::ResourceNotFound, RestClient::RequestFailed, Errno::ECONNREFUSED => error
puts "error retrieving project #{error}"
project = nil
end
end
def run_project_revision(repo, revision = "HEAD")
project = get_project(repo)
if project
response = RestClient.post(project['runs_url'], {"revision" => revision})
result = JSON.parse(response)
end
end
def get_project_summary(repo)
project = get_project(repo)
if project
metrics = RestClient.get("#{project['latest_revision_url']}/raw_metrics?trends=yes&summarize=yes")
metrics_data = JSON.parse(metrics) if metrics
metrics_data
end
end
def get_project_summary_or_create_project(repo)
project = get_project(repo)
if project
begin
metrics = RestClient.get("#{project['latest_revision_url']}/raw_metrics?trends=yes&summarize=yes")
metrics_data = JSON.parse(metrics) if metrics
rescue RestClient::ResourceNotFound
metrics_data = nil
get_project(repo,true)
end
end
metrics_data
end
end
API_URL = 'http://api.devver.net'
api = CaliperAPI.new(API_URL)
#project = api.get_project('git://github.com/madrobby/textorize.git')
#puts project
#project = api.get_project('git://github.com/razerbeans/sinatra-template.git', true)
#puts project
#puts comm_metrics = api.get_community_metrics
#puts api.get_projects
#puts api.get_revisions
#puts api.get_project_summary('git://github.com/razerbeans/sinatra-template.git').inspect
#puts api.run_project_revision('git://github.com/zdzolton/cambric.git','bc1bae969c25a33ccd8be307ff9b9ec1e66041ae').inspect
data = api.get_project_summary_or_create_project('git://github.com/sinatra/sinatra.git')
puts data.inspect
puts "project lines of code: #{data['stats']['code_loc']}"
puts "done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment