github-api-client 0.1.2.6 → 0.1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,21 +4,49 @@ module GitHub
4
4
  belongs_to :parent, :class_name => 'GitHub::Repo'
5
5
  has_and_belongs_to_many :watchers, :class_name => 'GitHub::User', :join_table => 'repo_watchings', :foreign_key => 'repo_id', :association_foreign_key => 'watcher_id'
6
6
 
7
+ def get
8
+ self.update_attributes GitHub::Base.parse_attributes(:repo_get,
9
+ YAML::load(
10
+ GitHub::Browser.get("/repos/show/#{self.permalink}"))['repository'])
11
+ self
12
+ end
13
+
7
14
  def self.get(information)
8
15
  #FIXME: permalink column must be present, comparing url's is surely not the most efficient way for the db
9
- GitHub::Repo.find_or_create_by_url(
10
- GitHub::Base.parse_attributes(:repo_get,
11
- YAML::load(GitHub::Browser.get("/repos/show/#{information}"))['repository']))
16
+ conditions = {:name => information.split('/').last, :owner_id => GitHub::User.find_or_create_by_login(information.split('/').first).id}
17
+ if r = GitHub::Repo.where(conditions).first
18
+ r.get
19
+ else
20
+ r = GitHub::Repo.new(conditions).get
21
+ end
22
+ end
23
+
24
+ def fetch(*things)
25
+ things.each do |thing|
26
+ case thing
27
+ when :self then get
28
+ when :watchers then get_watchers
29
+ end
30
+ end
31
+ self
12
32
  end
13
33
 
34
+ private
14
35
  def get_watchers
15
- YAML::load(GitHub::Browser.get("/repos/show/#{self.permalink}/watchers"))['watchers'].each do |watcher|
16
- attr = {:login => watcher}
17
- self.watchers.find_or_create(GitHub::User.find_or_create_by_login(attr))
36
+ watchers = YAML::load(GitHub::Browser.get("/repos/show/#{self.permalink}/watchers"))['watchers']
37
+ i = 1
38
+ self.transaction do
39
+ watchers.each do |watcher|
40
+ puts "#{watchers.length.to_s.color(:green).bright} / #{i.to_s.color(:blue).bright} - Fetching watchers"
41
+ i = i + 1
42
+ attr = {:login => watcher}
43
+ self.watchers.find_or_create(GitHub::User.find_or_create_by_login(attr))
44
+ end
18
45
  end
19
46
  self
20
47
  end
21
48
 
49
+ public
22
50
  def owner=(user)
23
51
  self.owner_id = GitHub::User.find_or_create_by_login(user).id if user.class == String
24
52
  if user.class == GitHub::User
@@ -38,6 +66,11 @@ module GitHub
38
66
  "#{owner.login}/#{name}"
39
67
  end
40
68
 
69
+ # For future, when sql will be find_or_create_by_permalink
70
+ def permalink=(anything)
71
+ @permalink = permalink
72
+ end
73
+
41
74
  def fork?
42
75
  b_fork
43
76
  end
@@ -74,11 +74,13 @@ module GitHub
74
74
  def get_followers
75
75
  users = YAML::load(GitHub::Browser.get "/user/show/#{login}/followers")['users']
76
76
  i = 1
77
- users.each do |user|
78
- puts "#{users.length.to_s.color(:green).bright} / #{i.to_s.color(:blue).bright} - Fetching followers"
79
- i = i + 1
80
- u = GitHub::User.find_or_create_by_login(user)
81
- self.followers.find_or_create u
77
+ self.transaction do
78
+ users.each do |user|
79
+ puts "#{users.length.to_s.color(:green).bright} / #{i.to_s.color(:blue).bright} - Fetching followers"
80
+ i = i + 1
81
+ u = GitHub::User.find_or_create_by_login(user)
82
+ self.followers.find_or_create u
83
+ end
82
84
  end
83
85
  self
84
86
  end
@@ -86,11 +88,13 @@ module GitHub
86
88
  def get_followings
87
89
  users = YAML::load(GitHub::Browser.get "/user/show/#{login}/following")['users']
88
90
  i = 1
89
- users.each do |user|
90
- puts "#{users.length.to_s.color(:green).bright} / #{i.to_s.color(:blue).bright} - Fetching followings"
91
- i = i + 1
92
- u = GitHub::User.find_or_create_by_login(user)
93
- self.followings.find_or_create u
91
+ self.transaction do
92
+ users.each do |user|
93
+ puts "#{users.length.to_s.color(:green).bright} / #{i.to_s.color(:blue).bright} - Fetching followings"
94
+ i = i + 1
95
+ u = GitHub::User.find_or_create_by_login(user)
96
+ self.followings.find_or_create u
97
+ end
94
98
  end
95
99
  self
96
100
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 2
9
- - 6
10
- version: 0.1.2.6
8
+ - 3
9
+ - 0
10
+ version: 0.1.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Jakub Oko\xC5\x84ski"