Class: MirrorGithub::Github

Inherits:
Object
  • Object
show all
Defined in:
lib/mirror_github/github.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(username, password, org = nil) ⇒ Github

Returns a new instance of Github.



15
16
17
18
19
20
# File 'lib/mirror_github/github.rb', line 15

def initialize(username, password, org = nil)
  self.username   = username
  self.password   = password
  self.org        = org
  self.connection = RestClient::Resource.new Github.api_url, :user => username, :password => password
end

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



13
14
15
# File 'lib/mirror_github/github.rb', line 13

def connection
  @connection
end

#orgObject

Returns the value of attribute org.



13
14
15
# File 'lib/mirror_github/github.rb', line 13

def org
  @org
end

#passwordObject

Returns the value of attribute password.



13
14
15
# File 'lib/mirror_github/github.rb', line 13

def password
  @password
end

#usernameObject

Returns the value of attribute username.



13
14
15
# File 'lib/mirror_github/github.rb', line 13

def username
  @username
end

Class Method Details

.api_urlObject



8
9
10
# File 'lib/mirror_github/github.rb', line 8

def api_url
  'https://api.github.com'
end

Instance Method Details

#repositories(limit = 100) ⇒ Object

Return a list of the current repositories for an organization



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/mirror_github/github.rb', line 23

def repositories(limit = 100)
  return [] unless org

  got_results = true
  page = 1
  repos = []

  while got_results do
    # Github maxes out at 100 repos per page.
    page_repos = JSON::parse(connection["orgs/#{org}/repos?per_page=#{limit}&page=#{page}"].get).collect do |repo_hash|
      Repository.new(:ssh_url    => repo_hash['ssh_url'],
                     :private    => repo_hash['private'],
                     :created_at => repo_hash["created_at"],
                     :pushed_at  => repo_hash["pushed_at"],
                     :name       => repo_hash["name"])
    end
    if page_repos.empty?
      got_results = false
    else
      repos += page_repos
    end
    page += 1
  end

  repos
end