gitnetworkitis 0.2.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +6 -5
- data/Gemfile.lock +26 -20
- data/VERSION +1 -1
- data/get_token.rb +40 -0
- data/gitnetworkitis.gemspec +41 -76
- data/lib/gitnetworkitis/base.rb +10 -40
- data/lib/gitnetworkitis/batch_response.rb +24 -0
- data/lib/gitnetworkitis/branch.rb +10 -31
- data/lib/gitnetworkitis/commit.rb +2 -5
- data/lib/gitnetworkitis/commit_getter.rb +50 -0
- data/lib/gitnetworkitis/getter.rb +64 -0
- data/lib/gitnetworkitis/json_helper.rb +24 -0
- data/lib/gitnetworkitis/repository.rb +11 -30
- data/lib/gitnetworkitis.rb +10 -5
- data/spec/base_spec.rb +13 -20
- data/spec/branch_spec.rb +63 -19
- data/spec/getter_spec.rb +36 -0
- data/spec/github_config.yml.example +2 -0
- data/spec/repository_spec.rb +27 -39
- data/spec/spec_helper.rb +3 -64
- data/spec/support/vcr_setup.rb +8 -0
- data/spec/vcr_cassettes/all_branches.json +67 -0
- data/spec/vcr_cassettes/all_repos.json +67 -0
- data/spec/vcr_cassettes/bad_creds.json +58 -0
- data/spec/vcr_cassettes/find_repo.json +67 -0
- data/spec/vcr_cassettes/spec-branch-1_commits.json +2277 -0
- data/spec/vcr_cassettes/spec-branch-1_since_date.json +1 -0
- data/spec/vcr_cassettes/spec-branch-1_since_sha.json +67 -0
- data/spec/vcr_cassettes/spec-branch-2_commits.json +70 -0
- data/spec/vcr_cassettes/spec-branch-3_commits.json +67 -0
- metadata +84 -124
- data/lib/gitnetworkitis/network_data.rb +0 -66
- data/lib/gitnetworkitis/network_meta.rb +0 -17
- data/spec/commit_spec.rb +0 -8
- data/spec/network_data_spec.rb +0 -153
- data/spec/network_meta_spec.rb +0 -59
- data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=0.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=1.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=2.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=3.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=4.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=5.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=0.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=1.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=2.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=3.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=4.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=0.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=1.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=2.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=3.json +0 -1
- data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=4.json +0 -1
- data/spec/responses/girlambition/0-500.json +0 -1
- data/spec/responses/girlambition/1002-1502.json +0 -1
- data/spec/responses/girlambition/1503-2003.json +0 -1
- data/spec/responses/girlambition/2004-2504.json +0 -1
- data/spec/responses/girlambition/2505-3005.json +0 -1
- data/spec/responses/girlambition/3006-3506.json +0 -1
- data/spec/responses/girlambition/3507-4007.json +0 -1
- data/spec/responses/girlambition/4008-4508.json +0 -1
- data/spec/responses/girlambition/4509-4999.json +0 -1
- data/spec/responses/girlambition/501-1001.json +0 -1
- data/spec/responses/girlambition/repos_show_turingstudio_website-girlambition_branches.json +0 -1
- data/spec/responses/girlambition/turingstudio_website-girlambition_network_meta.json +0 -1
- data/spec/responses/loupe/repos_show_turingstudio_loupe.json +0 -1
- data/spec/responses/loupe/repos_show_turingstudio_loupe_branches.json +0 -1
- data/spec/responses/loupe/turingstudio_loupe_068161e2c05a6b8029a7eb410dd27b1dfa531338?start=1&end=5.json +0 -1
- data/spec/responses/loupe/turingstudio_loupe_068161e2c05a6b8029a7eb410dd27b1dfa531338?start=130.json +0 -1
- data/spec/responses/loupe/turingstudio_loupe_branch.json +0 -1
- data/spec/responses/loupe/turingstudio_loupe_network_data.json +0 -1
- data/spec/responses/loupe/turingstudio_loupe_network_meta.json +0 -1
- data/spec/responses/repos_show_jcoutu.json +0 -1
- data/spec/responses/repos_watched_jcoutu.json +0 -1
data/spec/base_spec.rb
CHANGED
@@ -1,46 +1,39 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe GitNetworkitis::Base do
|
4
|
+
let(:base_class) { GitNetworkitis::Base.new(@token) }
|
5
|
+
let(:success_response) { double(:response => double(:code => "200")) }
|
6
|
+
let(:failure_response) { double(:response => double(:code => "404")) }
|
4
7
|
|
5
8
|
context "#initialize" do
|
6
|
-
it "should allow for
|
7
|
-
c = GitNetworkitis::Base.new("
|
8
|
-
c.username.should == "jcoutu"
|
9
|
+
it "should allow for the OAuth 2 access token to be set on init" do
|
10
|
+
c = GitNetworkitis::Base.new("0ea98987469a2ef1daee5d1e30b42fd8")
|
9
11
|
c.token.should == "0ea98987469a2ef1daee5d1e30b42fd8"
|
10
12
|
end
|
11
13
|
end
|
12
|
-
|
13
|
-
context "#get" do
|
14
|
-
let(:base_class){GitNetworkitis::Base.new("jcoutu", "0ea98987469a2ef1daee5d1e30b42fd8")}
|
15
|
-
let(:success_response){double(:response => double(:code=>"200"))}
|
16
|
-
let(:failure_response){double(:response => double(:code=>"404"))}
|
17
14
|
|
15
|
+
context "#get" do
|
18
16
|
it "should return the response when successful" do
|
19
|
-
|
17
|
+
GitNetworkitis::Getter.should_receive(:get).and_return success_response
|
20
18
|
t = base_class.get("http://google.com")
|
21
19
|
t.should == success_response
|
22
20
|
end
|
23
21
|
|
24
22
|
it "should raise an exception when unsuccessful" do
|
25
|
-
|
26
|
-
lambda {base_class.get("http://google.com")}.should raise_error "Unable to find Github Repository"
|
23
|
+
GitNetworkitis::Getter.should_receive(:get).and_return failure_response
|
24
|
+
lambda { base_class.get("http://google.com") }.should raise_error "Unable to find Github Repository"
|
27
25
|
end
|
28
26
|
|
29
27
|
end
|
30
|
-
|
31
|
-
context "#parse_json" do
|
32
|
-
|
33
|
-
let(:base_class){GitNetworkitis::Base.new("jcoutu", "0ea98987469a2ef1daee5d1e30b42fd8")}
|
34
|
-
let(:success_response){double(:response => double(:code=>"200"))}
|
35
|
-
let(:failure_response){double(:response => double(:code=>"404"))}
|
36
28
|
|
29
|
+
context "#parse_json" do
|
37
30
|
it "should return the response when successful" do
|
38
31
|
t = base_class.parse_json('{"test":"test"}')
|
39
32
|
t["test"].should == "test"
|
40
33
|
end
|
41
34
|
|
42
35
|
it "should raise an exception when unsuccessful" do
|
43
|
-
lambda {base_class.parse_json("http://google.com")}.should raise_error "Unable to parse JSON result"
|
36
|
+
lambda { base_class.parse_json("http://google.com") }.should raise_error "Unable to parse JSON result"
|
44
37
|
end
|
45
38
|
end
|
46
|
-
end
|
39
|
+
end
|
data/spec/branch_spec.rb
CHANGED
@@ -1,31 +1,75 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
describe "Gitnetworkitis::Branch" do
|
4
|
+
let(:branch) { GitNetworkitis::Branch.new(@token) }
|
5
|
+
let(:branches) { branch.find_all({:owner => "jcoutu", :repo => "gitnetworkitis"}) }
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
+
context "#find_all" do
|
8
|
+
it "should return a collection of branches for a specific repo" do
|
9
|
+
VCR.use_cassette("all_branches") do
|
10
|
+
branches.should_not be_empty
|
11
|
+
branches.select {|b| b.name == "master" }.size.should == 1
|
12
|
+
branches.select {|b| b.name == "spec-branch-1" }.size.should == 1
|
13
|
+
branches.select {|b| b.name == "spec-branch-2" }.size.should == 1
|
14
|
+
branches.select {|b| b.name == "spec-branch-3" }.size.should == 1
|
15
|
+
end
|
16
|
+
end
|
7
17
|
end
|
8
18
|
|
9
|
-
context "
|
10
|
-
|
11
|
-
let(:test){branch.find_all({:owner=>"turingstudio", :repo => "loupe", :nethash => "068161e2c05a6b8029a7eb410dd27b1dfa531338"})}
|
19
|
+
context "#commits" do
|
20
|
+
attr_reader :spec_branch_1, :spec_branch_2, :spec_branch_3
|
12
21
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
22
|
+
before :each do
|
23
|
+
@spec_branch_1, @spec_branch_2, @spec_branch_3 = nil
|
24
|
+
|
25
|
+
VCR.use_cassette("all_branches") do
|
26
|
+
@spec_branch_1 = branches.detect {|b| b.name == "spec-branch-1" }
|
27
|
+
@spec_branch_2 = branches.detect {|b| b.name == "spec-branch-2" }
|
28
|
+
@spec_branch_3 = branches.detect {|b| b.name == "spec-branch-3" }
|
29
|
+
end
|
17
30
|
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "commits" do
|
21
|
-
let(:branch){GitNetworkitis::Branch.new(@username, @token)}
|
22
|
-
let(:test){branch.find_all({:owner=>"turingstudio", :repo => "loupe", :nethash => "068161e2c05a6b8029a7eb410dd27b1dfa531338"})}
|
23
31
|
|
24
32
|
it "should return an array of commits for the branch" do
|
25
|
-
|
26
|
-
|
27
|
-
|
33
|
+
VCR.use_cassette("spec-branch-1_commits", :record => :new_episodes) do
|
34
|
+
commits = spec_branch_1.commits(batch: true, per_page: 15)
|
35
|
+
commits.length.should == 43
|
36
|
+
commits.first.message.should == "modifies test file so that there's something to commit"
|
37
|
+
end
|
38
|
+
|
39
|
+
VCR.use_cassette("spec-branch-2_commits", :record => :new_episodes) do
|
40
|
+
commits = spec_branch_2.commits(batch: false, per_page: 15)
|
41
|
+
commits.length.should == 15
|
42
|
+
commits.first.message.should == "adds otro test file"
|
43
|
+
end
|
44
|
+
|
45
|
+
VCR.use_cassette("spec-branch-3_commits") do
|
46
|
+
commits = spec_branch_3.commits
|
47
|
+
commits.length.should == 41
|
48
|
+
commits.first.message.should == "adds VCR for saner handling of responses in specs, converts Base and Repository to Github API v3 and OAuth 2"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should return only commits since a certain SHA if one is specified" do
|
53
|
+
VCR.use_cassette("spec-branch-1_since_sha") do
|
54
|
+
commits = spec_branch_1.commits(since: '8e6f9227f646bfe17d296cf418f2ba5ccdca4b48')
|
55
|
+
commits.length.should == 2
|
56
|
+
commits.first.message.should == "modifies test file so that there's something to commit"
|
57
|
+
commits.last.message.should == "adds test file"
|
58
|
+
commits.map(&:sha).should_not include("8e6f9227f646bfe17d296cf418f2ba5ccdca4b48")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return only commits since a certain date/time if one is specified" do
|
63
|
+
VCR.use_cassette("spec-branch-1_since_date") do
|
64
|
+
commits = spec_branch_1.commits(since: '2012-04-06T14:14:59-07:00')
|
65
|
+
commits.length.should == 3
|
66
|
+
commit_shas = commits.map(&:sha)
|
67
|
+
commit_shas.should include('3d68c13854c8898f8817e2cc60757c41c72ec1de')
|
68
|
+
commit_shas.should include('b1907bcca525cb5fcacaa492b828126d0c8cc91c')
|
69
|
+
commit_shas.should include('8e6f9227f646bfe17d296cf418f2ba5ccdca4b48')
|
70
|
+
commit_shas.should_not include('ce44c956380073a04ef28eee76b4dc0749d4fa6e')
|
71
|
+
end
|
28
72
|
end
|
29
|
-
|
30
73
|
end
|
31
|
-
|
74
|
+
|
75
|
+
end
|
data/spec/getter_spec.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GitNetworkitis::Getter do
|
4
|
+
|
5
|
+
describe ".initialize" do
|
6
|
+
it "should separate local options from query options" do
|
7
|
+
getter = GitNetworkitis::Getter.new('url',
|
8
|
+
access_token: "token",
|
9
|
+
per_page: 100,
|
10
|
+
batch: true,
|
11
|
+
branch: 'branch',
|
12
|
+
since: 'sha')
|
13
|
+
getter.local_options.should == {batch: true, branch: 'branch', since: 'sha'}
|
14
|
+
getter.query_options.should == {access_token: "token", per_page: 100}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#get" do
|
19
|
+
it "should default the per_page option to 100" do
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should perform a regular GET when no batch nor since options are set" do
|
24
|
+
getter = GitNetworkitis::Getter.new('url', access_token: 'token')
|
25
|
+
getter.should_receive(:single_get)
|
26
|
+
getter.get
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should perform a batched GET when batch is true and since isn't set" do
|
30
|
+
getter = GitNetworkitis::Getter.new('url', access_token: 'token', batch: true)
|
31
|
+
getter.should_receive(:batched_get)
|
32
|
+
getter.get
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/spec/repository_spec.rb
CHANGED
@@ -1,56 +1,44 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
describe "Gitnetworkitis::Repository" do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
it "should
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
let(:repo) { GitNetworkitis::Repository.new(@token) }
|
5
|
+
let(:test_repos) { @test_repos }
|
6
|
+
|
7
|
+
context "#find_all" do
|
8
|
+
#NOTE #find_all_watched and #find_all_owned swallowed the error and returned an empty
|
9
|
+
# array instead. Should that happen here, instead?
|
10
|
+
it "should fail if no credentials are found" do
|
11
|
+
VCR.use_cassette("bad_creds") do
|
12
|
+
repo = GitNetworkitis::Repository.new "bad creds"
|
13
|
+
expect { repo.find_all }.to raise_error("Unable to find Github Repository")
|
14
|
+
end
|
14
15
|
end
|
15
16
|
|
16
|
-
it "should
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "#find_all_owned" do
|
25
|
-
it "should return an empty array if no credentials are found" do
|
26
|
-
c = GitNetworkitis::Repository.new(nil, nil)
|
27
|
-
repos = c.find_all_owned
|
28
|
-
repos.length.should == 0
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should list a users repositories" do
|
32
|
-
c = GitNetworkitis::Repository.new(@username, @token)
|
33
|
-
repos = c.find_all_owned
|
34
|
-
repos.should_not be_empty
|
35
|
-
repos.length.should == 1
|
17
|
+
it "should find all repositories for the user by default" do
|
18
|
+
VCR.use_cassette("all_repos") do
|
19
|
+
repo_names = repo.find_all.map(&:name)
|
20
|
+
test_repos.each {|tr| repo_names.should include(tr) }
|
21
|
+
end
|
36
22
|
end
|
37
23
|
end
|
38
24
|
|
39
25
|
context "#find" do
|
40
26
|
it "should allow a user to search for a repo based on owner and repo name" do
|
41
|
-
|
42
|
-
|
43
|
-
|
27
|
+
VCR.use_cassette("find_repo") do
|
28
|
+
found_repo = repo.find({:owner=>"jcoutu", :repo => "gitnetworkitis"})
|
29
|
+
found_repo.owner['login'].should == "jcoutu"
|
30
|
+
found_repo.name.should == "gitnetworkitis"
|
31
|
+
end
|
44
32
|
end
|
45
33
|
end
|
46
|
-
|
34
|
+
|
47
35
|
context "#remote_id" do
|
48
36
|
it "should set the remote_id to owner/name" do
|
49
|
-
|
50
|
-
|
51
|
-
|
37
|
+
VCR.use_cassette("find_repo") do
|
38
|
+
found_repo = repo.find({:owner=>"jcoutu", :repo => "gitnetworkitis"})
|
39
|
+
found_repo.remote_id.should == "jcoutu/gitnetworkitis"
|
40
|
+
end
|
52
41
|
end
|
53
|
-
|
54
42
|
end
|
55
43
|
|
56
|
-
end
|
44
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,69 +10,8 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
|
10
10
|
|
11
11
|
RSpec.configure do |config|
|
12
12
|
config.before(:each) {
|
13
|
-
#Github
|
14
|
-
|
15
|
-
|
16
|
-
#Github Toekn
|
17
|
-
@token = "0ea98987469a2ef1daee5d1e30b42fd8"
|
18
|
-
|
19
|
-
#This will tell the tests to use fakeweb responses or not. Removing this will mostly likely cause test failures
|
20
|
-
@fake_web_requests = true
|
21
|
-
|
13
|
+
#Github OAuth 2 Access Token
|
14
|
+
github_config = YAML.load_file(File.join(File.dirname(__FILE__), "github_config.yml"))
|
15
|
+
@token, @test_repos = github_config['access_token'], github_config['test_repos']
|
22
16
|
}
|
23
17
|
end
|
24
|
-
|
25
|
-
|
26
|
-
def response_file(*path)
|
27
|
-
File.join(File.dirname(__FILE__), "responses", path)
|
28
|
-
end
|
29
|
-
|
30
|
-
def fake_responses
|
31
|
-
if @fake_web_requests
|
32
|
-
FakeWeb.allow_net_connect = true
|
33
|
-
FakeWeb.clean_registry
|
34
|
-
auth = "#{@username}%2Ftoken:#{@token}@"
|
35
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/repos/watched/jcoutu", :body => response_file('repos_watched_jcoutu.json'))
|
36
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/repos/show/jcoutu", :body => response_file('repos_show_jcoutu.json'))
|
37
|
-
|
38
|
-
#Loupe Responses
|
39
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/repos/show/turingstudio/loupe", :body => response_file('loupe/repos_show_turingstudio_loupe.json'))
|
40
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/loupe/network_meta", :body => response_file('loupe/turingstudio_loupe_network_meta.json'))
|
41
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/loupe/network_data_chunk?nethash=068161e2c05a6b8029a7eb410dd27b1dfa531338&start=0&end=133", :body => response_file('loupe/turingstudio_loupe_network_data.json'))
|
42
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/repos/show/turingstudio/loupe/branches", :body => response_file('loupe/repos_show_turingstudio_loupe_branches.json'))
|
43
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/loupe/network_data_chunk?nethash=068161e2c05a6b8029a7eb410dd27b1dfa531338&start=130&end=133", :body => response_file('loupe/turingstudio_loupe_068161e2c05a6b8029a7eb410dd27b1dfa531338?start=130.json'))
|
44
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/loupe/network_data_chunk?nethash=068161e2c05a6b8029a7eb410dd27b1dfa531338&start=1&end=5", :body => response_file('loupe/turingstudio_loupe_068161e2c05a6b8029a7eb410dd27b1dfa531338?start=1&end=5.json'))
|
45
|
-
|
46
|
-
#Girl-Ambition Responses
|
47
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_meta", :body => response_file('girlambition/turingstudio_website-girlambition_network_meta.json'))
|
48
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/repos/show/turingstudio/website-girlambition/branches", :body => response_file('girlambition/repos_show_turingstudio_website-girlambition_branches.json'))
|
49
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=0&end=500", :body => response_file('girlambition/0-500.json'), :content_length => 1)
|
50
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=501&end=1001", :body => response_file('girlambition/501-1001.json'), :content_length => 1)
|
51
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=1002&end=1502", :body => response_file('girlambition/1002-1502.json'), :content_length => 1)
|
52
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=1503&end=2003", :body => response_file('girlambition/1503-2003.json'), :content_length => 1)
|
53
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=2004&end=2504", :body => response_file('girlambition/2004-2504.json'), :content_length => 1)
|
54
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=2505&end=3005", :body => response_file('girlambition/2505-3005.json'), :content_length => 1)
|
55
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=3006&end=3506", :body => response_file('girlambition/3006-3506.json'), :content_length => 1)
|
56
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=3507&end=4007", :body => response_file('girlambition/3507-4007.json'), :content_length => 1)
|
57
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=4008&end=4508", :body => response_file('girlambition/4008-4508.json'), :content_length => 1)
|
58
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/turingstudio/website-girlambition/network_data_chunk?nethash=0ead14b395f02f065083a6865dd06ede8b3153bc&start=4509&end=4999", :body => response_file('girlambition/4509-4999.json'), :content_length => 1)
|
59
|
-
|
60
|
-
#This needs to be refactored. It's dumb to do this!
|
61
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=0", :body => response_file('branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=0.json'))
|
62
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=1", :body => response_file('branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=1.json'))
|
63
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=2", :body => response_file('branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=2.json'))
|
64
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=3", :body => response_file('branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=3.json'))
|
65
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=4", :body => response_file('branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=4.json'))
|
66
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=5", :body => response_file('branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=5.json'))
|
67
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=0", :body => response_file('branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=0.json'))
|
68
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=1", :body => response_file('branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=1.json'))
|
69
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=2", :body => response_file('branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=2.json'))
|
70
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=3", :body => response_file('branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=3.json'))
|
71
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=4", :body => response_file('branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=4.json'))
|
72
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=0", :body => response_file('branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=0.json'))
|
73
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=1", :body => response_file('branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=1.json'))
|
74
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=2", :body => response_file('branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=2.json'))
|
75
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=3", :body => response_file('branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=3.json'))
|
76
|
-
FakeWeb.register_uri(:get, "https://#{auth}github.com/api/v2/json/commits/list/turingstudio/loupe/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=4", :body => response_file('branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=4.json'))
|
77
|
-
end
|
78
|
-
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
|
3
|
+
VCR.configure do |config|
|
4
|
+
config.cassette_library_dir = "spec/vcr_cassettes"
|
5
|
+
config.hook_into :fakeweb
|
6
|
+
config.default_cassette_options = { serialize_with: :json }
|
7
|
+
config.filter_sensitive_data('<ACCESS TOKEN>') { YAML.load_file(File.join(File.dirname(__FILE__), '../', 'github_config.yml'))['access_token'] }
|
8
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{
|
2
|
+
"http_interactions": [
|
3
|
+
{
|
4
|
+
"recorded_at": "Tue, 17 Apr 2012 15:12:15 GMT",
|
5
|
+
"request": {
|
6
|
+
"body": {
|
7
|
+
"encoding": "US-ASCII",
|
8
|
+
"string": ""
|
9
|
+
},
|
10
|
+
"headers": {
|
11
|
+
"connection": [
|
12
|
+
"close"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
"method": "get",
|
16
|
+
"uri": "https://api.github.com/repos/jcoutu/gitnetworkitis/branches?access_token=<ACCESS TOKEN>"
|
17
|
+
},
|
18
|
+
"response": {
|
19
|
+
"body": {
|
20
|
+
"encoding": "US-ASCII",
|
21
|
+
"string": "[{\"commit\":{\"url\":\"https://api.github.com/repos/jcoutu/gitnetworkitis/commits/3d68c13854c8898f8817e2cc60757c41c72ec1de\",\"sha\":\"3d68c13854c8898f8817e2cc60757c41c72ec1de\"},\"name\":\"spec-branch-1\"},{\"commit\":{\"url\":\"https://api.github.com/repos/jcoutu/gitnetworkitis/commits/6809600539c207aa2515db635085fd2b10c0ff91\",\"sha\":\"6809600539c207aa2515db635085fd2b10c0ff91\"},\"name\":\"master\"},{\"commit\":{\"url\":\"https://api.github.com/repos/jcoutu/gitnetworkitis/commits/72c84bde00c67616390ba7b3af29a5c029a2c8f5\",\"sha\":\"72c84bde00c67616390ba7b3af29a5c029a2c8f5\"},\"name\":\"spec-branch-2\"},{\"commit\":{\"url\":\"https://api.github.com/repos/jcoutu/gitnetworkitis/commits/8e6f9227f646bfe17d296cf418f2ba5ccdca4b48\",\"sha\":\"8e6f9227f646bfe17d296cf418f2ba5ccdca4b48\"},\"name\":\"spec-branch-3\"},{\"commit\":{\"url\":\"https://api.github.com/repos/jcoutu/gitnetworkitis/commits/caa9bccac6ad018acf1e8509be186479aa30adac\",\"sha\":\"caa9bccac6ad018acf1e8509be186479aa30adac\"},\"name\":\"v3\"}]"
|
22
|
+
},
|
23
|
+
"headers": {
|
24
|
+
"connection": [
|
25
|
+
"close"
|
26
|
+
],
|
27
|
+
"content-length": [
|
28
|
+
"948"
|
29
|
+
],
|
30
|
+
"content-type": [
|
31
|
+
"application/json; charset=utf-8"
|
32
|
+
],
|
33
|
+
"date": [
|
34
|
+
"Tue, 17 Apr 2012 15:12:15 GMT"
|
35
|
+
],
|
36
|
+
"etag": [
|
37
|
+
"\"3fca1f7c5a00c708a1074a8e2528d655\""
|
38
|
+
],
|
39
|
+
"server": [
|
40
|
+
"nginx/1.0.13"
|
41
|
+
],
|
42
|
+
"status": [
|
43
|
+
"200 OK"
|
44
|
+
],
|
45
|
+
"x-accepted-oauth-scopes": [
|
46
|
+
"repo"
|
47
|
+
],
|
48
|
+
"x-oauth-scopes": [
|
49
|
+
""
|
50
|
+
],
|
51
|
+
"x-ratelimit-limit": [
|
52
|
+
"5000"
|
53
|
+
],
|
54
|
+
"x-ratelimit-remaining": [
|
55
|
+
"4987"
|
56
|
+
]
|
57
|
+
},
|
58
|
+
"http_version": "1.1",
|
59
|
+
"status": {
|
60
|
+
"code": 200,
|
61
|
+
"message": "OK"
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
],
|
66
|
+
"recorded_with": "VCR 2.0.1"
|
67
|
+
}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{
|
2
|
+
"http_interactions": [
|
3
|
+
{
|
4
|
+
"recorded_at": "Tue, 17 Apr 2012 15:12:24 GMT",
|
5
|
+
"request": {
|
6
|
+
"body": {
|
7
|
+
"encoding": "US-ASCII",
|
8
|
+
"string": ""
|
9
|
+
},
|
10
|
+
"headers": {
|
11
|
+
"connection": [
|
12
|
+
"close"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
"method": "get",
|
16
|
+
"uri": "https://api.github.com/user/repos?access_token=<ACCESS TOKEN>&type=all"
|
17
|
+
},
|
18
|
+
"response": {
|
19
|
+
"body": {
|
20
|
+
"encoding": "US-ASCII",
|
21
|
+
"string": "[{\"mirror_url\":null,\"description\":\"Git Workshop Test Repo\",\"git_url\":\"git://github.com/cdidyk/hellogitworld.git\",\"updated_at\":\"2012-03-14T20:53:19Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/hellogitworld\",\"has_wiki\":true,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":0,\"homepage\":\"\",\"created_at\":\"2012-03-14T20:53:19Z\",\"open_issues\":0,\"language\":\"Groovy\",\"html_url\":\"https://github.com/cdidyk/hellogitworld\",\"size\":2244,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/hellogitworld\",\"ssh_url\":\"git@github.com:cdidyk/hellogitworld.git\",\"pushed_at\":\"2012-03-14T20:42:16Z\",\"name\":\"hellogitworld\",\"private\":false,\"id\":3722211,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/hellogitworld.git\"},{\"mirror_url\":null,\"description\":\"A Ruby Wrapper for the Harvest API http://www.getharvest.com/\",\"git_url\":\"git://github.com/cdidyk/harvested.git\",\"updated_at\":\"2011-10-04T05:52:47Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/harvested\",\"has_wiki\":true,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":0,\"homepage\":\"http://rdoc.info/projects/zmoazeni/harvested\",\"created_at\":\"2011-03-04T18:31:03Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/harvested\",\"size\":592,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/harvested\",\"ssh_url\":\"git@github.com:cdidyk/harvested.git\",\"pushed_at\":\"2011-03-31T22:01:53Z\",\"name\":\"harvested\",\"private\":false,\"id\":1440506,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/harvested.git\"},{\"mirror_url\":null,\"description\":\"\",\"git_url\":\"git://github.com/jcoutu/gitnetworkitis.git\",\"updated_at\":\"2012-04-13T18:13:12Z\",\"owner\":{\"url\":\"https://api.github.com/users/jcoutu\",\"login\":\"jcoutu\",\"gravatar_id\":\"4c464291fe5328e507a80deb38c50bd3\",\"avatar_url\":\"https://secure.gravatar.com/avatar/4c464291fe5328e507a80deb38c50bd3?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":76799},\"url\":\"https://api.github.com/repos/jcoutu/gitnetworkitis\",\"has_wiki\":true,\"has_issues\":true,\"permissions\":{\"push\":true,\"admin\":false,\"pull\":true},\"forks\":1,\"homepage\":\"\",\"created_at\":\"2010-12-14T03:16:28Z\",\"open_issues\":1,\"language\":\"Ruby\",\"html_url\":\"https://github.com/jcoutu/gitnetworkitis\",\"size\":2784,\"fork\":false,\"svn_url\":\"https://github.com/jcoutu/gitnetworkitis\",\"ssh_url\":\"git@github.com:jcoutu/gitnetworkitis.git\",\"pushed_at\":\"2012-04-13T18:13:12Z\",\"name\":\"gitnetworkitis\",\"private\":false,\"id\":1166948,\"has_downloads\":true,\"watchers\":3,\"clone_url\":\"https://github.com/jcoutu/gitnetworkitis.git\"},{\"mirror_url\":null,\"description\":\"Ruby gem that provides an AR-style interface for the Pivotal Tracker API\",\"git_url\":\"git://github.com/cdidyk/pivotal-tracker.git\",\"updated_at\":\"2011-10-04T04:27:52Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/pivotal-tracker\",\"has_wiki\":true,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":0,\"homepage\":\"http://github.com/jsmestad/pivotal-tracker\",\"created_at\":\"2010-12-13T21:53:46Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/pivotal-tracker\",\"size\":172,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/pivotal-tracker\",\"ssh_url\":\"git@github.com:cdidyk/pivotal-tracker.git\",\"pushed_at\":\"2010-12-14T23:14:10Z\",\"name\":\"pivotal-tracker\",\"private\":false,\"id\":1166109,\"has_downloads\":false,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/pivotal-tracker.git\"},{\"mirror_url\":null,\"description\":\"easily and transparently use subdomains as parameters in a Rails 3 application\",\"git_url\":\"git://github.com/stephenjudkins/subdomainitis.git\",\"updated_at\":\"2012-04-01T11:58:34Z\",\"owner\":{\"url\":\"https://api.github.com/users/stephenjudkins\",\"login\":\"stephenjudkins\",\"gravatar_id\":\"b12ead92306a438050ef9001cf8247c0\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b12ead92306a438050ef9001cf8247c0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":8593},\"url\":\"https://api.github.com/repos/stephenjudkins/subdomainitis\",\"has_wiki\":true,\"has_issues\":true,\"permissions\":{\"push\":true,\"admin\":false,\"pull\":true},\"forks\":2,\"homepage\":\"\",\"created_at\":\"2010-10-22T01:44:12Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/stephenjudkins/subdomainitis\",\"size\":640,\"fork\":false,\"svn_url\":\"https://github.com/stephenjudkins/subdomainitis\",\"ssh_url\":\"git@github.com:stephenjudkins/subdomainitis.git\",\"pushed_at\":\"2011-02-02T22:20:31Z\",\"name\":\"subdomainitis\",\"private\":false,\"id\":1013936,\"has_downloads\":true,\"watchers\":5,\"clone_url\":\"https://github.com/stephenjudkins/subdomainitis.git\"},{\"mirror_url\":null,\"description\":\"A Ruby gem to interact with the Zendesk API\",\"git_url\":\"git://github.com/cdidyk/zendesk-api.git\",\"updated_at\":\"2011-10-04T03:25:14Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/zendesk-api\",\"has_wiki\":true,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":0,\"homepage\":\"http://github.com/pgericson/zendesk-api\",\"created_at\":\"2010-10-04T23:37:54Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/zendesk-api\",\"size\":140,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/zendesk-api\",\"ssh_url\":\"git@github.com:cdidyk/zendesk-api.git\",\"pushed_at\":\"2010-10-04T23:56:01Z\",\"name\":\"zendesk-api\",\"private\":false,\"id\":962170,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/zendesk-api.git\"},{\"mirror_url\":null,\"description\":\"Hominid is a Ruby gem that provides a wrapper for interacting with the Mailchimp API.\",\"git_url\":\"git://github.com/cdidyk/hominid.git\",\"updated_at\":\"2011-10-04T02:15:25Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/hominid\",\"has_wiki\":false,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":1,\"homepage\":\"http://terra-firma-design.com\",\"created_at\":\"2010-06-10T14:53:40Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/hominid\",\"size\":2548,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/hominid\",\"ssh_url\":\"git@github.com:cdidyk/hominid.git\",\"pushed_at\":\"2010-06-21T19:25:56Z\",\"name\":\"hominid\",\"private\":false,\"id\":713689,\"has_downloads\":false,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/hominid.git\"},{\"mirror_url\":null,\"description\":\"Rdockery probably doesn't need to exist. It generates a single HTML file out of a Rails app's rdoc (--one-file didn't work right for me).\",\"git_url\":\"git://github.com/cdidyk/rdockery.git\",\"updated_at\":\"2011-10-04T01:29:55Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/rdockery\",\"has_wiki\":true,\"has_issues\":true,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":1,\"homepage\":\"\",\"created_at\":\"2010-03-04T00:14:38Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/rdockery\",\"size\":376,\"fork\":false,\"svn_url\":\"https://github.com/cdidyk/rdockery\",\"ssh_url\":\"git@github.com:cdidyk/rdockery.git\",\"pushed_at\":\"2010-03-04T16:47:35Z\",\"name\":\"rdockery\",\"private\":false,\"id\":545608,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/rdockery.git\"},{\"mirror_url\":null,\"description\":\"Mr. T says, \\\"It's my blog, foo!\\\"\",\"git_url\":\"git://github.com/cdidyk/chrisdidyk.com.git\",\"updated_at\":\"2011-10-04T01:14:49Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/chrisdidyk.com\",\"has_wiki\":true,\"has_issues\":true,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":1,\"homepage\":\"chrisdidyk.com\",\"created_at\":\"2010-01-29T19:56:10Z\",\"open_issues\":0,\"language\":null,\"html_url\":\"https://github.com/cdidyk/chrisdidyk.com\",\"size\":740,\"fork\":false,\"svn_url\":\"https://github.com/cdidyk/chrisdidyk.com\",\"ssh_url\":\"git@github.com:cdidyk/chrisdidyk.com.git\",\"pushed_at\":\"2010-02-03T23:01:14Z\",\"name\":\"chrisdidyk.com\",\"private\":false,\"id\":494115,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/chrisdidyk.com.git\"},{\"mirror_url\":null,\"description\":\"A base rails app featuring: RESTful Authentication, Will Paginate, Rspec & Rspec-rails, Exception Notifier, Asset Packager, Cap Recipe (multi-stage). Put together by Fudge to remove the need for boring project setup.\",\"git_url\":\"git://github.com/cdidyk/bort.git\",\"updated_at\":\"2011-10-04T00:20:50Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/bort\",\"has_wiki\":true,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":1,\"homepage\":\"\",\"created_at\":\"2009-09-03T02:42:45Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/bort\",\"size\":308,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/bort\",\"ssh_url\":\"git@github.com:cdidyk/bort.git\",\"pushed_at\":\"2009-09-03T03:44:30Z\",\"name\":\"bort\",\"private\":false,\"id\":295995,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/bort.git\"},{\"mirror_url\":null,\"description\":\"the wiki on wheels: a Ruby on Rails app for building dynamic, structured websites out of wiki cards\",\"git_url\":\"git://github.com/cdidyk/wagn.git\",\"updated_at\":\"2011-10-04T00:08:38Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/wagn\",\"has_wiki\":true,\"has_issues\":false,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":1,\"homepage\":\"http://www.wagn.org\",\"created_at\":\"2009-07-18T01:09:13Z\",\"open_issues\":0,\"language\":\"Ruby\",\"html_url\":\"https://github.com/cdidyk/wagn\",\"size\":124,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/wagn\",\"ssh_url\":\"git@github.com:cdidyk/wagn.git\",\"pushed_at\":\"2009-07-18T01:12:10Z\",\"name\":\"wagn\",\"private\":false,\"id\":254075,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/wagn.git\"},{\"mirror_url\":null,\"description\":\"An RSpec minor mode for Emacs\",\"git_url\":\"git://github.com/cdidyk/rspec-mode.git\",\"updated_at\":\"2011-10-03T23:48:05Z\",\"owner\":{\"url\":\"https://api.github.com/users/cdidyk\",\"login\":\"cdidyk\",\"gravatar_id\":\"5c3fdf85d582cd802b60971445eefb59\",\"avatar_url\":\"https://secure.gravatar.com/avatar/5c3fdf85d582cd802b60971445eefb59?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":13943},\"url\":\"https://api.github.com/repos/cdidyk/rspec-mode\",\"has_wiki\":true,\"has_issues\":true,\"permissions\":{\"push\":true,\"admin\":true,\"pull\":true},\"forks\":0,\"homepage\":\"http://pezra.barelyenough.org/projects/rspec-mode\",\"created_at\":\"2009-04-09T21:04:03Z\",\"open_issues\":0,\"language\":\"Emacs Lisp\",\"html_url\":\"https://github.com/cdidyk/rspec-mode\",\"size\":136,\"fork\":true,\"svn_url\":\"https://github.com/cdidyk/rspec-mode\",\"ssh_url\":\"git@github.com:cdidyk/rspec-mode.git\",\"pushed_at\":\"2009-04-09T21:20:41Z\",\"name\":\"rspec-mode\",\"private\":false,\"id\":172271,\"has_downloads\":true,\"watchers\":1,\"clone_url\":\"https://github.com/cdidyk/rspec-mode.git\"}]"
|
22
|
+
},
|
23
|
+
"headers": {
|
24
|
+
"connection": [
|
25
|
+
"close"
|
26
|
+
],
|
27
|
+
"content-length": [
|
28
|
+
"13260"
|
29
|
+
],
|
30
|
+
"content-type": [
|
31
|
+
"application/json; charset=utf-8"
|
32
|
+
],
|
33
|
+
"date": [
|
34
|
+
"Tue, 17 Apr 2012 15:12:24 GMT"
|
35
|
+
],
|
36
|
+
"etag": [
|
37
|
+
"\"a01b0647880ace87900b9ffea1a91de5\""
|
38
|
+
],
|
39
|
+
"server": [
|
40
|
+
"nginx/1.0.13"
|
41
|
+
],
|
42
|
+
"status": [
|
43
|
+
"200 OK"
|
44
|
+
],
|
45
|
+
"x-accepted-oauth-scopes": [
|
46
|
+
"repo"
|
47
|
+
],
|
48
|
+
"x-oauth-scopes": [
|
49
|
+
""
|
50
|
+
],
|
51
|
+
"x-ratelimit-limit": [
|
52
|
+
"5000"
|
53
|
+
],
|
54
|
+
"x-ratelimit-remaining": [
|
55
|
+
"4981"
|
56
|
+
]
|
57
|
+
},
|
58
|
+
"http_version": "1.1",
|
59
|
+
"status": {
|
60
|
+
"code": 200,
|
61
|
+
"message": "OK"
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
],
|
66
|
+
"recorded_with": "VCR 2.0.1"
|
67
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
{
|
2
|
+
"http_interactions": [
|
3
|
+
{
|
4
|
+
"recorded_at": "Tue, 17 Apr 2012 15:12:23 GMT",
|
5
|
+
"request": {
|
6
|
+
"body": {
|
7
|
+
"encoding": "US-ASCII",
|
8
|
+
"string": ""
|
9
|
+
},
|
10
|
+
"headers": {
|
11
|
+
"connection": [
|
12
|
+
"close"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
"method": "get",
|
16
|
+
"uri": "https://api.github.com/user/repos?access_token=bad%20creds&type=all"
|
17
|
+
},
|
18
|
+
"response": {
|
19
|
+
"body": {
|
20
|
+
"encoding": "US-ASCII",
|
21
|
+
"string": "{\"message\":\"Bad credentials\"}"
|
22
|
+
},
|
23
|
+
"headers": {
|
24
|
+
"connection": [
|
25
|
+
"close"
|
26
|
+
],
|
27
|
+
"content-length": [
|
28
|
+
"29"
|
29
|
+
],
|
30
|
+
"content-type": [
|
31
|
+
"application/json; charset=utf-8"
|
32
|
+
],
|
33
|
+
"date": [
|
34
|
+
"Tue, 17 Apr 2012 15:12:23 GMT"
|
35
|
+
],
|
36
|
+
"etag": [
|
37
|
+
"\"ca6a3702f840b6bff0bb1bca6be0337c\""
|
38
|
+
],
|
39
|
+
"server": [
|
40
|
+
"nginx/1.0.13"
|
41
|
+
],
|
42
|
+
"status": [
|
43
|
+
"401 Unauthorized"
|
44
|
+
],
|
45
|
+
"www-authenticate": [
|
46
|
+
"Basic realm=\"GitHub\""
|
47
|
+
]
|
48
|
+
},
|
49
|
+
"http_version": "1.1",
|
50
|
+
"status": {
|
51
|
+
"code": 401,
|
52
|
+
"message": "Unauthorized"
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
],
|
57
|
+
"recorded_with": "VCR 2.0.1"
|
58
|
+
}
|