= octopi
Octopi is a Ruby interface to GitHub API v2 (http://develop.github.com). It's under early but active development and already works.
== Example
include Octopi
# user information
user = User.find("fcoury")
puts "#{user.name} is being followed by #{user.followers.join(", ")} and following #{user.following.join(", ")}"
# the bang version of followers and following
# fetches user object for each user, but is
# a lot more expensive
user.followers!.each do |u|
puts " - #{u.name} (#{u.login}) has #{u.public_repo_count} repo(s)"
end
# search user
users = User.find_all("silva")
puts "#{users.size} users found for 'silva':"
users.each do |u|
puts " - #{u.name}"
end
# repository information
# to get all repos for user: user.repositories
repo = user.repository("octopi") # same as: Repository.find("fcoury", "octopi")
puts "Repository: #{repo.name} - #{repo.description} (by #{repo.owner}) - #{repo.url}"
# commits of a the repository
first_commit = repo.commits.first
puts "First commit: #{first_commit.id} - #{first_commit.message} - by #{first_commit.author['name']}"
# single commit information
# details is the same as: Commit.find(commit)
puts "Diff:"
first_commit.details.modified.each {|m| puts "#{m['filename']} DIFF: #{m['diff']}" }
# repository search
repos = Repository.find_all("ruby", "git")
puts "#{repos.size} repository(ies) with 'ruby' and 'git':"
repos.each do |r|
puts " - #{r.name}"
end
== Author
Felipe Coury - http://felipecoury.com
HasMany.info blog - http://hasmany.info
== Copyright
DISCLAIMER: The name of this library is pronounced octo-pie but no Octocats were harmed during its creation. It's not really an Octo Pie, but a contraction of the words Octocat and API.
Copyright (c) 2009 Felipe Coury. See LICENSE for details.