githu3 0.0.3 → 0.0.4

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.
Files changed (77) hide show
  1. data/README.md +179 -0
  2. data/bin/githu3 +7 -0
  3. data/lib/faraday/response/parse_json.rb +22 -0
  4. data/lib/githu3/cache/disk.rb +43 -0
  5. data/lib/githu3/cache/redis.rb +35 -0
  6. data/lib/githu3/cache.rb +8 -0
  7. data/lib/githu3/cli.rb +25 -0
  8. data/lib/githu3/client.rb +46 -30
  9. data/lib/githu3/comment.rb +15 -0
  10. data/lib/githu3/commit.rb +13 -0
  11. data/lib/githu3/connection.rb +47 -0
  12. data/lib/githu3/core_ext/hash.rb +18 -0
  13. data/lib/githu3/download.rb +4 -0
  14. data/lib/githu3/event.rb +6 -0
  15. data/lib/githu3/git_commit.rb +5 -0
  16. data/lib/githu3/issue.rb +10 -1
  17. data/lib/githu3/org.rb +1 -1
  18. data/lib/githu3/pull.rb +9 -0
  19. data/lib/githu3/ref.rb +9 -0
  20. data/lib/githu3/relations.rb +22 -2
  21. data/lib/githu3/repo.rb +14 -4
  22. data/lib/githu3/resource.rb +19 -4
  23. data/lib/githu3/resource_collection.rb +26 -9
  24. data/lib/githu3/store.rb +2 -2
  25. data/lib/githu3/team.rb +4 -0
  26. data/lib/githu3/tree.rb +4 -0
  27. data/lib/githu3/user.rb +5 -0
  28. data/lib/githu3/version.rb +1 -1
  29. data/lib/githu3.rb +23 -1
  30. metadata +94 -119
  31. data/.autotest +0 -3
  32. data/.document +0 -5
  33. data/.gitignore +0 -22
  34. data/.rspec +0 -4
  35. data/.travis.yml +0 -6
  36. data/Gemfile +0 -16
  37. data/Rakefile +0 -16
  38. data/githu3.gemspec +0 -34
  39. data/spec/fixtures/all_repos.json +0 -54
  40. data/spec/fixtures/error.json +0 -1
  41. data/spec/fixtures/issues/comments.json +0 -41
  42. data/spec/fixtures/issues/event.json +0 -12
  43. data/spec/fixtures/issues/events.json +0 -14
  44. data/spec/fixtures/me.json +0 -31
  45. data/spec/fixtures/orgs/github.json +0 -18
  46. data/spec/fixtures/orgs/rails.json +0 -18
  47. data/spec/fixtures/orgs.json +0 -14
  48. data/spec/fixtures/public_repos.json +0 -132
  49. data/spec/fixtures/repos/branches.json +0 -23
  50. data/spec/fixtures/repos/contributors.json +0 -58
  51. data/spec/fixtures/repos/faraday.json +0 -31
  52. data/spec/fixtures/repos/issue.json +0 -53
  53. data/spec/fixtures/repos/issues.json +0 -55
  54. data/spec/fixtures/repos/label.json +0 -5
  55. data/spec/fixtures/repos/labels.json +0 -7
  56. data/spec/fixtures/repos/milestone.json +0 -17
  57. data/spec/fixtures/repos/milestones.json +0 -19
  58. data/spec/fixtures/repos/tags.json +0 -164
  59. data/spec/fixtures/repos/teams.json +0 -17
  60. data/spec/fixtures/teams/1.json +0 -8
  61. data/spec/fixtures/teams/members.json +0 -8
  62. data/spec/fixtures/teams/repos.json +0 -28
  63. data/spec/fixtures/users/followers.json +0 -80
  64. data/spec/fixtures/users/following.json +0 -182
  65. data/spec/fixtures/users/orgs.json +0 -8
  66. data/spec/fixtures/users/repos.json +0 -132
  67. data/spec/fixtures/users/sbellity.json +0 -20
  68. data/spec/githu3/client_spec.rb +0 -66
  69. data/spec/githu3/error_spec.rb +0 -0
  70. data/spec/githu3/issue_spec.rb +0 -54
  71. data/spec/githu3/org_spec.rb +0 -79
  72. data/spec/githu3/repo_spec.rb +0 -100
  73. data/spec/githu3/resource_collection_spec.rb +0 -64
  74. data/spec/githu3/team_spec.rb +0 -47
  75. data/spec/githu3/user_spec.rb +0 -47
  76. data/spec/githu3_spec.rb +0 -7
  77. data/spec/helper.rb +0 -21
