# encoding: utf-8 module Github # The Status API allows external services to mark commits with a success, # failure, error, or pending state, which is then reflected in pull requests # involving those commits. class Repos::Statuses < API VALID_STATUS_PARAM_NAMES = %w[ state target_url description ].freeze # :nodoc: REQUIRED_PARAMS = %w[ state ].freeze # :nodoc: # List Statuses for a specific SHA # # = Examples # github = Github.new # github.repos.statuses.list 'user-name', 'repo-name', 'sha' # github.repos.statuses.list 'user-name', 'repo-name', 'sha' { |status| ... } # def list(*args) arguments(args, :required => [:user, :repo, :sha]) params = arguments.params response = get_request("/repos/#{user}/#{repo}/statuses/#{sha}", params) return response unless block_given? response.each { |el| yield el } end alias :all :list # Create a status # # = Inputs # * :state - Required string - State of the status - can be one of # pending, success, error, or failure. # * :target_url - Optional string - Target url to associate with this # status. This URL will be linked from the GitHub UI to allow users # to easily see the ‘source’ of the Status. # * :description - Optional string - Short description of the status # # = Examples # github = Github.new # github.repos.statuses.create 'user-name', 'repo-name', 'sha', # "state" => "success", # "target_url" => "http://ci.example.com/johndoe/my-repo/builds/sha", # "description" => "Successful build #3 from origin/master" # def create(*args) arguments(args, :required => [:user, :repo, :sha]) do sift VALID_STATUS_PARAM_NAMES, :recursive => false assert_required REQUIRED_PARAMS end params = arguments.params post_request("/repos/#{user}/#{repo}/statuses/#{sha}", params) end end # Repos::Statuses end # Github