Sha256: 3891d0dbc4213ce11e64afb8e906a7407c86cac5b863146511bbd445c2a8fe2b

Contents?: true

Size: 1.56 KB

Versions: 10

Compression:

Stored size: 1.56 KB

Contents

module Octokit

  # Class to parse GitHub repository owner and name from
  # URLs and to generate URLs
  class Repository
    attr_accessor :owner, :name, :id

    # Instantiate from a GitHub repository URL
    #
    # @return [Repository]
    def self.from_url(url)
      Repository.new(URI.parse(url).path[1..-1])
    end

    def initialize(repo)
      case repo
      when Integer
        @id = repo
      when String
        @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]
      end
    end

    # Repository owner/name
    # @return [String]
    def slug
      "#{@owner}/#{@name}"
    end
    alias :to_s :slug

    # @return [String] Repository API path
    def path
      return named_api_path if @owner && @name
      return id_api_path if @id
    end

    # Get the api path for a repo
    # @param repo [Integer, String, Hash, Repository] A GitHub repository.
    # @return [String] Api path.
    def self.path repo
      new(repo).path
    end

    # @return [String] Api path for owner/name identified repos
    def named_api_path
      "repos/#{slug}"
    end

    # @return [String] Api path for id identified repos
    def id_api_path
      "repositories/#{@id}"
    end

    # Repository URL based on {Octokit::Client#web_endpoint}
    # @return [String]
    def url
      "#{Octokit.web_endpoint}#{slug}"
    end

    alias :user :owner
    alias :username :owner
    alias :repo :name
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
octokit-3.7.0 lib/octokit/repository.rb
octokit-3.6.1 lib/octokit/repository.rb
octokit-3.6.0 lib/octokit/repository.rb
octokit-3.5.2 lib/octokit/repository.rb
octokit-3.4.2 lib/octokit/repository.rb
octokit-3.4.1 lib/octokit/repository.rb
octokit-3.4.0 lib/octokit/repository.rb
octokit-3.3.1 lib/octokit/repository.rb
octokit-3.3.0 lib/octokit/repository.rb
octokit-3.2.0 lib/octokit/repository.rb