Created
November 5, 2009 16:11
-
-
Save danmayer/227163 to your computer and use it in GitHub Desktop.
a few examples of using the devver.net Caliper API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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