class Octokit::Repository

URLs and to generate URLs
Class to parse GitHub repository owner and name from

def self.from_url(url)

Returns:
  • (Repository) -
def self.from_url(url)
  new URI.parse(url).path[1..]
         .gsub(%r{^repos/}, '')
         .split('/', 3)[0..1]
         .join('/')
end

def self.path(repo)

Returns:
  • (String) - Api path.

Parameters:
  • repo (Integer, String, Hash, Repository) -- A GitHub repository.
def self.path(repo)
  new(repo).path
end

def id_api_path

Returns:
  • (String) - Api path for id identified repos
def id_api_path
  "repositories/#{@id}"
end

def initialize(repo)

Raises:
  • (Octokit::InvalidRepository) - if the repository
def initialize(repo)
  case repo
  when Integer
    @id = repo
  when NAME_WITH_OWNER_PATTERN
    @owner, @name = repo.split('/')
  when Repository
    @owner = repo.owner
    @name = repo.name
  when Hash
    @name = repo[:repo] || repo[:name]
    @owner = repo[:owner] || repo[:user] || repo[:username]
  else
    raise_invalid_repository!(repo)
  end
  validate_owner_and_name!(repo) if @owner && @name
end

def named_api_path

Returns:
  • (String) - Api path for owner/name identified repos
def named_api_path
  "repos/#{slug}"
end

def path

Returns:
  • (String) - Repository API path
def path
  return named_api_path if @owner && @name
  id_api_path if @id
end

def raise_invalid_repository!(repo)

def raise_invalid_repository!(repo)
  msg = "#{repo.inspect} is invalid as a repository identifier. " \
        'Use the user/repo (String) format, or the repository ID (Integer), or a hash containing :repo and :user keys.'
  raise Octokit::InvalidRepository, msg
end

def slug

Returns:
  • (String) -
def slug
  "#{@owner}/#{@name}"
end

def url

Returns:
  • (String) -
def url
  "#{Octokit.web_endpoint}#{slug}"
end

def validate_owner_and_name!(repo)

def validate_owner_and_name!(repo)
  if @owner.include?('/') || @name.include?('/') || !url.match?(ABS_URI_REGEXP)
    raise_invalid_repository!(repo)
  end
end