tb-bjb 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rubocop.yml +86 -0
- data/Gemfile +32 -0
- data/LICENSE +21 -0
- data/README.md +387 -0
- data/Rakefile +47 -0
- data/lib/faraday_middleware/follow_oauth_redirects.rb +71 -0
- data/lib/tinybucket.rb +76 -0
- data/lib/tinybucket/api.rb +25 -0
- data/lib/tinybucket/api/base_api.rb +44 -0
- data/lib/tinybucket/api/branch_restrictions_api.rb +51 -0
- data/lib/tinybucket/api/branches_api.rb +48 -0
- data/lib/tinybucket/api/build_status_api.rb +69 -0
- data/lib/tinybucket/api/comments_api.rb +81 -0
- data/lib/tinybucket/api/commits_api.rb +97 -0
- data/lib/tinybucket/api/diff_api.rb +40 -0
- data/lib/tinybucket/api/helper.rb +27 -0
- data/lib/tinybucket/api/helper/api_helper.rb +39 -0
- data/lib/tinybucket/api/helper/branch_restrictions_helper.rb +29 -0
- data/lib/tinybucket/api/helper/branches_helper.rb +29 -0
- data/lib/tinybucket/api/helper/build_status_helper.rb +46 -0
- data/lib/tinybucket/api/helper/comments_helper.rb +51 -0
- data/lib/tinybucket/api/helper/commits_helper.rb +42 -0
- data/lib/tinybucket/api/helper/diff_helper.rb +31 -0
- data/lib/tinybucket/api/helper/projects_helper.rb +28 -0
- data/lib/tinybucket/api/helper/pull_requests_helper.rb +67 -0
- data/lib/tinybucket/api/helper/repo_helper.rb +31 -0
- data/lib/tinybucket/api/helper/repos_helper.rb +23 -0
- data/lib/tinybucket/api/helper/team_helper.rb +45 -0
- data/lib/tinybucket/api/helper/user_helper.rb +33 -0
- data/lib/tinybucket/api/projects_api.rb +26 -0
- data/lib/tinybucket/api/pull_requests_api.rb +139 -0
- data/lib/tinybucket/api/repo_api.rb +56 -0
- data/lib/tinybucket/api/repos_api.rb +28 -0
- data/lib/tinybucket/api/team_api.rb +91 -0
- data/lib/tinybucket/api/user_api.rb +66 -0
- data/lib/tinybucket/api_factory.rb +21 -0
- data/lib/tinybucket/client.rb +107 -0
- data/lib/tinybucket/config.rb +10 -0
- data/lib/tinybucket/connection.rb +84 -0
- data/lib/tinybucket/constants.rb +7 -0
- data/lib/tinybucket/enumerator.rb +47 -0
- data/lib/tinybucket/error.rb +12 -0
- data/lib/tinybucket/error/base_error.rb +14 -0
- data/lib/tinybucket/error/conflict.rb +8 -0
- data/lib/tinybucket/error/not_found.rb +8 -0
- data/lib/tinybucket/error/service_error.rb +26 -0
- data/lib/tinybucket/iterator.rb +79 -0
- data/lib/tinybucket/model.rb +25 -0
- data/lib/tinybucket/model/base.rb +45 -0
- data/lib/tinybucket/model/branch.rb +48 -0
- data/lib/tinybucket/model/branch_restriction.rb +46 -0
- data/lib/tinybucket/model/build_status.rb +57 -0
- data/lib/tinybucket/model/comment.rb +67 -0
- data/lib/tinybucket/model/commit.rb +114 -0
- data/lib/tinybucket/model/concerns.rb +19 -0
- data/lib/tinybucket/model/concerns/acceptable_attributes.rb +34 -0
- data/lib/tinybucket/model/concerns/api_callable.rb +21 -0
- data/lib/tinybucket/model/concerns/enumerable.rb +20 -0
- data/lib/tinybucket/model/concerns/reloadable.rb +41 -0
- data/lib/tinybucket/model/concerns/repository_keys.rb +45 -0
- data/lib/tinybucket/model/error_response.rb +24 -0
- data/lib/tinybucket/model/page.rb +45 -0
- data/lib/tinybucket/model/profile.rb +70 -0
- data/lib/tinybucket/model/project.rb +44 -0
- data/lib/tinybucket/model/pull_request.rb +162 -0
- data/lib/tinybucket/model/repository.rb +219 -0
- data/lib/tinybucket/model/team.rb +96 -0
- data/lib/tinybucket/null_logger.rb +37 -0
- data/lib/tinybucket/parser.rb +15 -0
- data/lib/tinybucket/parser/collection_parser.rb +17 -0
- data/lib/tinybucket/parser/object_parser.rb +17 -0
- data/lib/tinybucket/request.rb +61 -0
- data/lib/tinybucket/resource.rb +75 -0
- data/lib/tinybucket/resource/base.rb +35 -0
- data/lib/tinybucket/resource/branch_restrictions.rb +47 -0
- data/lib/tinybucket/resource/branches.rb +35 -0
- data/lib/tinybucket/resource/commit/base.rb +14 -0
- data/lib/tinybucket/resource/commit/build_statuses.rb +50 -0
- data/lib/tinybucket/resource/commit/comments.rb +34 -0
- data/lib/tinybucket/resource/commits.rb +46 -0
- data/lib/tinybucket/resource/forks.rb +24 -0
- data/lib/tinybucket/resource/projects.rb +49 -0
- data/lib/tinybucket/resource/pull_request/base.rb +20 -0
- data/lib/tinybucket/resource/pull_request/comments.rb +32 -0
- data/lib/tinybucket/resource/pull_request/commits.rb +19 -0
- data/lib/tinybucket/resource/pull_requests.rb +52 -0
- data/lib/tinybucket/resource/repos.rb +40 -0
- data/lib/tinybucket/resource/team/base.rb +24 -0
- data/lib/tinybucket/resource/team/followers.rb +15 -0
- data/lib/tinybucket/resource/team/following.rb +15 -0
- data/lib/tinybucket/resource/team/members.rb +15 -0
- data/lib/tinybucket/resource/team/repos.rb +15 -0
- data/lib/tinybucket/resource/teams.rb +22 -0
- data/lib/tinybucket/resource/user/base.rb +26 -0
- data/lib/tinybucket/resource/user/followers.rb +15 -0
- data/lib/tinybucket/resource/user/following.rb +15 -0
- data/lib/tinybucket/resource/user/repos.rb +15 -0
- data/lib/tinybucket/resource/watchers.rb +24 -0
- data/lib/tinybucket/response.rb +9 -0
- data/lib/tinybucket/response/handler.rb +23 -0
- data/lib/tinybucket/version.rb +5 -0
- data/tinybucket.gemspec +30 -0
- metadata +244 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tinybucket
|
4
|
+
module Model
|
5
|
+
class Project < Base
|
6
|
+
acceptable_attributes \
|
7
|
+
:type, :description, :links, :uuid, :created_on,
|
8
|
+
:key, :updated_on, :is_private, :name, :owner
|
9
|
+
|
10
|
+
# Update this project
|
11
|
+
#
|
12
|
+
# @param _params [Hash]
|
13
|
+
# @raise [NotImplementedError] to be implemented
|
14
|
+
def update(_params)
|
15
|
+
raise NotImplementedError
|
16
|
+
end
|
17
|
+
|
18
|
+
# Destroy this project
|
19
|
+
#
|
20
|
+
# @raise [NotImplementedError] to be implemented.
|
21
|
+
def destroy
|
22
|
+
raise NotImplementedError
|
23
|
+
end
|
24
|
+
|
25
|
+
# Get repositories
|
26
|
+
#
|
27
|
+
# @return [Tinybucket::Resource::Repos]
|
28
|
+
def repos
|
29
|
+
repos_resource
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def owner_name
|
35
|
+
raise 'This project is not loaded yet.' if (owner.nil? || owner['username'].nil?)
|
36
|
+
owner['username']
|
37
|
+
end
|
38
|
+
|
39
|
+
def repos_resource
|
40
|
+
Tinybucket::Resource::Repos.new(owner_name, q: %(project.key="#{key}"))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tinybucket
|
4
|
+
module Model
|
5
|
+
# PullRequest
|
6
|
+
#
|
7
|
+
# @see https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/pullrequests
|
8
|
+
# pullrequest Resource
|
9
|
+
#
|
10
|
+
# @!attribute [rw] state
|
11
|
+
# @return [String]
|
12
|
+
# @!attribute [rw] description
|
13
|
+
# @return [String]
|
14
|
+
# @!attribute [rw] links
|
15
|
+
# @return [Hash]
|
16
|
+
# @!attribute [rw] title
|
17
|
+
# @return [String]
|
18
|
+
# @!attribute [rw] task_count
|
19
|
+
# @return [Fixnum]
|
20
|
+
# @!attribute [rw] comment_count
|
21
|
+
# @return [Fixnum]
|
22
|
+
# @!attribute [rw] close_source_branch
|
23
|
+
# @return [true, false]
|
24
|
+
# @!attribute [rw] destination
|
25
|
+
# @return [Hash]
|
26
|
+
# @!attribute [rw] reason
|
27
|
+
# @return [String]
|
28
|
+
# @!attribute [rw] id
|
29
|
+
# @return [Fixnum]
|
30
|
+
# @!attribute [rw] source
|
31
|
+
# @return [Hash]
|
32
|
+
# @!attribute [rw] created_on
|
33
|
+
# @return [String]
|
34
|
+
# @!attribute [rw] author
|
35
|
+
# @return [Hash]
|
36
|
+
# @!attribute [rw] updated_on
|
37
|
+
# @return [String]
|
38
|
+
# @!attribute [rw] merge_commit
|
39
|
+
# @return [Hash]
|
40
|
+
# @!attribute [rw] closed_by
|
41
|
+
# @return [Hash]
|
42
|
+
# @!attribute [rw] reviewers
|
43
|
+
# @return [Array]
|
44
|
+
# @!attribute [rw] participants
|
45
|
+
# @return [Array]
|
46
|
+
# @!attribute [rw] uuid
|
47
|
+
# @return [NillClass]
|
48
|
+
# @!attribute [rw] type
|
49
|
+
# @return [String]
|
50
|
+
class PullRequest < Base
|
51
|
+
include Tinybucket::Model::Concerns::RepositoryKeys
|
52
|
+
include Tinybucket::Constants
|
53
|
+
|
54
|
+
acceptable_attributes \
|
55
|
+
:state, :description, :links, :title, :task_count, :comment_count,
|
56
|
+
:close_source_branch, :destination, :reason, :id, :source,
|
57
|
+
:created_on, :author, :updated_on, :merge_commit, :closed_by,
|
58
|
+
:reviewers, :participants, :uuid, :type
|
59
|
+
|
60
|
+
# Update this pull request.
|
61
|
+
#
|
62
|
+
# @param attrs [Hash] Attributes to be updated. Only :title, :description, :reviewers supported
|
63
|
+
# @return
|
64
|
+
def update(attrs = {})
|
65
|
+
update_attrs = [ :title, :description, :reviewers ]
|
66
|
+
self.attributes.merge(attrs.slice(update_attrs))
|
67
|
+
pull_request_api.update(id, self.attributes.slice(update_attrs))
|
68
|
+
end
|
69
|
+
|
70
|
+
# Decline or reject this pull request.
|
71
|
+
#
|
72
|
+
# @param options [Hash]
|
73
|
+
# @return [true,false]
|
74
|
+
def decline(options = {})
|
75
|
+
pull_request_api.decline(id, options)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Give approval on this pull request.
|
79
|
+
#
|
80
|
+
# @param options [Hash]
|
81
|
+
# @return [true, false]
|
82
|
+
def approve(options = {})
|
83
|
+
pull_request_api.approve(id, options)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Revoke approval on this pull request.
|
87
|
+
#
|
88
|
+
# @param options [Hash]
|
89
|
+
# @return [true, false]
|
90
|
+
def unapprove(options = {})
|
91
|
+
pull_request_api.unapprove(id, options)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Get commits associated with this pull request.
|
95
|
+
#
|
96
|
+
# @param options [Hash]
|
97
|
+
# @return [Tinybucket::Resource::PullRequest::Commits]
|
98
|
+
def commits(options = {})
|
99
|
+
commits_resource(options)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Get comments on this pull request.
|
103
|
+
#
|
104
|
+
# @param options [Hash]
|
105
|
+
# @return [Tinybucket::Resource::PullRequest::Comments]
|
106
|
+
def comments(options = {})
|
107
|
+
comments_resource(options)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Get the specific comment on this pull request.
|
111
|
+
#
|
112
|
+
# @param comment_id [String]
|
113
|
+
# @param options [Hash]
|
114
|
+
# @return [Tinybucket::Model::Comment]
|
115
|
+
def comment(comment_id, options = {})
|
116
|
+
comments_resource.find(comment_id, options)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Get the diff for this pull request.
|
120
|
+
#
|
121
|
+
# @param options [Hash]
|
122
|
+
# @return [String] diff as raw text.
|
123
|
+
def diff(options = {})
|
124
|
+
pull_request_api.diff(id, options)
|
125
|
+
end
|
126
|
+
|
127
|
+
# Accept and merge this pull request.
|
128
|
+
#
|
129
|
+
# @param options [Hash]
|
130
|
+
# @return [true, false]
|
131
|
+
def merge(options = {})
|
132
|
+
pull_request_api.merge(id, options)
|
133
|
+
end
|
134
|
+
|
135
|
+
# Get activities on this pull requests.
|
136
|
+
#
|
137
|
+
def activities(_options = {})
|
138
|
+
raise NotImplementedError
|
139
|
+
end
|
140
|
+
|
141
|
+
private
|
142
|
+
|
143
|
+
def commits_resource(options = {})
|
144
|
+
Tinybucket::Resource::PullRequest::Commits.new(self, options)
|
145
|
+
end
|
146
|
+
|
147
|
+
def comments_resource(options = {})
|
148
|
+
Tinybucket::Resource::PullRequest::Comments.new(self, options)
|
149
|
+
end
|
150
|
+
|
151
|
+
def pull_request_api
|
152
|
+
raise ArgumentError, MISSING_REPOSITORY_KEY unless repo_keys?
|
153
|
+
|
154
|
+
create_api('PullRequests', repo_keys)
|
155
|
+
end
|
156
|
+
|
157
|
+
def load_model
|
158
|
+
pull_request_api.find(id)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
@@ -0,0 +1,219 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tinybucket
|
4
|
+
module Model
|
5
|
+
# Repository
|
6
|
+
#
|
7
|
+
# @see https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories
|
8
|
+
# Repository Endpoint
|
9
|
+
#
|
10
|
+
# @!attribute [rw] scm
|
11
|
+
# @return [String]
|
12
|
+
# @!attribute [rw] has_wiki
|
13
|
+
# @return [true, false]
|
14
|
+
# @!attribute [rw] description
|
15
|
+
# @return [String]
|
16
|
+
# @!attribute [rw] links
|
17
|
+
# @return [Hash]
|
18
|
+
# @!attribute [rw] updated_on
|
19
|
+
# @return [String]
|
20
|
+
# @!attribute [rw] fork_policy
|
21
|
+
# @return [String]
|
22
|
+
# @!attribute [rw] created_on
|
23
|
+
# @return [String]
|
24
|
+
# @!attribute [rw] owner
|
25
|
+
# @return [Hash]
|
26
|
+
# @!attribute [rw] size
|
27
|
+
# @return [Fixnum]
|
28
|
+
# @!attribute [rw] parent
|
29
|
+
# @return [Hash, NillClass]
|
30
|
+
# @!attribute [rw] uuid
|
31
|
+
# @return [String]
|
32
|
+
# @!attribute [rw] has_issues
|
33
|
+
# @return [true, false]
|
34
|
+
# @!attribute [rw] is_private
|
35
|
+
# @return [true, false]
|
36
|
+
# @!attribute [rw] full_name
|
37
|
+
# @return [String]
|
38
|
+
# @!attribute [rw] name
|
39
|
+
# @return [String]
|
40
|
+
# @!attribute [rw] language
|
41
|
+
# @return [String]
|
42
|
+
# @!attribute [rw] website
|
43
|
+
# @return [String]
|
44
|
+
# @!attribute [rw] type
|
45
|
+
# @return [String]
|
46
|
+
# @!attribute [rw] project
|
47
|
+
# @return [Hash]
|
48
|
+
class Repository < Base
|
49
|
+
include Tinybucket::Model::Concerns::RepositoryKeys
|
50
|
+
|
51
|
+
acceptable_attributes \
|
52
|
+
:scm, :has_wiki, :description, :links, :updated_on,
|
53
|
+
:fork_policy, :created_on, :owner, :size, :parent, :uuid,
|
54
|
+
:has_issues, :is_private, :full_name, :name, :language,
|
55
|
+
:website, :type, :project
|
56
|
+
|
57
|
+
def initialize(json)
|
58
|
+
super(json)
|
59
|
+
|
60
|
+
return unless full_name && full_name.split('/').size == 2
|
61
|
+
@repo_owner, @repo_slug = full_name.split('/')
|
62
|
+
end
|
63
|
+
|
64
|
+
# Remove this repository
|
65
|
+
#
|
66
|
+
# @todo to be implemented.
|
67
|
+
# @raise [NotImplementedError] to be implemented.
|
68
|
+
def destroy
|
69
|
+
raise NotImplementedError
|
70
|
+
end
|
71
|
+
|
72
|
+
# Get pull requests on thie repository.
|
73
|
+
#
|
74
|
+
# @param options [Hash]
|
75
|
+
# @return [Tinybucket::Enumerator] an enumerator to enumerate
|
76
|
+
# pull requests as {Tinybucket::Model::PullRequest} instance.
|
77
|
+
def pull_requests(options = {})
|
78
|
+
pull_requests_resource(options)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Get the specific pull request on this repository.
|
82
|
+
#
|
83
|
+
# @param pullrequest_id [String]
|
84
|
+
# @param options [Hash]
|
85
|
+
# @return [Tinybucket::Model::PullRequest]
|
86
|
+
def pull_request(pullrequest_id, options = {})
|
87
|
+
pull_requests_resource.find(pullrequest_id, options)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Get watchers on this repository.
|
91
|
+
#
|
92
|
+
# @param options [Hash]
|
93
|
+
# @return [Tinybucket::Resource::Watchers]
|
94
|
+
def watchers(options = {})
|
95
|
+
watchers_resource(options)
|
96
|
+
end
|
97
|
+
|
98
|
+
# Get repository forks.
|
99
|
+
#
|
100
|
+
# @param options [Hash]
|
101
|
+
# @return [Tinybucket::Resource::Forks]
|
102
|
+
def forks(options = {})
|
103
|
+
forks_resource(options)
|
104
|
+
end
|
105
|
+
|
106
|
+
# Get commits on this repository.
|
107
|
+
#
|
108
|
+
# @param options [Hash]
|
109
|
+
# @return [Tinybucket::Resource::Commits]
|
110
|
+
def commits(options = {})
|
111
|
+
commits_resource(options)
|
112
|
+
end
|
113
|
+
|
114
|
+
# Get the specific commit on this repository.
|
115
|
+
#
|
116
|
+
# @param revision [String]
|
117
|
+
# @param options [Hash]
|
118
|
+
# @return [Tinybucket::Model::Commit]
|
119
|
+
def commit(revision, options = {})
|
120
|
+
commits_resource.find(revision, options)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Get branches on this repository
|
124
|
+
#
|
125
|
+
# @param options [Hash]
|
126
|
+
# @return [Tinybucket::Resource::Branches]
|
127
|
+
def branches(options = {})
|
128
|
+
branches_resource(options)
|
129
|
+
end
|
130
|
+
|
131
|
+
# Get the specific branch on this repository.
|
132
|
+
#
|
133
|
+
# @param branch [String]
|
134
|
+
# @param options [Hash]
|
135
|
+
# @return [Tinybucket::Model::Branches]
|
136
|
+
def branch(branch, options = {})
|
137
|
+
branches_resource.find(branch, options)
|
138
|
+
end
|
139
|
+
|
140
|
+
# Get the branch restriction information associated with this repository.
|
141
|
+
#
|
142
|
+
# @param options [Hash]
|
143
|
+
# @return [Tinybucket::Resource::BranchRestrictions]
|
144
|
+
def branch_restrictions(options = {})
|
145
|
+
branch_restrictions_resource(options)
|
146
|
+
end
|
147
|
+
|
148
|
+
# Get the specific branch restriction information on this repository.
|
149
|
+
#
|
150
|
+
# @param restriction_id [String]
|
151
|
+
# @param options [Hash]
|
152
|
+
# @return [Tinybucket::Model::BranchRestriction]
|
153
|
+
def branch_restriction(restriction_id, options = {})
|
154
|
+
branch_restrictions_resource.find(restriction_id, options)
|
155
|
+
end
|
156
|
+
|
157
|
+
# Get the diff for this repository.
|
158
|
+
#
|
159
|
+
# @param spec [String] A specification such as a branch name,
|
160
|
+
# revision, or commit SHA.
|
161
|
+
# @param options [Hash]
|
162
|
+
# @return [String] diff as raw text.
|
163
|
+
def diff(spec, options = {})
|
164
|
+
diff_api.find(spec, options)
|
165
|
+
end
|
166
|
+
|
167
|
+
# Get the patch for the specification.
|
168
|
+
#
|
169
|
+
# @param spec [String] A specification such as a branch name,
|
170
|
+
# revision, or commit SHA.
|
171
|
+
# @return [String] patch as raw text.
|
172
|
+
def patch(spec, options = {})
|
173
|
+
diff_api.find_patch(spec, options)
|
174
|
+
end
|
175
|
+
|
176
|
+
private
|
177
|
+
|
178
|
+
def branch_restrictions_resource(options = {})
|
179
|
+
Tinybucket::Resource::BranchRestrictions.new(self, options)
|
180
|
+
end
|
181
|
+
|
182
|
+
def branches_resource(options = {})
|
183
|
+
Tinybucket::Resource::Branches.new(self, options)
|
184
|
+
end
|
185
|
+
|
186
|
+
def commits_resource(options = {})
|
187
|
+
Tinybucket::Resource::Commits.new(self, options)
|
188
|
+
end
|
189
|
+
|
190
|
+
def hooks_resource(options = {})
|
191
|
+
Tinybucket::Resource::Hooks.new(self, options)
|
192
|
+
end
|
193
|
+
|
194
|
+
def pull_requests_resource(options = {})
|
195
|
+
Tinybucket::Resource::PullRequests.new(self, options)
|
196
|
+
end
|
197
|
+
|
198
|
+
def watchers_resource(options = {})
|
199
|
+
Tinybucket::Resource::Watchers.new(self, options)
|
200
|
+
end
|
201
|
+
|
202
|
+
def forks_resource(options = {})
|
203
|
+
Tinybucket::Resource::Forks.new(self, options)
|
204
|
+
end
|
205
|
+
|
206
|
+
def repo_api
|
207
|
+
create_api('Repo', repo_keys)
|
208
|
+
end
|
209
|
+
|
210
|
+
def diff_api
|
211
|
+
create_api('Diff', repo_keys)
|
212
|
+
end
|
213
|
+
|
214
|
+
def load_model
|
215
|
+
repo_api.find()
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tinybucket
|
4
|
+
module Model
|
5
|
+
# Team
|
6
|
+
#
|
7
|
+
# @see https://developer.atlassian.com/bitbucket/api/2/reference/resource/teams
|
8
|
+
# teams Endpoint
|
9
|
+
#
|
10
|
+
# @!attribute [rw] username
|
11
|
+
# @return [String]
|
12
|
+
# @!attribute [rw] kind
|
13
|
+
# @return [String, NillClass]
|
14
|
+
# @!attribute [rw] website
|
15
|
+
# @return [String, NillClass]
|
16
|
+
# @!attribute [rw] display_name
|
17
|
+
# @return [String]
|
18
|
+
# @!attribute [rw] uuid
|
19
|
+
# @return [String]
|
20
|
+
# @!attribute [rw] links
|
21
|
+
# @return [Hash]
|
22
|
+
# @!attribute [rw] created_on
|
23
|
+
# @return [String]
|
24
|
+
# @!attribute [rw] location
|
25
|
+
# @return [String, NillClass]
|
26
|
+
# @!attribute [rw] type
|
27
|
+
# @return [String]
|
28
|
+
class Team < Base
|
29
|
+
acceptable_attributes \
|
30
|
+
:username, :kind, :website, :display_name, :uuid,
|
31
|
+
:links, :created_on, :location, :type
|
32
|
+
|
33
|
+
# Get this team's members.
|
34
|
+
#
|
35
|
+
# @param options [Hash]
|
36
|
+
# @return [Tinybucket::Resource::Team::Members]
|
37
|
+
def members(options = {})
|
38
|
+
Tinybucket::Resource::Team::Members.new(username, options)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Get this team's followers.
|
42
|
+
#
|
43
|
+
# @param options [Hash]
|
44
|
+
# @return [Tinybucket::Resource::Team::Followers]
|
45
|
+
def followers(options = {})
|
46
|
+
Tinybucket::Resource::Team::Followers.new(username, options)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Get users which this team is following.
|
50
|
+
#
|
51
|
+
# @param options [Hash]
|
52
|
+
# @return [Tinybucket::Resource::Team::Following]
|
53
|
+
def following(options = {})
|
54
|
+
Tinybucket::Resource::Team::Following.new(username, options)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Get projects
|
58
|
+
#
|
59
|
+
# @param options [Hash]
|
60
|
+
# @return [Tinybucket::Resource::Team::Project]
|
61
|
+
def projects(options = {})
|
62
|
+
projects_resource(options)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Get the project
|
66
|
+
#
|
67
|
+
# @param project_key [String]
|
68
|
+
# @return [Tinybucket::Model::Project]
|
69
|
+
def project(project_key, options = {})
|
70
|
+
projects_resource().find(project_key, options)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Get this team's repositories.
|
74
|
+
#
|
75
|
+
# @param options [Hash]
|
76
|
+
# @return [Tinybucket::Resource::Team::Repos]
|
77
|
+
def repos(options = {})
|
78
|
+
Tinybucket::Resource::Team::Repos.new(username, options)
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def projects_resource(options = {})
|
84
|
+
Tinybucket::Resource::Projects.new(username, options)
|
85
|
+
end
|
86
|
+
|
87
|
+
def team_api
|
88
|
+
create_api('Team')
|
89
|
+
end
|
90
|
+
|
91
|
+
def load_model
|
92
|
+
team_api.find(username)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|