@@ -1,20 +0,0 @@
1
- {
2
- "type": "User",
3
- "url": "https://api.github.com/users/sbellity",
4
- "avatar_url": "https://secure.gravatar.com/avatar/9abf3d284748357bb044d3386796ecd6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
5
- "login": "sbellity",
6
- "blog": null,
7
- "hireable": false,
8
- "following": 53,
9
- "created_at": "2008-04-02T18:24:06Z",
10
- "email": "sbellity@gmail.com",
11
- "public_gists": 3,
12
- "followers": 13,
13
- "html_url": "https://github.com/sbellity",
14
- "name": "Stephane Bellity",
15
- "company": null,
16
- "bio": null,
17
- "location": "Paris, France",
18
- "id": 4250,
19
- "public_repos": 19
20
- }
@@ -1,66 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::Client do
4
-
5
- before do
6
- @client = Githu3::Client.new("myvalidtoken")
7
- end
8
-
9
- describe "Getting my stuff..." do
10
- it "should be true if method exists" do
11
- defined?(Githu3::VERSION).should be_true
12
- end
13
-
14
-
15
- it 'should be oauthed as me...' do
16
- stub_get "/user", "me"
17
- @client.me.login.should == 'sbellity'
18
- end
19
-
20
- it 'should retreive rails org' do
21
- stub_get "/orgs/rails", "orgs/rails"
22
- @client.org('rails').login.should == 'rails'
23
- end
24
-
25
- it 'should retreive my orgs' do
26
- stub_get "/user/orgs", "orgs"
27
- @client.orgs.length.should == 2
28
- @client.orgs.first.login.should == "nuvoli"
29
- end
30
-
31
- it 'should retrieve all my repos' do
32
- stub_get "/user/repos", "all_repos"
33
- @client.repos.length.should == 2
34
- @client.repos.first.name.should == "brm-ruby-logger"
35
- @client.repos.first.private.should == true
36
- end
37
-
38
- it 'should retrieve all my public repos' do
39
- stub_get "/user/repos?type=public", "public_repos"
40
- @client.repos(:type => "public").length.should == 5
41
- @client.repos(:type => "public").first.name.should == "futon4mongo"
42
- end
43
-
44
- it 'should tell me if i am following someone else...' do
45
- stub_request(:get, "#{Githu3::Client::BaseUrl}/user/following/billevans").to_return(:status => 204)
46
- @client.following?('billevans').should be_true
47
- end
48
-
49
- it 'should tell me if i am NOT following someone else...' do
50
- stub_request(:get, "#{Githu3::Client::BaseUrl}/user/following/mildesdavis").to_return(:status => 404)
51
- @client.following?('mildesdavis').should be_false
52
- end
53
-
54
- it "should list my followers" do
55
- stub_get "/user/followers", "users/followers"
56
- @client.followers.length.should == 13
57
- end
58
-
59
- it "should list my following" do
60
- stub_get "/user/following", "users/following"
61
- @client.following.length.should == 30
62
- end
63
-
64
- end
65
-
66
- end
File without changes
@@ -1,54 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::Issue do
4
-
5
- def repo
6
- stub_get "/repos/technoweenie/faraday", "repos/faraday"
7
- @client.repo("technoweenie/faraday")
8
- end
9
-
10
- def issue
11
- stub_get "/repos/technoweenie/faraday/issues/1", "repos/issue"
12
- repo.issues("1")
13
- end
14
-
15
- before do
16
- @client = Githu3::Client.new("myvalidtoken")
17
- end
18
-
19
-
20
- describe "Issue Events" do
21
- it "should fetch an issue's events" do
22
- stub_get "/repos/technoweenie/faraday/issues/1/events", "issues/events"
23
- issue.events.length.should == 1
24
- end
25
-
26
- it 'should Get a single event' do
27
- stub_get "/repos/technoweenie/faraday/issues/1/events/1", "issues/event"
28
- issue.events('1').event.should == "closed"
29
- end
30
- end
31
-
32
- describe "Issue Comments" do
33
- it "should get a comments list for the issue" do
34
- stub_get "/repos/technoweenie/faraday/issues/1/comments", "issues/comments"
35
- issue.comments.length.should == 3
36
- end
37
-
38
- it "should get a single comment" do
39
- # TODO... check if github updates the route...
40
- pending("Waiting for a relpy's from github's team on the route...")
41
- end
42
- end
43
-
44
- describe "Issue labels" do
45
- it "should list its labels" do
46
- stub_get "/repos/technoweenie/faraday/issues/1/labels", "repos/labels"
47
- issue.labels.length.should == 1
48
- end
49
-
50
-
51
- end
52
-
53
-
54
- end
@@ -1,79 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::Org do
4
-
5
- def github
6
- stub_get "/orgs/github", "/orgs/github"
7
- @client.org "github"
8
- end
9
-
10
- before do
11
- @client = Githu3::Client.new("myvalidtoken")
12
- end
13
-
14
- it "should get its name right" do
15
- github.name.should == "GitHub"
16
- end
17
-
18
- describe "Getting an org's members..." do
19
-
20
- it "should get its members" do
21
- stub_get "/orgs/github/members", "teams/members"
22
- github.members.length.should == 1
23
- github.members.first.login.should == "octocat"
24
- end
25
-
26
- it 'should tell me if a user IS a member of the team' do
27
- stub_request(:get, "#{Githu3::Client::BaseUrl}/orgs/github/members/octocat").to_return(:status => 204)
28
- github.member?('octocat').should be_true
29
- end
30
-
31
- it 'should tell me if a user IS NOT a member of the org' do
32
- stub_request(:get, "#{Githu3::Client::BaseUrl}/orgs/github/members/billevans").to_return(:status => 404)
33
- github.member?('billevans').should be_false
34
- end
35
-
36
- it "should get its teams" do
37
- stub_get "/orgs/github/teams", "repos/teams"
38
- github.teams.length.should == 3
39
- github.teams.first.name.should == "Developers"
40
- end
41
-
42
- end
43
-
44
- describe "Getting an org's public_members..." do
45
-
46
- it "should get its public_members" do
47
- stub_get "/orgs/github/public_members", "teams/members"
48
- github.public_members.length.should == 1
49
- github.public_members.first.login.should == "octocat"
50
- end
51
-
52
- it 'should tell me if a user IS a public_member of the team' do
53
- stub_request(:get, "#{Githu3::Client::BaseUrl}/orgs/github/public_members/octocat").to_return(:status => 204)
54
- github.public_member?('octocat').should be_true
55
- end
56
-
57
- it 'should tell me if a user IS NOT a public_member of the team' do
58
- stub_request(:get, "#{Githu3::Client::BaseUrl}/orgs/github/public_members/billevans").to_return(:status => 404)
59
- github.public_member?('billevans').should be_false
60
- end
61
- end
62
-
63
- describe "Getting the org's repos" do
64
-
65
- it "should get its repos" do
66
- stub_get "/orgs/github/repos", "all_repos"
67
- github.repos.length.should == 2
68
- end
69
-
70
- it "should get its public repos" do
71
- stub_get "/orgs/github/repos?type=public", "public_repos"
72
- github.repos(:type => "public").length.should == 5
73
- end
74
-
75
-
76
- end
77
-
78
-
79
- end
@@ -1,100 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::Repo do
4
-
5
- def faraday
6
- stub_get "/repos/technoweenie/faraday", "repos/faraday"
7
- @client.repo("technoweenie/faraday")
8
- end
9
-
10
- before do
11
- @client = Githu3::Client.new("myvalidtoken")
12
- end
13
-
14
- describe "Getting a repo's stuff..." do
15
-
16
- it "should get the repo infos" do
17
- faraday.name.should == "faraday"
18
- faraday.owner['login'].should == "technoweenie"
19
- end
20
-
21
- it "should fetch its contributors" do
22
- stub_get "/repos/technoweenie/faraday/contributors", "repos/contributors"
23
- faraday.contributors.length.should == 8
24
- faraday.contributors.first.login.should == "technoweenie"
25
- end
26
-
27
- it "should fetch its teams" do
28
- stub_get "/repos/technoweenie/faraday/teams", "repos/teams"
29
- teams = faraday.teams
30
- teams.length.should == 3
31
- teams.first.name.should == "Developers"
32
- end
33
-
34
- end
35
-
36
- describe "Getting a repo's refs" do
37
-
38
- it "should fetch its tags" do
39
- stub_get "/repos/technoweenie/faraday/tags", "repos/tags"
40
- tags = faraday.tags
41
- tags.length.should == 18
42
- tags.first.name.should == "v0.5.6"
43
- end
44
-
45
- it "should fetch its branches" do
46
- stub_get "/repos/technoweenie/faraday/branches", "repos/branches"
47
- branches = faraday.branches
48
- branches.length.should == 3
49
- branches.first.name.should == "master"
50
- end
51
-
52
- end
53
-
54
- describe "Wokring with its issues..." do
55
-
56
- it "should list its issues" do
57
- stub_get "/repos/technoweenie/faraday/issues", "repos/issues"
58
- faraday.issues.length.should == 1
59
- end
60
-
61
- it "should filter its issues" do
62
- stub_get "/repos/technoweenie/faraday/issues?state=open&labels=bug,feature", "repos/issues"
63
- faraday.issues(:state => "open", :labels => "bug,feature").length.should == 1
64
- end
65
-
66
- it "should fetch a single issue" do
67
- stub_get "/repos/technoweenie/faraday/issues/1", "repos/issue"
68
- faraday.issues("1").state.should == "open"
69
- end
70
-
71
- it "should list its issues" do
72
- stub_get "/repos/technoweenie/faraday/issues/events", "issues/events"
73
- faraday.events.length.should == 1
74
- end
75
-
76
- it "should list its labels" do
77
- stub_get "/repos/technoweenie/faraday/labels", "repos/labels"
78
- faraday.labels.length.should == 1
79
- faraday.labels.first.name.should == "bug"
80
- end
81
-
82
- it "should get a single labels" do
83
- stub_get "/repos/technoweenie/faraday/labels/bug", "repos/label"
84
- faraday.labels("bug").name.should == "bug"
85
- end
86
-
87
- it "should list its milestones" do
88
- stub_get "/repos/technoweenie/faraday/milestones", "repos/milestones"
89
- faraday.milestones.length.should == 1
90
- faraday.milestones.first.title.should == "v1.0"
91
- end
92
-
93
- it "should get a single milestone" do
94
- stub_get "/repos/technoweenie/faraday/milestones/1", "repos/milestone"
95
- faraday.milestones("1").title.should == "v1.0"
96
- end
97
-
98
- end
99
-
100
- end
@@ -1,64 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::ResourceCollection do
4
-
5
- def collection
6
- stub_get "/user/orgs", "orgs"
7
- Githu3::ResourceCollection.new(@client, Githu3::Org, "/user/orgs")
8
- end
9
-
10
- before do
11
- @client = Githu3::Client.new("myvalidtoken")
12
- end
13
-
14
- describe "Enumerable behaviour" do
15
-
16
- it "sould forward enumerable methods to @resource" do
17
- collection.length.should == 2
18
- collection.map { |o| o.login }.sort.should == ['nuvoli', 'sixdegrees']
19
- end
20
-
21
- end
22
-
23
- describe "Pagination" do
24
-
25
- it "should paginate correctly" do
26
- stub_get "/user/repos?type=public", "public_repos"
27
- public_repos = Githu3::ResourceCollection.new(@client, Githu3::Org, "/user/repos", :type => "public")
28
- public_repos.length.should == 5
29
- end
30
-
31
- it "should set pagination options correctly" do
32
- stub_get "/user/repos?per_page=5&type=public", "public_repos"
33
- paginated = Githu3::ResourceCollection.new(@client, Githu3::Org, "/user/repos", :type => "public", :per_page => 5)
34
- paginated.length.should == 5
35
- end
36
-
37
- it "should correctly set pagination info" do
38
- link_header = <<-EOL
39
- <https://api.github.com/resource?page=2>; rel="next",
40
- <https://api.github.com/resource?page=5>; rel="last"
41
- EOL
42
-
43
- stub_request(:get, "https://api.github.com/user/repos?page=1&per_page=5&type=public").
44
- to_return(:headers => { "Link" => link_header })
45
-
46
- paginated = Githu3::ResourceCollection.new(@client, Githu3::Org, "/user/repos", :type => "public", :per_page => 5, :page => 1)
47
- paginated.pagination["next"].should == 2
48
- paginated.pagination["last"].should == 5
49
- end
50
-
51
- end
52
-
53
- describe "Error Handling" do
54
-
55
- it "should record an error... it one occurs" do
56
- stub_request(:get, "#{Githu3::Client::BaseUrl}/user/repos").to_return(:status => 401, :body => fixture('error.json'))
57
- lambda {
58
- Githu3::ResourceCollection.new(@client, Githu3::Org, "/user/repos")
59
- }.should raise_error(Githu3::Unauthorized)
60
- end
61
-
62
- end
63
-
64
- end
@@ -1,47 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::Team do
4
-
5
- def team
6
- stub_get "/teams/1", "teams/1"
7
- @client.team "1"
8
- end
9
-
10
-
11
- before do
12
- @client = Githu3::Client.new("myvalidtoken")
13
- end
14
-
15
- it "should get its name right" do
16
- team.name.should == "Owners"
17
- end
18
-
19
- describe "Getting the team's members..." do
20
-
21
- it "should get its members" do
22
- stub_get "/teams/1/members", "teams/members"
23
- team.members.length.should == 1
24
- team.members.first.login.should == "octocat"
25
- end
26
-
27
- it 'should tell me if a user IS a member of the team' do
28
- stub_request(:get, "#{Githu3::Client::BaseUrl}/teams/1/members/octocat").to_return(:status => 204)
29
- team.member?('octocat').should be_true
30
- end
31
-
32
- it 'should tell me if a user IS NOT a member of the team' do
33
- stub_request(:get, "#{Githu3::Client::BaseUrl}/teams/1/members/billevans").to_return(:status => 404)
34
- team.member?('billevans').should be_false
35
- end
36
- end
37
-
38
- describe "Getting the team's repos..." do
39
-
40
- it "should list the team's repos" do
41
- stub_get "/teams/1/repos", "teams/repos"
42
- team.repos.length.should == 1
43
- end
44
-
45
- end
46
-
47
- end
@@ -1,47 +0,0 @@
1
- require 'helper'
2
-
3
- describe Githu3::User do
4
-
5
- def sbellity
6
- stub_get "/users/sbellity", "users/sbellity"
7
- @client.user("sbellity")
8
- end
9
-
10
- before do
11
- @client = Githu3::Client.new("myvalidtoken")
12
- end
13
-
14
- describe "Getting a users's stuff..." do
15
-
16
- it "should get a user's infos" do
17
- sbellity.login.should == "sbellity"
18
- end
19
-
20
- it "should get the user's public repos" do
21
- stub_get "/users/sbellity/repos", "users/repos"
22
- sbellity.repos.length.should == 5
23
- end
24
-
25
- it "should get the user's member repos" do
26
- stub_get "/users/sbellity/repos?type=member", "users/repos"
27
- sbellity.repos(:type => 'member').length.should == 5
28
- end
29
-
30
- it "should get the user's public orgs" do
31
- stub_get "/users/sbellity/orgs", "users/orgs"
32
- sbellity.orgs.length.should == 1
33
- sbellity.orgs.first.login.should == "sixdegrees"
34
- end
35
-
36
- it "should get the user's followers" do
37
- stub_get "/users/sbellity/followers", "users/followers"
38
- sbellity.followers.length.should == 13
39
- end
40
-
41
- it "should get the user's following" do
42
- stub_get "/users/sbellity/following", "users/following"
43
- sbellity.following.length.should == 30
44
- end
45
-
46
- end
47
- end
data/spec/githu3_spec.rb DELETED
@@ -1,7 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require 'helper'
3
-
4
- describe Githu3 do
5
-
6
-
7
- end
data/spec/helper.rb DELETED
@@ -1,21 +0,0 @@
1
- $:.unshift File.expand_path('..', __FILE__)
2
- $:.unshift File.expand_path('../../lib', __FILE__)
3
- require 'simplecov'
4
- SimpleCov.start
5
- require 'githu3'
6
- require 'rspec'
7
- require 'webmock/rspec'
8
-
9
- def fixture_path
10
- File.expand_path("../fixtures", __FILE__)
11
- end
12
-
13
- def fixture(file)
14
- File.new(fixture_path + '/' + file)
15
- end
16
-
17
- def stub_get url, fixture_name, headers={ 'Authorization'=>'token myvalidtoken' }
18
- stub_request(:get, "#{Githu3::Client::BaseUrl}#{url}").
19
- with(:headers => headers).
20
- to_return(:status => 200, :body => fixture("#{fixture_name}.json"))
21
- end