tinybucket 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -5
- data/README.md +100 -24
- data/lib/tinybucket.rb +1 -0
- data/lib/tinybucket/api.rb +1 -0
- data/lib/tinybucket/api/build_status_api.rb +55 -0
- data/lib/tinybucket/api/helper.rb +1 -0
- data/lib/tinybucket/api/helper/build_status_helper.rb +35 -0
- data/lib/tinybucket/client.rb +28 -45
- data/lib/tinybucket/enumerator.rb +4 -3
- data/lib/tinybucket/model.rb +2 -1
- data/lib/tinybucket/model/base.rb +1 -17
- data/lib/tinybucket/model/build_status.rb +55 -0
- data/lib/tinybucket/model/commit.rb +32 -15
- data/lib/tinybucket/model/concerns.rb +1 -0
- data/lib/tinybucket/model/concerns/api_callable.rb +19 -0
- data/lib/tinybucket/model/profile.rb +9 -26
- data/lib/tinybucket/model/pull_request.rb +18 -28
- data/lib/tinybucket/model/repository.rb +29 -76
- data/lib/tinybucket/model/team.rb +9 -34
- data/lib/tinybucket/parser.rb +1 -0
- data/lib/tinybucket/parser/build_status_parser.rb +9 -0
- data/lib/tinybucket/resource.rb +70 -0
- data/lib/tinybucket/resource/base.rb +29 -0
- data/lib/tinybucket/resource/branch_restrictions.rb +45 -0
- data/lib/tinybucket/resource/commit/base.rb +12 -0
- data/lib/tinybucket/resource/commit/build_statuses.rb +47 -0
- data/lib/tinybucket/resource/commit/comments.rb +32 -0
- data/lib/tinybucket/resource/commits.rb +33 -0
- data/lib/tinybucket/resource/forks.rb +22 -0
- data/lib/tinybucket/resource/pull_request/base.rb +18 -0
- data/lib/tinybucket/resource/pull_request/comments.rb +30 -0
- data/lib/tinybucket/resource/pull_request/commits.rb +17 -0
- data/lib/tinybucket/resource/pull_requests.rb +48 -0
- data/lib/tinybucket/resource/repos.rb +38 -0
- data/lib/tinybucket/resource/team/base.rb +22 -0
- data/lib/tinybucket/resource/team/followers.rb +13 -0
- data/lib/tinybucket/resource/team/following.rb +13 -0
- data/lib/tinybucket/resource/team/members.rb +13 -0
- data/lib/tinybucket/resource/team/repos.rb +13 -0
- data/lib/tinybucket/resource/user/base.rb +24 -0
- data/lib/tinybucket/resource/user/followers.rb +13 -0
- data/lib/tinybucket/resource/user/following.rb +13 -0
- data/lib/tinybucket/resource/user/repos.rb +13 -0
- data/lib/tinybucket/resource/watchers.rb +22 -0
- data/lib/tinybucket/version.rb +1 -1
- data/spec/fixtures/build_status.json +16 -0
- data/spec/fixtures/repositories/test_owner/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/commit/1/statuses/build/post.json +16 -0
- data/spec/fixtures/repositories/test_owner/test_repo/commit/1/statuses/build/test_status/get.json +16 -0
- data/spec/fixtures/repositories/test_owner/test_repo/commit/1/statuses/build/test_status/put.json +16 -0
- data/spec/fixtures/repositories/test_owner/test_repo/pullrequests/1/comments/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/pullrequests/1/commits/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/pullrequests/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/watchers/get.json +1 -1
- data/spec/lib/tinybucket/api/build_status_api_spec.rb +65 -0
- data/spec/lib/tinybucket/client_spec.rb +8 -4
- data/spec/lib/tinybucket/model/build_status_spec.rb +66 -0
- data/spec/lib/tinybucket/model/commit_spec.rb +19 -1
- data/spec/lib/tinybucket/model/profile_spec.rb +3 -3
- data/spec/lib/tinybucket/model/pull_request_spec.rb +3 -15
- data/spec/lib/tinybucket/model/repository_spec.rb +14 -20
- data/spec/lib/tinybucket/model/team_spec.rb +16 -4
- data/spec/lib/tinybucket/resource/branch_restrictions_spec.rb +60 -0
- data/spec/lib/tinybucket/resource/commit/build_statuses_spec.rb +50 -0
- data/spec/lib/tinybucket/resource/commit/comments_spec.rb +49 -0
- data/spec/lib/tinybucket/resource/commits_spec.rb +43 -0
- data/spec/lib/tinybucket/resource/forks_spec.rb +36 -0
- data/spec/lib/tinybucket/resource/pull_request/comments_spec.rb +41 -0
- data/spec/lib/tinybucket/resource/pull_request/commits_spec.rb +41 -0
- data/spec/lib/tinybucket/resource/pull_requests_spec.rb +59 -0
- data/spec/lib/tinybucket/resource/repos_spec.rb +76 -0
- data/spec/lib/tinybucket/resource/team/followers_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/team/following_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/team/members_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/team/repos_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/user/followers_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/user/following_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/user/repos_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/watchers_spec.rb +38 -0
- data/spec/support/api_response_macros.rb +45 -1
- metadata +77 -3
@@ -31,64 +31,39 @@ module Tinybucket
|
|
31
31
|
# Get this team's members.
|
32
32
|
#
|
33
33
|
# @param options [Hash]
|
34
|
-
# @return [Tinybucket::
|
35
|
-
# as {Tinybucket::Model::Team} instance.
|
34
|
+
# @return [Tinybucket::Resource::Team::Members]
|
36
35
|
def members(options = {})
|
37
|
-
|
38
|
-
team_api,
|
39
|
-
:members,
|
40
|
-
username,
|
41
|
-
options
|
42
|
-
) { |m| block_given? ? yield(m) : m }
|
36
|
+
Tinybucket::Resource::Team::Members.new(username, options)
|
43
37
|
end
|
44
38
|
|
45
39
|
# Get this team's followers.
|
46
40
|
#
|
47
41
|
# @param options [Hash]
|
48
|
-
# @return [Tinybucket::
|
49
|
-
# as {Tinybucket::Model::Team} instance.
|
42
|
+
# @return [Tinybucket::Resource::Team::Followers]
|
50
43
|
def followers(options = {})
|
51
|
-
|
52
|
-
team_api,
|
53
|
-
:followers,
|
54
|
-
username,
|
55
|
-
options
|
56
|
-
) { |m| block_given? ? yield(m) : m }
|
44
|
+
Tinybucket::Resource::Team::Followers.new(username, options)
|
57
45
|
end
|
58
46
|
|
59
47
|
# Get users which this team is following.
|
60
48
|
#
|
61
49
|
# @param options [Hash]
|
62
|
-
# @return [Tinybucket::
|
63
|
-
# as {Tinybucket::Model::Team} instance.
|
50
|
+
# @return [Tinybucket::Resource::Team::Following]
|
64
51
|
def following(options = {})
|
65
|
-
|
66
|
-
team_api,
|
67
|
-
:following,
|
68
|
-
username,
|
69
|
-
options
|
70
|
-
) { |m| block_given? ? yield(m) : m }
|
52
|
+
Tinybucket::Resource::Team::Following.new(username, options)
|
71
53
|
end
|
72
54
|
|
73
55
|
# Get this team's repositories.
|
74
56
|
#
|
75
57
|
# @param options [Hash]
|
76
|
-
# @return [Tinybucket::
|
77
|
-
# as {Tinybucket::Model::Repository} instance.
|
58
|
+
# @return [Tinybucket::Resource::Team::Repos]
|
78
59
|
def repos(options = {})
|
79
|
-
|
80
|
-
team_api,
|
81
|
-
:repos,
|
82
|
-
username,
|
83
|
-
options
|
84
|
-
) { |m| block_given? ? yield(m) : m }
|
60
|
+
Tinybucket::Resource::Team::Repos.new(username, options)
|
85
61
|
end
|
86
62
|
|
87
63
|
private
|
88
64
|
|
89
65
|
def team_api
|
90
|
-
|
91
|
-
@team = create_instance('Team')
|
66
|
+
create_api('Team')
|
92
67
|
end
|
93
68
|
|
94
69
|
def load_model
|
data/lib/tinybucket/parser.rb
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
extend ActiveSupport::Autoload
|
4
|
+
|
5
|
+
[
|
6
|
+
:Base,
|
7
|
+
:BranchRestrictions,
|
8
|
+
:Commits,
|
9
|
+
:Forks,
|
10
|
+
:OwnersRepos,
|
11
|
+
:PublicRepos,
|
12
|
+
:PullRequests,
|
13
|
+
:Repos,
|
14
|
+
:Watchers
|
15
|
+
].each do |klass_name|
|
16
|
+
autoload klass_name
|
17
|
+
end
|
18
|
+
|
19
|
+
module Team
|
20
|
+
extend ActiveSupport::Autoload
|
21
|
+
|
22
|
+
[
|
23
|
+
:Base,
|
24
|
+
:Followers,
|
25
|
+
:Following,
|
26
|
+
:Members,
|
27
|
+
:Repos
|
28
|
+
].each do |klass_name|
|
29
|
+
autoload klass_name
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module User
|
34
|
+
extend ActiveSupport::Autoload
|
35
|
+
|
36
|
+
[
|
37
|
+
:Base,
|
38
|
+
:Followers,
|
39
|
+
:Following,
|
40
|
+
:Repos
|
41
|
+
].each do |klass_name|
|
42
|
+
autoload klass_name
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
module PullRequest
|
47
|
+
extend ActiveSupport::Autoload
|
48
|
+
|
49
|
+
[
|
50
|
+
:Base,
|
51
|
+
:Commits,
|
52
|
+
:Comments
|
53
|
+
].each do |klass_name|
|
54
|
+
autoload klass_name
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module Commit
|
59
|
+
extend ActiveSupport::Autoload
|
60
|
+
|
61
|
+
[
|
62
|
+
:Base,
|
63
|
+
:BuildStatuses,
|
64
|
+
:Comments
|
65
|
+
].each do |klass_name|
|
66
|
+
autoload klass_name
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
class Base
|
4
|
+
include Tinybucket::Model::Concerns::ApiCallable
|
5
|
+
|
6
|
+
protected
|
7
|
+
|
8
|
+
def method_missing(method, *args)
|
9
|
+
enum = enumerator
|
10
|
+
return super unless enum.respond_to?(method)
|
11
|
+
|
12
|
+
enum.send(method, *args) do |m|
|
13
|
+
block_given? ? yield(m) : m
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_enumerator(api_client, method, *args, &block)
|
18
|
+
iter = Tinybucket::Iterator.new(api_client, method, *args)
|
19
|
+
Tinybucket::Enumerator.new(iter, block)
|
20
|
+
end
|
21
|
+
|
22
|
+
def inject_repo_keys(model, repo_keys)
|
23
|
+
return model unless model.respond_to?(:repo_keys=)
|
24
|
+
|
25
|
+
model.tap { |m| m.repo_keys = repo_keys }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
class BranchRestrictions < Base
|
4
|
+
# Constructor
|
5
|
+
#
|
6
|
+
# @param repo [Tinybucket::Model::Repository]
|
7
|
+
# @param options [Hash]
|
8
|
+
def initialize(repo, options)
|
9
|
+
@repo = repo
|
10
|
+
@args = [options]
|
11
|
+
end
|
12
|
+
|
13
|
+
# Create new BranchRestriction on the repository.
|
14
|
+
#
|
15
|
+
# @param _options [Hash]
|
16
|
+
# @return [Tinybucket::Model::BranchRestriction]
|
17
|
+
def create(_options)
|
18
|
+
raise NotImplementedError
|
19
|
+
end
|
20
|
+
|
21
|
+
# Find the BranchRestriction on the repository.
|
22
|
+
#
|
23
|
+
# @param restriction_id [String]
|
24
|
+
# @param options [Hash]
|
25
|
+
# @return [Tinybucket::Model::BranchRestriction]
|
26
|
+
def find(restriction_id, options = {})
|
27
|
+
restrictions_api.find(restriction_id, options).tap do |m|
|
28
|
+
inject_repo_keys(m, @repo.repo_keys)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def restrictions_api
|
35
|
+
create_api('BranchRestrictions', @repo.repo_keys)
|
36
|
+
end
|
37
|
+
|
38
|
+
def enumerator
|
39
|
+
create_enumerator(restrictions_api, :list, *@args) do |m|
|
40
|
+
inject_repo_keys(m, @repo.repo_keys)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
module Commit
|
4
|
+
class BuildStatuses < Tinybucket::Resource::Commit::Base
|
5
|
+
# Get the build status for the commit
|
6
|
+
#
|
7
|
+
# @param key [String]
|
8
|
+
# @param options [Hash]
|
9
|
+
# @option options [String] :state
|
10
|
+
# @option options [String] :key
|
11
|
+
# @option options [String] :name
|
12
|
+
# @option options [String] :url
|
13
|
+
# @option options [String] :description
|
14
|
+
# @return [Tinybucket::Model::BuildStatus]
|
15
|
+
def find(key, options = {})
|
16
|
+
build_status_api.find(@commit.hash, key, options).tap do |m|
|
17
|
+
m.revision = @commit.hash
|
18
|
+
m.repo_keys = @commit.repo_keys
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Create a build status for the commit
|
23
|
+
#
|
24
|
+
# @param key [String]
|
25
|
+
# @param options [Hash]
|
26
|
+
# @return [Tinybucket::Model::BuildStatus]
|
27
|
+
def create(key, options)
|
28
|
+
build_status_api.post(@commit.hash, key, options).tap do |m|
|
29
|
+
m.revision = @commit.hash
|
30
|
+
m.repo_keys = @commit.repo_keys
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def build_status_api
|
37
|
+
create_api('BuildStatus', @commit.repo_keys)
|
38
|
+
end
|
39
|
+
|
40
|
+
# FIXME: raise NoMethodError on method_missing.
|
41
|
+
def enumerator
|
42
|
+
nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
module Commit
|
4
|
+
class Comments < Tinybucket::Resource::Commit::Base
|
5
|
+
# Get the specific commit comment which associate with the commit.
|
6
|
+
#
|
7
|
+
# @param comment_id [String]
|
8
|
+
# @param options [Hash]
|
9
|
+
# @return [Tinybucket::Model::Comment]
|
10
|
+
def find(comment_id, options = {})
|
11
|
+
comments_api.find(comment_id, options).tap do |m|
|
12
|
+
m.repo_keys = @commit.repo_keys
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def comments_api
|
19
|
+
create_api('Comments', @commit.repo_keys).tap do |api|
|
20
|
+
api.commented_to = @commit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def enumerator
|
25
|
+
create_enumerator(comments_api, :list, *@args) do |m|
|
26
|
+
inject_repo_keys(m, @commit.repo_keys)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
class Commits < Base
|
4
|
+
def initialize(repo, options)
|
5
|
+
@repo = repo
|
6
|
+
@args = [options]
|
7
|
+
end
|
8
|
+
|
9
|
+
# Find the commit
|
10
|
+
#
|
11
|
+
# @param revision [String]
|
12
|
+
# @param options [Hash]
|
13
|
+
# @return [Tinybucket::Model::Commit]
|
14
|
+
def find(revision, options = {})
|
15
|
+
commits_api.find(revision, options).tap do |m|
|
16
|
+
inject_repo_keys(m, @repo.repo_keys)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def commits_api
|
23
|
+
create_api('Commits', @repo.repo_keys)
|
24
|
+
end
|
25
|
+
|
26
|
+
def enumerator
|
27
|
+
create_enumerator(commits_api, :list, *@args) do |m|
|
28
|
+
inject_repo_keys(m, @repo.repo_keys)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
class Forks < Base
|
4
|
+
def initialize(repo, options)
|
5
|
+
@repo = repo
|
6
|
+
@args = [options]
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def repo_api
|
12
|
+
create_api('Repo', @repo.repo_keys)
|
13
|
+
end
|
14
|
+
|
15
|
+
def enumerator
|
16
|
+
create_enumerator(repo_api, :forks, *@args) do |m|
|
17
|
+
inject_repo_keys(m, @repo.repo_keys)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
module PullRequest
|
4
|
+
class Base < Tinybucket::Resource::Base
|
5
|
+
def initialize(pull_request, options)
|
6
|
+
@pull_request = pull_request
|
7
|
+
@args = [options]
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def pull_request_api
|
13
|
+
create_api('PullRequests', @pull_request.repo_keys)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Tinybucket
|
2
|
+
module Resource
|
3
|
+
module PullRequest
|
4
|
+
class Comments < Tinybucket::Resource::PullRequest::Base
|
5
|
+
# Get the specific comment on the pull request.
|
6
|
+
#
|
7
|
+
# @param comment_id [String]
|
8
|
+
# @param options [Hash]
|
9
|
+
# @return [Tinybucket::Model::Comment]
|
10
|
+
def find(comment_id, options)
|
11
|
+
comment_api.find(comment_id, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def comment_api
|
17
|
+
create_api('Comments', @pull_request.repo_keys).tap do |api|
|
18
|
+
api.commented_to = @pull_request
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def enumerator
|
23
|
+
create_enumerator(comment_api, :list, *@args) do |m|
|
24
|
+
inject_repo_keys(m, @pull_request.repo_keys)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|