# encoding: utf-8
module Github
# Repository Starring is a feature that lets users bookmark repositories.
# Stars are shown next to repositories to show an approximate level of interest. # Stars have no effect on notifications or the activity feed.
class Repos::Starring < API
# List stargazers
#
# = Examples
# github = Github.new :user => 'user-name', :repo => 'repo-name'
# github.repos.starring.list
# github.repos.starring.list { |star| ... }
#
def list(user_name, repo_name, params={})
set :user => user_name, :repo => repo_name
assert_presence_of user, repo
normalize! params
response = get_request("/repos/#{user}/#{repo}/stargazers", params)
return response unless block_given?
response.each { |el| yield el }
end
alias :all :list
# List repos being starred by a user
#
# = Examples
# github = Github.new
# github.repos.starring.starred :user => 'user-name'
#
# List repos being starred by the authenticated user
#
# = Examples
# github = Github.new :oauth_token => '...'
# github.repos.starring.starred
#
def starred(*args)
params = args.extract_options!
normalize! params
response = if (user_name = params.delete('user'))
get_request("/users/#{user_name}/starred", params)
else
get_request("/user/starred", params)
end
return response unless block_given?
response.each { |el| yield el }
end
# Check if you are starring a repository
#
# Returns true if this repo is starred by you,false otherwise
#
# = Examples
# github = Github.new
# github.repos.starring.starring? 'user-name', 'repo-name'
#
def starring?(user_name, repo_name, params={})
assert_presence_of user_name, repo_name
normalize! params
get_request("/user/starred/#{user_name}/#{repo_name}", params)
true
rescue Github::Error::NotFound
false
end
# Star a repository
#
# You need to be authenticated to star a repository
#
# = Examples
# github = Github.new
# github.repos.starring.star 'user-name', 'repo-name'
#
def star(user_name, repo_name, params={})
set :user => user_name, :repo => repo_name
assert_presence_of user_name, repo_name
normalize! params
put_request("/user/starred/#{user_name}/#{repo_name}", params)
end
# Unstar a repository
#
# You need to be authenticated to unstar a repository.
#
# = Examples
# github = Github.new
# github.repos.starring.unstar 'user-name', 'repo-name'
#
def unstar(user_name, repo_name, params={})
set :user => user_name, :repo => repo_name
assert_presence_of user_name, repo_name
normalize! params
delete_request("/user/starred/#{user_name}/#{repo_name}", params)
end
end # Repos::Starring
end # Github