git-layer 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +8 -0
- data/README.rdoc +1 -3
- data/VERSION +1 -1
- data/git-layer.gemspec +83 -0
- data/lib/github.rb +4 -0
- data/lib/github/client.rb +76 -5
- data/lib/github/helpers.rb +6 -0
- data/lib/github/repo.rb +61 -0
- data/lib/github/repos_response_wrapper.rb +15 -0
- data/spec/git-layer_spec.rb +186 -11
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8e7f46792d7ac85b292095906bcdb307827d43a
|
4
|
+
data.tar.gz: 12dbbbfece451b5132d268411f07fc68244aa8f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8de25742c418a1264ad57e9a32d48388f7a30734e651a847f26765a746bd1deafcc4e2e9fae3f7bc127265541f44b23ba9435bc24cd38cc6a0d0d4d9f42bfbb6
|
7
|
+
data.tar.gz: a036d450af77885870b8f8dd01d5014445f983864cd4e13fbd42375975f01c25b3a870db2138ec71dd21696129b69dd79d65d309f9c3a0b4e35486cac1296e68
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -3,6 +3,7 @@ GEM
|
|
3
3
|
specs:
|
4
4
|
addressable (2.3.5)
|
5
5
|
builder (3.2.2)
|
6
|
+
coderay (1.0.9)
|
6
7
|
crack (0.4.1)
|
7
8
|
safe_yaml (~> 0.9.0)
|
8
9
|
diff-lcs (1.1.3)
|
@@ -32,6 +33,7 @@ GEM
|
|
32
33
|
json (1.8.0)
|
33
34
|
jwt (0.1.8)
|
34
35
|
multi_json (>= 1.5)
|
36
|
+
method_source (0.8.2)
|
35
37
|
mime-types (1.25)
|
36
38
|
multi_json (1.8.1)
|
37
39
|
multi_xml (0.5.5)
|
@@ -44,6 +46,10 @@ GEM
|
|
44
46
|
multi_json (~> 1.0)
|
45
47
|
multi_xml (~> 0.5)
|
46
48
|
rack (~> 1.2)
|
49
|
+
pry (0.9.12.2)
|
50
|
+
coderay (~> 1.0.5)
|
51
|
+
method_source (~> 0.8)
|
52
|
+
slop (~> 3.4)
|
47
53
|
rack (1.5.2)
|
48
54
|
rake (10.1.0)
|
49
55
|
rdoc (3.12.2)
|
@@ -63,6 +69,7 @@ GEM
|
|
63
69
|
multi_json (~> 1.0)
|
64
70
|
simplecov-html (~> 0.7.1)
|
65
71
|
simplecov-html (0.7.1)
|
72
|
+
slop (3.4.6)
|
66
73
|
webmock (1.14.0)
|
67
74
|
addressable (>= 2.2.7)
|
68
75
|
crack (>= 0.3.2)
|
@@ -75,6 +82,7 @@ DEPENDENCIES
|
|
75
82
|
dotenv
|
76
83
|
jeweler (~> 1.8.7)
|
77
84
|
json
|
85
|
+
pry
|
78
86
|
rdoc (~> 3.12)
|
79
87
|
rest-client
|
80
88
|
rspec (~> 2.8.0)
|
data/README.rdoc
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
{<img src="http://ga.bling.phillbaker.com/images/
|
2
|
-
|
3
|
-
= git-layer-gem
|
1
|
+
{<img src="http://ga.bling.phillbaker.com/images/shield_imagined_ga_other.png" />}[https://generalassemb.ly]
|
4
2
|
|
5
3
|
A lightweight wrapper for the Github API V3
|
6
4
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/git-layer.gemspec
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "git-layer"
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Theodore Cleveland"]
|
12
|
+
s.date = "2013-10-26"
|
13
|
+
s.description = "Just writing a gem to get user information through the github api"
|
14
|
+
s.email = "tcclevela@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rspec",
|
22
|
+
".travis.yml",
|
23
|
+
"Gemfile",
|
24
|
+
"Gemfile.lock",
|
25
|
+
"LICENSE.txt",
|
26
|
+
"README.rdoc",
|
27
|
+
"Rakefile",
|
28
|
+
"VERSION",
|
29
|
+
"git-layer.gemspec",
|
30
|
+
"lib/github.rb",
|
31
|
+
"lib/github/client.rb",
|
32
|
+
"lib/github/helpers.rb",
|
33
|
+
"lib/github/repo.rb",
|
34
|
+
"lib/github/repos_response_wrapper.rb",
|
35
|
+
"spec/git-layer_spec.rb",
|
36
|
+
"spec/helper.rb"
|
37
|
+
]
|
38
|
+
s.homepage = "http://github.com/tcclevela/git-layer"
|
39
|
+
s.licenses = ["MIT"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = "2.0.3"
|
42
|
+
s.summary = "A simple github api wrapper for my app"
|
43
|
+
|
44
|
+
if s.respond_to? :specification_version then
|
45
|
+
s.specification_version = 4
|
46
|
+
|
47
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
49
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
50
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
51
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
|
52
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
53
|
+
s.add_development_dependency(%q<dotenv>, [">= 0"])
|
54
|
+
s.add_development_dependency(%q<webmock>, [">= 0"])
|
55
|
+
s.add_development_dependency(%q<rest-client>, [">= 0"])
|
56
|
+
s.add_development_dependency(%q<json>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<pry>, [">= 0"])
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
60
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
61
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
62
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
|
63
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
64
|
+
s.add_dependency(%q<dotenv>, [">= 0"])
|
65
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
66
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
67
|
+
s.add_dependency(%q<json>, [">= 0"])
|
68
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
69
|
+
end
|
70
|
+
else
|
71
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
72
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
73
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
74
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
|
75
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
76
|
+
s.add_dependency(%q<dotenv>, [">= 0"])
|
77
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
78
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
79
|
+
s.add_dependency(%q<json>, [">= 0"])
|
80
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
data/lib/github.rb
CHANGED
data/lib/github/client.rb
CHANGED
@@ -1,39 +1,110 @@
|
|
1
1
|
require 'rest-client'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
module Github
|
4
5
|
class Client
|
5
|
-
|
6
|
-
|
7
6
|
DEFAULT_OPTIONS = {
|
8
7
|
access_token: nil,
|
8
|
+
user: {}
|
9
9
|
}
|
10
10
|
|
11
11
|
attr_accessor :options
|
12
12
|
|
13
|
+
# stores user access_token to make authenticated requests
|
13
14
|
def initialize(options={})
|
14
|
-
store_options
|
15
|
+
store_options(options)
|
15
16
|
check_token
|
16
17
|
end
|
17
18
|
|
19
|
+
# returns user access_token
|
18
20
|
def access_token
|
19
21
|
@options[:access_token]
|
20
22
|
end
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
+
# fetches user information from github API using access_token
|
25
|
+
# to identify user
|
26
|
+
def user(options={})
|
27
|
+
if options.empty?
|
28
|
+
get_user('user') if options.empty?
|
29
|
+
else
|
30
|
+
get_user("users/#{options[:login]}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# getter functions access information storked in
|
35
|
+
# @options or fetch information (which stores it)
|
36
|
+
# and returns it
|
37
|
+
|
38
|
+
# getter for name
|
39
|
+
def name(options={})
|
40
|
+
if options.empty?
|
41
|
+
user["name"]
|
42
|
+
else
|
43
|
+
user(options)["name"]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# getter for login
|
48
|
+
def login(options={})
|
49
|
+
if options.empty?
|
50
|
+
user["login"]
|
51
|
+
else
|
52
|
+
options[:login]
|
53
|
+
end
|
24
54
|
end
|
25
55
|
|
56
|
+
# getter for email
|
57
|
+
def email(options={})
|
58
|
+
if options.empty?
|
59
|
+
user["email"]
|
60
|
+
else
|
61
|
+
user(options)["email"]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# getter for user page url
|
66
|
+
def html_url(options={})
|
67
|
+
if options.empty?
|
68
|
+
user["html_url"]
|
69
|
+
else
|
70
|
+
user(options)["html_url"]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# getter for url to get repositories from API
|
75
|
+
def repos_url(options={})
|
76
|
+
if options.empty?
|
77
|
+
user['repos_url']
|
78
|
+
else
|
79
|
+
user(options)['repos_url']
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# fetches user's repositories and wraps them in RepoResponseWrapper
|
84
|
+
def repos(options={})
|
85
|
+
Github::ReposResponseWrapper.new(request(repos_url(options), access_token), access_token)
|
86
|
+
end
|
26
87
|
|
27
88
|
private
|
28
89
|
|
90
|
+
|
91
|
+
# stores provided optiosn (included access token)
|
29
92
|
def store_options(options)
|
30
93
|
@options ||= DEFAULT_OPTIONS.dup
|
31
94
|
@options.merge!(options)
|
32
95
|
end
|
33
96
|
|
97
|
+
# checks presence of access token on initialization. Client doesn't work without it
|
34
98
|
def check_token
|
35
99
|
raise ArgumentError, "No access token provided" if !access_token
|
36
100
|
end
|
101
|
+
|
102
|
+
# fetches user information from API using access_token to identify user
|
103
|
+
def get_user(path)
|
104
|
+
JSON.parse(RestClient.get("https://api.github.com/" + path, {params: {access_token: self.access_token}}))
|
105
|
+
end
|
106
|
+
|
107
|
+
|
37
108
|
end
|
38
109
|
|
39
110
|
end
|
data/lib/github/repo.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
module Github
|
2
|
+
class Repo
|
3
|
+
attr_reader :info
|
4
|
+
|
5
|
+
def initialize(repo_info, token)
|
6
|
+
store(repo_info)
|
7
|
+
store_token(token)
|
8
|
+
end
|
9
|
+
|
10
|
+
def language
|
11
|
+
@info['language']
|
12
|
+
end
|
13
|
+
|
14
|
+
def name
|
15
|
+
@info['name']
|
16
|
+
end
|
17
|
+
|
18
|
+
def owner_login
|
19
|
+
@info['owner']['login']
|
20
|
+
end
|
21
|
+
|
22
|
+
def forked?
|
23
|
+
@info['fork']
|
24
|
+
end
|
25
|
+
|
26
|
+
def url
|
27
|
+
@info['html_url']
|
28
|
+
end
|
29
|
+
|
30
|
+
def commits_url
|
31
|
+
@info['commits_url'].split('{')[0]
|
32
|
+
end
|
33
|
+
|
34
|
+
def languages_url
|
35
|
+
@info['languages_url']
|
36
|
+
end
|
37
|
+
|
38
|
+
def access_token
|
39
|
+
self.info['access_token']
|
40
|
+
end
|
41
|
+
|
42
|
+
def commits
|
43
|
+
request(commits_url, access_token)
|
44
|
+
end
|
45
|
+
|
46
|
+
def languages
|
47
|
+
request(languages_url, access_token)
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def store(repo)
|
53
|
+
@info||={}
|
54
|
+
@info.merge!(repo)
|
55
|
+
end
|
56
|
+
|
57
|
+
def store_token(token)
|
58
|
+
@info['access_token'] = token
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Github
|
2
|
+
class ReposResponseWrapper
|
3
|
+
attr_reader :response
|
4
|
+
def initialize(response=[], token)
|
5
|
+
@response = []
|
6
|
+
response.each do |repo_info|
|
7
|
+
@response << Github::Repo.new(repo_info, token)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def count
|
12
|
+
@response.count
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/git-layer_spec.rb
CHANGED
@@ -1,23 +1,198 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
require 'webmock/rspec'
|
3
|
+
USER_RESPONSE = '{"login":"user_login", "repos_url": "http://api/github.com/user_name/repos", "name": "user_name","email": "test.email@example.com","html_url": "http://www.github.com/user_name"}'
|
4
|
+
EXAMPLE_USER_RESPONSE = '{"login": "tcclevela", "id": 4340941, "avatar_url": "https://0.gravatar.com/avatar/35120b8227f24c04d7ac2095876db64e?d=https%3A%2F%2Fidenticons.github.com%2Fed559600885df5d58a479d1398f6b765.png", "gravatar_id": "35120b8227f24c04d7ac2095876db64e", "url": "https://api.github.com/users/tcclevela", "html_url": "https://github.com/tcclevela", "followers_url": "https://api.github.com/users/tcclevela/followers", "following_url": "https://api.github.com/users/tcclevela/following{/other_user}", "gists_url": "https://api.github.com/users/tcclevela/gists{/gist_id}", "starred_url": "https://api.github.com/users/tcclevela/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tcclevela/subscriptions", "organizations_url": "https://api.github.com/users/tcclevela/orgs", "repos_url": "https://api.github.com/users/tcclevela/repos", "events_url": "https://api.github.com/users/tcclevela/events{/privacy}", "received_events_url": "https://api.github.com/users/tcclevela/received_events", "type": "User", "site_admin": false, "name": "Teddy Cleveland", "company": "General Assembly", "blog": "http://www.theodorecleveland.com", "location": "Boston", "email": "tcclevela@gmail.com", "hireable": true, "bio": null, "public_repos": 81, "followers": 30, "following": 28, "created_at": "2013-05-04T16:46:49Z", "updated_at": "2013-10-18T18:01:23Z", "public_gists": 5}'
|
5
|
+
EXAMPLE_REPO_RESPONSE = '[{ "id": 11029752, "name": "address_book", "full_name": "tcclevela/address_book", "owner": { "login": "tcclevela", "id": 4340941, "avatar_url": "https://0.gravatar.com/avatar/35120b8227f24c04d7ac2095876db64e?d=https%3A%2F%2Fidenticons.github.com%2Fed559600885df5d58a479d1398f6b765.png", "gravatar_id": "35120b8227f24c04d7ac2095876db64e", "url": "https://api.github.com/users/tcclevela", "html_url": "https://github.com/tcclevela", "followers_url": "https://api.github.com/users/tcclevela/followers", "following_url": "https://api.github.com/users/tcclevela/following{/other_user}", "gists_url": "https://api.github.com/users/tcclevela/gists{/gist_id}", "starred_url": "https://api.github.com/users/tcclevela/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tcclevela/subscriptions", "organizations_url": "https://api.github.com/users/tcclevela/orgs", "repos_url": "https://api.github.com/users/tcclevela/repos", "events_url": "https://api.github.com/users/tcclevela/events{/privacy}", "received_events_url": "https://api.github.com/users/tcclevela/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/tcclevela/address_book", "description": "", "fork": true, "url": "https://api.github.com/repos/tcclevela/address_book", "forks_url": "https://api.github.com/repos/tcclevela/address_book/forks", "keys_url": "https://api.github.com/repos/tcclevela/address_book/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tcclevela/address_book/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tcclevela/address_book/teams", "hooks_url": "https://api.github.com/repos/tcclevela/address_book/hooks", "issue_events_url": "https://api.github.com/repos/tcclevela/address_book/issues/events{/number}", "events_url": "https://api.github.com/repos/tcclevela/address_book/events", "assignees_url": "https://api.github.com/repos/tcclevela/address_book/assignees{/user}", "branches_url": "https://api.github.com/repos/tcclevela/address_book/branches{/branch}", "tags_url": "https://api.github.com/repos/tcclevela/address_book/tags", "blobs_url": "https://api.github.com/repos/tcclevela/address_book/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tcclevela/address_book/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tcclevela/address_book/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tcclevela/address_book/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tcclevela/address_book/statuses/{sha}", "languages_url": "https://api.github.com/repos/tcclevela/address_book/languages", "stargazers_url": "https://api.github.com/repos/tcclevela/address_book/stargazers", "contributors_url": "https://api.github.com/repos/tcclevela/address_book/contributors", "subscribers_url": "https://api.github.com/repos/tcclevela/address_book/subscribers", "subscription_url": "https://api.github.com/repos/tcclevela/address_book/subscription", "commits_url": "https://api.github.com/repos/tcclevela/address_book/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tcclevela/address_book/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tcclevela/address_book/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tcclevela/address_book/issues/comments/{number}", "contents_url": "https://api.github.com/repos/tcclevela/address_book/contents/{+path}", "compare_url": "https://api.github.com/repos/tcclevela/address_book/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tcclevela/address_book/merges", "archive_url": "https://api.github.com/repos/tcclevela/address_book/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tcclevela/address_book/downloads", "issues_url": "https://api.github.com/repos/tcclevela/address_book/issues{/number}", "pulls_url": "https://api.github.com/repos/tcclevela/address_book/pulls{/number}", "milestones_url": "https://api.github.com/repos/tcclevela/address_book/milestones{/number}", "notifications_url": "https://api.github.com/repos/tcclevela/address_book/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tcclevela/address_book/labels{/name}", "created_at": "2013-06-28T15:15:19Z", "updated_at": "2013-06-28T17:18:39Z", "pushed_at": "2013-06-28T17:18:38Z", "git_url": "git://github.com/tcclevela/address_book.git", "ssh_url": "git@github.com:tcclevela/address_book.git", "clone_url": "https://github.com/tcclevela/address_book.git", "svn_url": "https://github.com/tcclevela/address_book", "homepage": null, "size": 132, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_downloads": true, "has_wiki": true, "forks_count": 0, "mirror_url": null, "open_issues_count": 0, "forks": 0, "open_issues": 0, "watchers": 0, "master_branch": "master", "default_branch": "master" }, { "id": 12090792, "name": "ajax_flags", "full_name": "tcclevela/ajax_flags", "owner": { "login": "tcclevela", "id": 4340941, "avatar_url": "https://0.gravatar.com/avatar/35120b8227f24c04d7ac2095876db64e?d=https%3A%2F%2Fidenticons.github.com%2Fed559600885df5d58a479d1398f6b765.png", "gravatar_id": "35120b8227f24c04d7ac2095876db64e", "url": "https://api.github.com/users/tcclevela", "html_url": "https://github.com/tcclevela", "followers_url": "https://api.github.com/users/tcclevela/followers", "following_url": "https://api.github.com/users/tcclevela/following{/other_user}", "gists_url": "https://api.github.com/users/tcclevela/gists{/gist_id}", "starred_url": "https://api.github.com/users/tcclevela/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tcclevela/subscriptions", "organizations_url": "https://api.github.com/users/tcclevela/orgs", "repos_url": "https://api.github.com/users/tcclevela/repos", "events_url": "https://api.github.com/users/tcclevela/events{/privacy}", "received_events_url": "https://api.github.com/users/tcclevela/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/tcclevela/ajax_flags", "description": "", "fork": true, "url": "https://api.github.com/repos/tcclevela/ajax_flags", "forks_url": "https://api.github.com/repos/tcclevela/ajax_flags/forks", "keys_url": "https://api.github.com/repos/tcclevela/ajax_flags/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tcclevela/ajax_flags/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tcclevela/ajax_flags/teams", "hooks_url": "https://api.github.com/repos/tcclevela/ajax_flags/hooks", "issue_events_url": "https://api.github.com/repos/tcclevela/ajax_flags/issues/events{/number}", "events_url": "https://api.github.com/repos/tcclevela/ajax_flags/events", "assignees_url": "https://api.github.com/repos/tcclevela/ajax_flags/assignees{/user}", "branches_url": "https://api.github.com/repos/tcclevela/ajax_flags/branches{/branch}", "tags_url": "https://api.github.com/repos/tcclevela/ajax_flags/tags", "blobs_url": "https://api.github.com/repos/tcclevela/ajax_flags/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tcclevela/ajax_flags/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tcclevela/ajax_flags/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tcclevela/ajax_flags/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tcclevela/ajax_flags/statuses/{sha}", "languages_url": "https://api.github.com/repos/tcclevela/ajax_flags/languages", "stargazers_url": "https://api.github.com/repos/tcclevela/ajax_flags/stargazers", "contributors_url": "https://api.github.com/repos/tcclevela/ajax_flags/contributors", "subscribers_url": "https://api.github.com/repos/tcclevela/ajax_flags/subscribers", "subscription_url": "https://api.github.com/repos/tcclevela/ajax_flags/subscription", "commits_url": "https://api.github.com/repos/tcclevela/ajax_flags/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tcclevela/ajax_flags/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tcclevela/ajax_flags/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tcclevela/ajax_flags/issues/comments/{number}", "contents_url": "https://api.github.com/repos/tcclevela/ajax_flags/contents/{+path}", "compare_url": "https://api.github.com/repos/tcclevela/ajax_flags/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tcclevela/ajax_flags/merges", "archive_url": "https://api.github.com/repos/tcclevela/ajax_flags/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tcclevela/ajax_flags/downloads", "issues_url": "https://api.github.com/repos/tcclevela/ajax_flags/issues{/number}", "pulls_url": "https://api.github.com/repos/tcclevela/ajax_flags/pulls{/number}", "milestones_url": "https://api.github.com/repos/tcclevela/ajax_flags/milestones{/number}", "notifications_url": "https://api.github.com/repos/tcclevela/ajax_flags/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tcclevela/ajax_flags/labels{/name}", "created_at": "2013-08-13T19:35:44Z", "updated_at": "2013-08-15T19:39:53Z", "pushed_at": "2013-08-14T01:13:52Z", "git_url": "git://github.com/tcclevela/ajax_flags.git", "ssh_url": "git@github.com:tcclevela/ajax_flags.git", "clone_url": "https://github.com/tcclevela/ajax_flags.git", "svn_url": "https://github.com/tcclevela/ajax_flags", "homepage": null, "size": 479, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_downloads": true, "has_wiki": true, "forks_count": 0, "mirror_url": null, "open_issues_count": 0, "forks": 0, "open_issues": 0, "watchers": 0, "master_branch": "master", "default_branch": "master" }]'
|
6
|
+
EXAMPLE_REPO_INFO = '{ "id": 11029752, "name": "address_book", "full_name": "tcclevela/address_book", "owner": { "login": "tcclevela", "id": 4340941, "avatar_url": "https://0.gravatar.com/avatar/35120b8227f24c04d7ac2095876db64e?d=https%3A%2F%2Fidenticons.github.com%2Fed559600885df5d58a479d1398f6b765.png", "gravatar_id": "35120b8227f24c04d7ac2095876db64e", "url": "https://api.github.com/users/tcclevela", "html_url": "https://github.com/tcclevela", "followers_url": "https://api.github.com/users/tcclevela/followers", "following_url": "https://api.github.com/users/tcclevela/following{/other_user}", "gists_url": "https://api.github.com/users/tcclevela/gists{/gist_id}", "starred_url": "https://api.github.com/users/tcclevela/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tcclevela/subscriptions", "organizations_url": "https://api.github.com/users/tcclevela/orgs", "repos_url": "https://api.github.com/users/tcclevela/repos", "events_url": "https://api.github.com/users/tcclevela/events{/privacy}", "received_events_url": "https://api.github.com/users/tcclevela/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/tcclevela/address_book", "description": "", "fork": true, "url": "https://api.github.com/repos/tcclevela/address_book", "forks_url": "https://api.github.com/repos/tcclevela/address_book/forks", "keys_url": "https://api.github.com/repos/tcclevela/address_book/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tcclevela/address_book/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tcclevela/address_book/teams", "hooks_url": "https://api.github.com/repos/tcclevela/address_book/hooks", "issue_events_url": "https://api.github.com/repos/tcclevela/address_book/issues/events{/number}", "events_url": "https://api.github.com/repos/tcclevela/address_book/events", "assignees_url": "https://api.github.com/repos/tcclevela/address_book/assignees{/user}", "branches_url": "https://api.github.com/repos/tcclevela/address_book/branches{/branch}", "tags_url": "https://api.github.com/repos/tcclevela/address_book/tags", "blobs_url": "https://api.github.com/repos/tcclevela/address_book/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tcclevela/address_book/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tcclevela/address_book/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tcclevela/address_book/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tcclevela/address_book/statuses/{sha}", "languages_url": "https://api.github.com/repos/tcclevela/address_book/languages", "stargazers_url": "https://api.github.com/repos/tcclevela/address_book/stargazers", "contributors_url": "https://api.github.com/repos/tcclevela/address_book/contributors", "subscribers_url": "https://api.github.com/repos/tcclevela/address_book/subscribers", "subscription_url": "https://api.github.com/repos/tcclevela/address_book/subscription", "commits_url": "https://api.github.com/repos/tcclevela/address_book/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tcclevela/address_book/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tcclevela/address_book/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tcclevela/address_book/issues/comments/{number}", "contents_url": "https://api.github.com/repos/tcclevela/address_book/contents/{+path}", "compare_url": "https://api.github.com/repos/tcclevela/address_book/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tcclevela/address_book/merges", "archive_url": "https://api.github.com/repos/tcclevela/address_book/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tcclevela/address_book/downloads", "issues_url": "https://api.github.com/repos/tcclevela/address_book/issues{/number}", "pulls_url": "https://api.github.com/repos/tcclevela/address_book/pulls{/number}", "milestones_url": "https://api.github.com/repos/tcclevela/address_book/milestones{/number}", "notifications_url": "https://api.github.com/repos/tcclevela/address_book/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tcclevela/address_book/labels{/name}", "created_at": "2013-06-28T15:15:19Z", "updated_at": "2013-06-28T17:18:39Z", "pushed_at": "2013-06-28T17:18:38Z", "git_url": "git://github.com/tcclevela/address_book.git", "ssh_url": "git@github.com:tcclevela/address_book.git", "clone_url": "https://github.com/tcclevela/address_book.git", "svn_url": "https://github.com/tcclevela/address_book", "homepage": null, "size": 132, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_downloads": true, "has_wiki": true, "forks_count": 0, "mirror_url": null, "open_issues_count": 0, "forks": 0, "open_issues": 0, "watchers": 0, "master_branch": "master", "default_branch": "master" }'
|
7
|
+
EXAMPLE_REPO_INFO_B = '{ "id": 11029752, "name": "address_book", "full_name": "tcclevela/address_book", "owner": { "login": "tcclevela", "id": 4340941, "avatar_url": "https://0.gravatar.com/avatar/35120b8227f24c04d7ac2095876db64e?d=https%3A%2F%2Fidenticons.github.com%2Fed559600885df5d58a479d1398f6b765.png", "gravatar_id": "35120b8227f24c04d7ac2095876db64e", "url": "https://api.github.com/users/tcclevela", "html_url": "https://github.com/tcclevela", "followers_url": "https://api.github.com/users/tcclevela/followers", "following_url": "https://api.github.com/users/tcclevela/following{/other_user}", "gists_url": "https://api.github.com/users/tcclevela/gists{/gist_id}", "starred_url": "https://api.github.com/users/tcclevela/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tcclevela/subscriptions", "organizations_url": "https://api.github.com/users/tcclevela/orgs", "repos_url": "https://api.github.com/users/tcclevela/repos", "events_url": "https://api.github.com/users/tcclevela/events{/privacy}", "received_events_url": "https://api.github.com/users/tcclevela/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/tcclevela/address_book", "description": "", "fork": false, "url": "https://api.github.com/repos/tcclevela/address_book", "forks_url": "https://api.github.com/repos/tcclevela/address_book/forks", "keys_url": "https://api.github.com/repos/tcclevela/address_book/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tcclevela/address_book/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tcclevela/address_book/teams", "hooks_url": "https://api.github.com/repos/tcclevela/address_book/hooks", "issue_events_url": "https://api.github.com/repos/tcclevela/address_book/issues/events{/number}", "events_url": "https://api.github.com/repos/tcclevela/address_book/events", "assignees_url": "https://api.github.com/repos/tcclevela/address_book/assignees{/user}", "branches_url": "https://api.github.com/repos/tcclevela/address_book/branches{/branch}", "tags_url": "https://api.github.com/repos/tcclevela/address_book/tags", "blobs_url": "https://api.github.com/repos/tcclevela/address_book/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tcclevela/address_book/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tcclevela/address_book/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tcclevela/address_book/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tcclevela/address_book/statuses/{sha}", "languages_url": "https://api.github.com/repos/tcclevela/address_book/languages", "stargazers_url": "https://api.github.com/repos/tcclevela/address_book/stargazers", "contributors_url": "https://api.github.com/repos/tcclevela/address_book/contributors", "subscribers_url": "https://api.github.com/repos/tcclevela/address_book/subscribers", "subscription_url": "https://api.github.com/repos/tcclevela/address_book/subscription", "commits_url": "https://api.github.com/repos/tcclevela/address_book/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tcclevela/address_book/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tcclevela/address_book/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tcclevela/address_book/issues/comments/{number}", "contents_url": "https://api.github.com/repos/tcclevela/address_book/contents/{+path}", "compare_url": "https://api.github.com/repos/tcclevela/address_book/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tcclevela/address_book/merges", "archive_url": "https://api.github.com/repos/tcclevela/address_book/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tcclevela/address_book/downloads", "issues_url": "https://api.github.com/repos/tcclevela/address_book/issues{/number}", "pulls_url": "https://api.github.com/repos/tcclevela/address_book/pulls{/number}", "milestones_url": "https://api.github.com/repos/tcclevela/address_book/milestones{/number}", "notifications_url": "https://api.github.com/repos/tcclevela/address_book/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tcclevela/address_book/labels{/name}", "created_at": "2013-06-28T15:15:19Z", "updated_at": "2013-06-28T17:18:39Z", "pushed_at": "2013-06-28T17:18:38Z", "git_url": "git://github.com/tcclevela/address_book.git", "ssh_url": "git@github.com:tcclevela/address_book.git", "clone_url": "https://github.com/tcclevela/address_book.git", "svn_url": "https://github.com/tcclevela/address_book", "homepage": null, "size": 132, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_downloads": true, "has_wiki": true, "forks_count": 0, "mirror_url": null, "open_issues_count": 0, "forks": 0, "open_issues": 0, "watchers": 0, "master_branch": "master", "default_branch": "master" }'
|
8
|
+
EXAMPLE_COMMITS_RESPONSE = ' {"commits": "list"}'
|
9
|
+
EXAMPLE_LANGUAGES_RESPONSE = ' {"Ruby": 204929, "JavaScript": 104030, "C++": 1235}'
|
3
10
|
|
4
11
|
describe "Github" do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
12
|
+
|
13
|
+
describe "initialize" do
|
14
|
+
it 'should return raise error if initialized without token' do
|
15
|
+
expect do
|
16
|
+
Github.new()
|
17
|
+
end.to raise_error(ArgumentError)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should return the authentication token after initialization' do
|
21
|
+
github = Github.new(access_token: 'token')
|
22
|
+
github.access_token.should eq('token')
|
23
|
+
end
|
9
24
|
end
|
10
25
|
|
11
|
-
context '
|
26
|
+
context 'Github::Client' do
|
12
27
|
subject{Github.new(access_token: 'token')}
|
13
|
-
|
14
|
-
|
28
|
+
|
29
|
+
describe "#user method on Github object" do
|
30
|
+
it "should return the current user\'s information if no username is passed" do
|
31
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
32
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
33
|
+
user = subject.user
|
34
|
+
user["name"].should eq('user_name')
|
35
|
+
user["email"].should eq('test.email@example.com')
|
36
|
+
user["html_url"].should eq('http://www.github.com/user_name')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#name" do
|
41
|
+
it "should return the current user's name if no username is passed" do
|
42
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
43
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
44
|
+
subject.name.should eq('user_name')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return the searched user's name if username is passed" do
|
48
|
+
stub_request(:get, "https://api.github.com/users/tcclevela?access_token=token")
|
49
|
+
.to_return(body: EXAMPLE_USER_RESPONSE, status: 200)
|
50
|
+
subject.name(login: 'tcclevela').should eq('Teddy Cleveland')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#login" do
|
55
|
+
it "should return the current user's login if no username is passed" do
|
56
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
57
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
58
|
+
subject.login.should eq('user_login')
|
59
|
+
end
|
60
|
+
it "should return the current user's login if username is passed" do
|
61
|
+
subject.login(login: 'tcclevela').should eq('tcclevela')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#email" do
|
66
|
+
it "should return the current user's email if no username is passed" do
|
67
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
68
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
69
|
+
subject.email.should eq('test.email@example.com')
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should return the searched user's email if username is passed" do
|
73
|
+
stub_request(:get, "https://api.github.com/users/tcclevela?access_token=token")
|
74
|
+
.to_return(body: EXAMPLE_USER_RESPONSE, status: 200)
|
75
|
+
subject.email(login: 'tcclevela').should eq('tcclevela@gmail.com')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#html_url" do
|
80
|
+
it "should return the html url of the current user if no login is passed" do
|
81
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
82
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
83
|
+
subject.html_url.should eq("http://www.github.com/user_name")
|
84
|
+
end
|
85
|
+
it "should return the url of the specified user if login is passed" do
|
86
|
+
stub_request(:get, "https://api.github.com/users/tcclevela?access_token=token")
|
87
|
+
.to_return(body: EXAMPLE_USER_RESPONSE, status: 200)
|
88
|
+
subject.html_url(login: 'tcclevela').should eq("https://github.com/tcclevela")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#repos_url" do
|
93
|
+
it "should return the repos url of the current user if no login is passed" do
|
94
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
95
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
96
|
+
subject.repos_url.should eq("http://api/github.com/user_name/repos")
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should return the repos url of the specified user if login is passed" do
|
100
|
+
stub_request(:get, "https://api.github.com/users/tcclevela?access_token=token")
|
101
|
+
.to_return(body: EXAMPLE_USER_RESPONSE, status: 200)
|
102
|
+
subject.repos_url(login: 'tcclevela').should eq("https://api.github.com/users/tcclevela/repos")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
describe "#repos" do
|
106
|
+
it "should return an array" do
|
107
|
+
stub_request(:get, "https://api.github.com/users/tcclevela?access_token=token")
|
108
|
+
.to_return(body: EXAMPLE_USER_RESPONSE, status: 200)
|
109
|
+
stub_request(:get, "https://api.github.com/users/tcclevela/repos?access_token=token")
|
110
|
+
.to_return(body: EXAMPLE_REPO_RESPONSE, status: 200)
|
111
|
+
subject.repos(login: 'tcclevela').class.should eq(Github::ReposResponseWrapper)
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'should return an array of Github::Repo objects' do
|
115
|
+
stub_request(:get, "https://api.github.com/users/tcclevela?access_token=token")
|
116
|
+
.to_return(body: EXAMPLE_USER_RESPONSE, status: 200)
|
117
|
+
stub_request(:get, "https://api.github.com/users/tcclevela/repos?access_token=token")
|
118
|
+
.to_return(body: EXAMPLE_REPO_RESPONSE, status: 200)
|
119
|
+
subject.repos(login: 'tcclevela').response.first.class.should eq(Github::Repo)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should return the repos of the current user if no login is passed" do
|
123
|
+
stub_request(:get, "https://api.github.com/user?access_token=token")
|
124
|
+
.to_return(body: USER_RESPONSE, status: 200)
|
125
|
+
stub_request(:get, "http://api/github.com/user_name/repos?access_token=token")
|
126
|
+
.to_return(body: EXAMPLE_REPO_RESPONSE, status: 200)
|
127
|
+
subject.repos.response.first.class.should eq(Github::Repo)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context "Repo submodule" do
|
133
|
+
subject{Github::Repo.new(JSON.parse(EXAMPLE_REPO_INFO), 'token')}
|
134
|
+
|
135
|
+
describe "#language" do
|
136
|
+
it "should return the primary language that the repository is written in" do
|
137
|
+
subject.language.should eq("Ruby")
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe "#name" do
|
142
|
+
it "should return the name of the repository" do
|
143
|
+
subject.name.should eq("address_book")
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe "#owner_login" do
|
148
|
+
it "should return the login of the repo owner" do
|
149
|
+
subject.owner_login.should eq("tcclevela")
|
150
|
+
end
|
15
151
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
152
|
+
|
153
|
+
describe "#forked?" do
|
154
|
+
it "should return true if repository is forked" do
|
155
|
+
subject.forked?.should eq(true)
|
156
|
+
end
|
157
|
+
|
158
|
+
it "should return false if respository was created by owner" do
|
159
|
+
unforked = Github::Repo.new(JSON.parse(EXAMPLE_REPO_INFO_B), 'token');
|
160
|
+
unforked.forked?.should eq(false)
|
161
|
+
end
|
20
162
|
end
|
21
163
|
|
164
|
+
describe "url" do
|
165
|
+
it "should return the html_url of the repository" do
|
166
|
+
subject.url.should eq("https://github.com/tcclevela/address_book")
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe "#commits_url" do
|
171
|
+
it "should hit the API and retrieve the commits for the repository" do
|
172
|
+
subject.commits_url.should eq("https://api.github.com/repos/tcclevela/address_book/commits")
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe "#access_token" do
|
177
|
+
it "should return the access token with which the Github::Repo was initialized" do
|
178
|
+
subject.access_token.should eq('token')
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
describe "#commits" do
|
183
|
+
it "should return commits by hitting the commits url passing token as authentication" do
|
184
|
+
stub_request(:get, "https://api.github.com/repos/tcclevela/address_book/commits?access_token=token")
|
185
|
+
.to_return(body: EXAMPLE_COMMITS_RESPONSE, status: 200 )
|
186
|
+
subject.commits.should eq(JSON.parse(EXAMPLE_COMMITS_RESPONSE))
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
describe "#languages" do
|
191
|
+
it "should returna hash containging language-byte pairs" do
|
192
|
+
stub_request(:get, "https://api.github.com/repos/tcclevela/address_book/languages?access_token=token")
|
193
|
+
.to_return(body: EXAMPLE_LANGUAGES_RESPONSE, status: 200)
|
194
|
+
subject.languages.should eq(JSON.parse(EXAMPLE_LANGUAGES_RESPONSE))
|
195
|
+
end
|
196
|
+
end
|
22
197
|
end
|
23
198
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-layer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Theodore Cleveland
|
@@ -160,14 +160,19 @@ extra_rdoc_files:
|
|
160
160
|
files:
|
161
161
|
- .document
|
162
162
|
- .rspec
|
163
|
+
- .travis.yml
|
163
164
|
- Gemfile
|
164
165
|
- Gemfile.lock
|
165
166
|
- LICENSE.txt
|
166
167
|
- README.rdoc
|
167
168
|
- Rakefile
|
168
169
|
- VERSION
|
170
|
+
- git-layer.gemspec
|
169
171
|
- lib/github.rb
|
170
172
|
- lib/github/client.rb
|
173
|
+
- lib/github/helpers.rb
|
174
|
+
- lib/github/repo.rb
|
175
|
+
- lib/github/repos_response_wrapper.rb
|
171
176
|
- spec/git-layer_spec.rb
|
172
177
|
- spec/helper.rb
|
173
178
|
homepage: http://github.com/tcclevela/git-layer
|