github-api-client 0.1.1.2 → 0.1.1.3

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.
@@ -1,7 +1,7 @@
1
1
  class CreateUsers < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :users, :force => true do |t|
4
- %w(login token type name company location blog email language).each do |attr|
4
+ %w(login token type name company location blog email language permission).each do |attr|
5
5
  t.string attr
6
6
  end
7
7
 
@@ -0,0 +1,7 @@
1
+ class ActiveRecord::Associations::HasAndBelongsToManyAssociation
2
+ # Short alias for if exists then create
3
+ # @param [ActiveRecord::Base] object An object to check if exists and create
4
+ def find_or_create(object)
5
+ self << object unless exists?(object)
6
+ end
7
+ end
data/lib/github_api.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/ruby
2
- $: << './github_api' << './lib/github_api'
2
+ #$: << '../'
3
3
 
4
4
  require 'rubygems'
5
5
  gem 'github-api-client'
@@ -8,6 +8,7 @@ require 'uri'
8
8
  require 'yaml'
9
9
  require 'singleton'
10
10
  require 'active_record'
11
+ require 'core_ext/habtm'
11
12
 
12
13
  # General placeholder for all of the GitHub API sweets
13
14
  module GitHub
@@ -28,9 +29,9 @@ end
28
29
 
29
30
  GitHub::Config.setup
30
31
 
31
- require 'base'
32
- require 'user'
33
- require 'browser'
32
+ require 'github_api/base'
33
+ require 'github_api/user'
34
+ require 'github_api/browser'
34
35
  require 'rainbow'
35
36
 
36
37
 
@@ -33,11 +33,11 @@ module GitHub
33
33
  # @param [Hash] attributes GitHub API retrieved attributes to be parsed
34
34
  # @return [Hash] parsed attributes, fully compatibile with local db
35
35
  def self.parse_attributes(attributes)
36
- {:name => :login, :username => :login, :fullname => :name, :followers => :followers_count, :repos => :public_repo_count, :created => :nil}.each do |k, v|
36
+ {:name => :login, :username => :login, :fullname => :name, :followers => :followers_count, :repos => :public_repo_count, :created => :nil, :permission => :nil}.each do |k, v|
37
37
  unless v == :nil
38
- attributes[v] = attributes[k.to_s]
38
+ attributes[v.to_sym] = attributes[k.to_sym]
39
39
  end
40
- attributes.delete k.to_s
40
+ attributes.delete k.to_sym
41
41
  end
42
42
  attributes
43
43
  end
@@ -2,13 +2,14 @@ module GitHub
2
2
  # Basic model, stores retrieved user and his associations
3
3
  class User < ActiveRecord::Base
4
4
  has_and_belongs_to_many :followers, :foreign_key => 'follower_id', :association_foreign_key => 'following_id', :join_table => 'followings', :class_name => 'User'
5
- has_and_belongs_to_many :following, :foreign_key => 'following_id', :association_foreign_key => 'follower_id', :join_table => 'followings', :class_name => 'User'
5
+ has_and_belongs_to_many :followings, :foreign_key => 'following_id', :association_foreign_key => 'follower_id', :join_table => 'followings', :class_name => 'User'
6
6
 
7
7
  # Fetches info about current_user from GitHub
8
8
  # GitHub::User.new.build(:login => 'asd', :token => 'token').get #=> GitHub::User
9
9
  # @return [GitHub::User] Chainable self object after syncing attributes with GitHub
10
10
  def get
11
- self.update_attributes YAML::load(GitHub::Browser.get("/user/show/#{self.login}"))['user']
11
+ self.update_attributes YAML::load(
12
+ GitHub::Browser.get("/user/show/#{self.login}"))['user']
12
13
  self
13
14
  end
14
15
 
@@ -63,17 +64,15 @@ module GitHub
63
64
  private
64
65
  def get_followers
65
66
  users = YAML::load(GitHub::Browser.get "/user/show/#{login}/followers")['users']
66
-
67
- ids = []
68
67
  i = 1
69
68
  users.each do |user|
70
69
  puts "#{users.length.to_s} / #{i.to_s} - Fetching followers"
71
70
  i = i + 1
72
71
  u = GitHub::User.find_or_create_by_login(user)
73
- ids << u.id
72
+ self.followers.find_or_create u
73
+ # Realized it was stupid as it's a bi-directional relation :D
74
+ #u.followings.find_or_create self
74
75
  end
75
-
76
- self.follower_ids = ids
77
76
  self
78
77
  end
79
78
 
metadata CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 1
8
8
  - 1
9
- - 2
10
- version: 0.1.1.2
9
+ - 3
10
+ version: 0.1.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Jakub Oko\xC5\x84ski"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-29 00:00:00 +01:00
18
+ date: 2010-11-30 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ files:
77
77
  - lib/github_api/user.rb
78
78
  - db/migrate/002_create_followings.rb
79
79
  - db/migrate/001_create_users.rb
80
+ - lib/core_ext/habtm.rb
80
81
  has_rdoc: false
81
82
  homepage: http://github.com/farnoy/github-api-client
82
83
  licenses: []