codenamev_bitbucket_api 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +43 -0
- data/README.md +169 -0
- data/Rakefile +3 -0
- data/lib/bitbucket_rest_api/api/actions.rb +50 -0
- data/lib/bitbucket_rest_api/api/arguments.rb +248 -0
- data/lib/bitbucket_rest_api/api/config/property.rb +30 -0
- data/lib/bitbucket_rest_api/api/config/property_set.rb +118 -0
- data/lib/bitbucket_rest_api/api/config.rb +107 -0
- data/lib/bitbucket_rest_api/api/factory.rb +29 -0
- data/lib/bitbucket_rest_api/api.rb +242 -0
- data/lib/bitbucket_rest_api/authorization.rb +34 -0
- data/lib/bitbucket_rest_api/client/invitations.rb +16 -0
- data/lib/bitbucket_rest_api/client/issues/comments.rb +109 -0
- data/lib/bitbucket_rest_api/client/issues/components.rb +103 -0
- data/lib/bitbucket_rest_api/client/issues/milestones.rb +103 -0
- data/lib/bitbucket_rest_api/client/issues.rb +214 -0
- data/lib/bitbucket_rest_api/client/repos/changesets.rb +55 -0
- data/lib/bitbucket_rest_api/client/repos/following.rb +40 -0
- data/lib/bitbucket_rest_api/client/repos/keys.rb +88 -0
- data/lib/bitbucket_rest_api/client/repos/pull_requests/comments.rb +42 -0
- data/lib/bitbucket_rest_api/client/repos/pull_requests/commits.rb +24 -0
- data/lib/bitbucket_rest_api/client/repos/pull_requests.rb +199 -0
- data/lib/bitbucket_rest_api/client/repos/services.rb +104 -0
- data/lib/bitbucket_rest_api/client/repos/sources.rb +32 -0
- data/lib/bitbucket_rest_api/client/repos.rb +224 -0
- data/lib/bitbucket_rest_api/client/user.rb +96 -0
- data/lib/bitbucket_rest_api/client/users/account.rb +54 -0
- data/lib/bitbucket_rest_api/client/users.rb +14 -0
- data/lib/bitbucket_rest_api/client.rb +54 -0
- data/lib/bitbucket_rest_api/compatibility.rb +23 -0
- data/lib/bitbucket_rest_api/configuration.rb +59 -0
- data/lib/bitbucket_rest_api/connection.rb +61 -0
- data/lib/bitbucket_rest_api/constants.rb +50 -0
- data/lib/bitbucket_rest_api/core_ext/array.rb +17 -0
- data/lib/bitbucket_rest_api/core_ext/hash.rb +56 -0
- data/lib/bitbucket_rest_api/core_ext/ordered_hash.rb +107 -0
- data/lib/bitbucket_rest_api/deprecation.rb +39 -0
- data/lib/bitbucket_rest_api/error/bad_request.rb +12 -0
- data/lib/bitbucket_rest_api/error/client_error.rb +20 -0
- data/lib/bitbucket_rest_api/error/forbidden.rb +12 -0
- data/lib/bitbucket_rest_api/error/internal_server_error.rb +12 -0
- data/lib/bitbucket_rest_api/error/invalid_options.rb +18 -0
- data/lib/bitbucket_rest_api/error/not_found.rb +12 -0
- data/lib/bitbucket_rest_api/error/required_params.rb +18 -0
- data/lib/bitbucket_rest_api/error/service_error.rb +19 -0
- data/lib/bitbucket_rest_api/error/service_unavailable.rb +12 -0
- data/lib/bitbucket_rest_api/error/unauthorized.rb +12 -0
- data/lib/bitbucket_rest_api/error/unknown_value.rb +18 -0
- data/lib/bitbucket_rest_api/error/unprocessable_entity.rb +12 -0
- data/lib/bitbucket_rest_api/error/validations.rb +18 -0
- data/lib/bitbucket_rest_api/error.rb +35 -0
- data/lib/bitbucket_rest_api/ext/faraday.rb +38 -0
- data/lib/bitbucket_rest_api/middleware.rb +31 -0
- data/lib/bitbucket_rest_api/normalizer.rb +27 -0
- data/lib/bitbucket_rest_api/null_encoder.rb +25 -0
- data/lib/bitbucket_rest_api/page_iterator.rb +90 -0
- data/lib/bitbucket_rest_api/page_links.rb +33 -0
- data/lib/bitbucket_rest_api/paged_request.rb +29 -0
- data/lib/bitbucket_rest_api/pagination.rb +97 -0
- data/lib/bitbucket_rest_api/parameter_filter.rb +32 -0
- data/lib/bitbucket_rest_api/params_hash.rb +100 -0
- data/lib/bitbucket_rest_api/request/basic_auth.rb +33 -0
- data/lib/bitbucket_rest_api/request/jsonize.rb +51 -0
- data/lib/bitbucket_rest_api/request/oauth.rb +51 -0
- data/lib/bitbucket_rest_api/request/verbs.rb +53 -0
- data/lib/bitbucket_rest_api/request.rb +91 -0
- data/lib/bitbucket_rest_api/response/header.rb +68 -0
- data/lib/bitbucket_rest_api/response/helpers.rb +21 -0
- data/lib/bitbucket_rest_api/response/jsonize.rb +30 -0
- data/lib/bitbucket_rest_api/response/mashify.rb +24 -0
- data/lib/bitbucket_rest_api/response/raise_error.rb +31 -0
- data/lib/bitbucket_rest_api/response/xmlize.rb +26 -0
- data/lib/bitbucket_rest_api/response.rb +28 -0
- data/lib/bitbucket_rest_api/response_wrapper.rb +157 -0
- data/lib/bitbucket_rest_api/result.rb +68 -0
- data/lib/bitbucket_rest_api/users.rb +20 -0
- data/lib/bitbucket_rest_api/utils/url.rb +56 -0
- data/lib/bitbucket_rest_api/validations/format.rb +24 -0
- data/lib/bitbucket_rest_api/validations/presence.rb +30 -0
- data/lib/bitbucket_rest_api/validations/required.rb +24 -0
- data/lib/bitbucket_rest_api/validations/token.rb +43 -0
- data/lib/bitbucket_rest_api/validations.rb +25 -0
- data/lib/bitbucket_rest_api/version.rb +11 -0
- data/lib/bitbucket_rest_api.rb +136 -0
- metadata +238 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Issues::Milestones < API
|
|
5
|
+
@version = '1.0'
|
|
6
|
+
|
|
7
|
+
VALID_MILESTONE_INPUTS = %w[
|
|
8
|
+
name
|
|
9
|
+
].freeze # :nodoc:
|
|
10
|
+
|
|
11
|
+
# List milestones for a repository
|
|
12
|
+
#
|
|
13
|
+
# = Examples
|
|
14
|
+
# bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
|
|
15
|
+
# bitbucket.issues.milestones.list
|
|
16
|
+
#
|
|
17
|
+
def list(user_name, repo_name, params={})
|
|
18
|
+
_update_user_repo_params(user_name, repo_name)
|
|
19
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
20
|
+
|
|
21
|
+
normalize! params
|
|
22
|
+
|
|
23
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/issues/milestones", params)
|
|
24
|
+
return response unless block_given?
|
|
25
|
+
response.each { |el| yield el }
|
|
26
|
+
end
|
|
27
|
+
alias :all :list
|
|
28
|
+
|
|
29
|
+
# Get a single milestone
|
|
30
|
+
#
|
|
31
|
+
# = Examples
|
|
32
|
+
# bitbucket = BitBucket.new
|
|
33
|
+
# bitbucket.issues.milestones.get 'user-name', 'repo-name', 'milestone-id'
|
|
34
|
+
#
|
|
35
|
+
def get(user_name, repo_name, milestone_id, params={})
|
|
36
|
+
_update_user_repo_params(user_name, repo_name)
|
|
37
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
38
|
+
_validate_presence_of milestone_id
|
|
39
|
+
normalize! params
|
|
40
|
+
|
|
41
|
+
get_request("/repositories/#{user}/#{repo.downcase}/issues/milestones/#{milestone_id}", params)
|
|
42
|
+
end
|
|
43
|
+
alias :find :get
|
|
44
|
+
|
|
45
|
+
# Create a milestone
|
|
46
|
+
#
|
|
47
|
+
# = Inputs
|
|
48
|
+
# <tt>:name</tt> - Required string
|
|
49
|
+
#
|
|
50
|
+
# = Examples
|
|
51
|
+
# bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
|
|
52
|
+
# bitbucket.issues.milestones.create :name => 'hello-world'
|
|
53
|
+
#
|
|
54
|
+
def create(user_name, repo_name, params={})
|
|
55
|
+
_update_user_repo_params(user_name, repo_name)
|
|
56
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
57
|
+
|
|
58
|
+
normalize! params
|
|
59
|
+
filter! VALID_MILESTONE_INPUTS, params
|
|
60
|
+
assert_required_keys(%w[ name ], params)
|
|
61
|
+
|
|
62
|
+
post_request("/repositories/#{user}/#{repo.downcase}/issues/milestones", params)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Update a milestone
|
|
66
|
+
#
|
|
67
|
+
# = Inputs
|
|
68
|
+
# <tt>:name</tt> - Required string
|
|
69
|
+
#
|
|
70
|
+
# = Examples
|
|
71
|
+
# bitbucket = BitBucket.new
|
|
72
|
+
# bitbucket.issues.milestones.update 'user-name', 'repo-name', 'milestone-id',
|
|
73
|
+
# :name => 'hello-world'
|
|
74
|
+
#
|
|
75
|
+
def update(user_name, repo_name, milestone_id, params={})
|
|
76
|
+
_update_user_repo_params(user_name, repo_name)
|
|
77
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
78
|
+
_validate_presence_of milestone_id
|
|
79
|
+
|
|
80
|
+
normalize! params
|
|
81
|
+
filter! VALID_MILESTONE_INPUTS, params
|
|
82
|
+
assert_required_keys(%w[ name ], params)
|
|
83
|
+
|
|
84
|
+
put_request("/repositories/#{user}/#{repo.downcase}/issues/milestones/#{milestone_id}", params)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Delete a milestone
|
|
88
|
+
#
|
|
89
|
+
# = Examples
|
|
90
|
+
# bitbucket = BitBucket.new
|
|
91
|
+
# bitbucket.issues.milestones.delete 'user-name', 'repo-name', 'milestone-id'
|
|
92
|
+
#
|
|
93
|
+
def delete(user_name, repo_name, milestone_id, params={})
|
|
94
|
+
_update_user_repo_params(user_name, repo_name)
|
|
95
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
96
|
+
_validate_presence_of milestone_id
|
|
97
|
+
normalize! params
|
|
98
|
+
|
|
99
|
+
delete_request("/repositories/#{user}/#{repo.downcase}/issues/milestones/#{milestone_id}", params)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end # Issues::Milestones
|
|
103
|
+
end # BitBucket
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Issues < API
|
|
5
|
+
@version = '1.0'
|
|
6
|
+
|
|
7
|
+
require_all 'bitbucket_rest_api/client/issues',
|
|
8
|
+
'comments',
|
|
9
|
+
'components',
|
|
10
|
+
'milestones'
|
|
11
|
+
|
|
12
|
+
VALID_ISSUE_PARAM_NAMES = %w[
|
|
13
|
+
title
|
|
14
|
+
content
|
|
15
|
+
component
|
|
16
|
+
milestone
|
|
17
|
+
version
|
|
18
|
+
responsible
|
|
19
|
+
priority
|
|
20
|
+
status
|
|
21
|
+
kind
|
|
22
|
+
limit
|
|
23
|
+
start
|
|
24
|
+
search
|
|
25
|
+
sort
|
|
26
|
+
reported_by
|
|
27
|
+
].freeze
|
|
28
|
+
|
|
29
|
+
VALID_ISSUE_PARAM_VALUES = {
|
|
30
|
+
'priority' => %w[ trivial minor major critical blocker ],
|
|
31
|
+
'status' => ['new', 'open', 'resolved', 'on hold', 'invalid', 'duplicate', 'wontfix'],
|
|
32
|
+
'kind' => %w[ bug enhancement proposal task ]
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
# Access to Issues::Comments API
|
|
36
|
+
namespace :comments
|
|
37
|
+
|
|
38
|
+
# Access to Issues::Components API
|
|
39
|
+
namespace :components
|
|
40
|
+
|
|
41
|
+
# Access to Issues::Milestones API
|
|
42
|
+
namespace :milestones
|
|
43
|
+
|
|
44
|
+
# List issues for a repository
|
|
45
|
+
#
|
|
46
|
+
# = Inputs
|
|
47
|
+
# <tt>:limit</tt> - Optional - Number of issues to retrieve, default 15
|
|
48
|
+
# <tt>:start</tt> - Optional - Issue offset, default 0
|
|
49
|
+
# <tt>:search</tt> - Optional - A string to search for
|
|
50
|
+
# <tt>:sort</tt> - Optional - Sorts the output by any of the metadata fields
|
|
51
|
+
# <tt>:title</tt> - Optional - Contains a filter operation to restrict the list of issues by the issue title
|
|
52
|
+
# <tt>:content</tt> - Optional - Contains a filter operation to restrict the list of issues by the issue content
|
|
53
|
+
# <tt>:version</tt> - Optional - Contains an is or ! ( is not) filter to restrict the list of issues by the version
|
|
54
|
+
# <tt>:milestone</tt> - Optional - Contains an is or ! ( is not) filter to restrict the list of issues by the milestone
|
|
55
|
+
# <tt>:component</tt> - Optional - Contains an is or ! ( is not) filter to restrict the list of issues by the component
|
|
56
|
+
# <tt>:kind</tt> - Optional - Contains an is or ! ( is not) filter to restrict the list of issues by the issue kind
|
|
57
|
+
# <tt>:status</tt> - Optional - Contains an is or ! ( is not) filter to restrict the list of issues by the issue status
|
|
58
|
+
# <tt>:responsible</tt> - Optional - Contains an is or ! ( is not) filter to restrict the list of issues by the user responsible
|
|
59
|
+
# <tt>:reported_by</tt> - Optional - Contains a filter operation to restrict the list of issues by the user that reported the issue
|
|
60
|
+
#
|
|
61
|
+
# = Examples
|
|
62
|
+
# bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
|
|
63
|
+
# bitbucket.issues.list_repo :filter => 'kind=bug&kind=enhancement'
|
|
64
|
+
#
|
|
65
|
+
def list_repo(user_name, repo_name, params={ })
|
|
66
|
+
_update_user_repo_params(user_name, repo_name)
|
|
67
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
68
|
+
|
|
69
|
+
normalize! params
|
|
70
|
+
filter! VALID_ISSUE_PARAM_NAMES, params
|
|
71
|
+
assert_valid_values(VALID_ISSUE_PARAM_VALUES, params)
|
|
72
|
+
|
|
73
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/issues", params)
|
|
74
|
+
return response.issues unless block_given?
|
|
75
|
+
response.issues.each { |el| yield el }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
alias :list_repository :list_repo
|
|
79
|
+
|
|
80
|
+
# Get a single issue
|
|
81
|
+
#
|
|
82
|
+
# = Examples
|
|
83
|
+
# bitbucket = BitBucket.new
|
|
84
|
+
# bitbucket.issues.get 'user-name', 'repo-name', 'issue-id'
|
|
85
|
+
#
|
|
86
|
+
def get(user_name, repo_name, issue_id, params={ })
|
|
87
|
+
_update_user_repo_params(user_name, repo_name)
|
|
88
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
89
|
+
_validate_presence_of issue_id
|
|
90
|
+
|
|
91
|
+
normalize! params
|
|
92
|
+
|
|
93
|
+
get_request("/repositories/#{user}/#{repo.downcase}/issues/#{issue_id}", params)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
alias :find :get
|
|
97
|
+
|
|
98
|
+
# Delete a single issue
|
|
99
|
+
#
|
|
100
|
+
# = Examples
|
|
101
|
+
# bitbucket = BitBucket.new
|
|
102
|
+
# bitbucket.issues.delete 'user-name', 'repo-name', 'issue-id'
|
|
103
|
+
#
|
|
104
|
+
def delete(user_name, repo_name, issue_id, params={ })
|
|
105
|
+
_update_user_repo_params(user_name, repo_name)
|
|
106
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
107
|
+
_validate_presence_of issue_id
|
|
108
|
+
|
|
109
|
+
normalize! params
|
|
110
|
+
|
|
111
|
+
delete_request("/repositories/#{user}/#{repo}/issues/#{issue_id}", params)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Create an issue
|
|
115
|
+
#
|
|
116
|
+
# = Inputs
|
|
117
|
+
# <tt>:title</tt> - Required string
|
|
118
|
+
# <tt>:content</tt> - Optional string
|
|
119
|
+
# <tt>:responsible</tt> - Optional string - Login for the user that this issue should be assigned to.
|
|
120
|
+
# <tt>:milestone</tt> - Optional number - Milestone to associate this issue with
|
|
121
|
+
# <tt>:version</tt> - Optional number - Version to associate this issue with
|
|
122
|
+
# <tt>:component</tt> - Optional number - Component to associate this issue with
|
|
123
|
+
# <tt>:priority</tt> - Optional string - The priority of this issue
|
|
124
|
+
# * <tt>trivial</tt>
|
|
125
|
+
# * <tt>minor</tt>
|
|
126
|
+
# * <tt>major</tt>
|
|
127
|
+
# * <tt>critical</tt>
|
|
128
|
+
# * <tt>blocker</tt>
|
|
129
|
+
# <tt>:status</tt> - Optional string - The status of this issue
|
|
130
|
+
# * <tt>new</tt>
|
|
131
|
+
# * <tt>open</tt>
|
|
132
|
+
# * <tt>resolved</tt>
|
|
133
|
+
# * <tt>on hold</tt>
|
|
134
|
+
# * <tt>invalid</tt>
|
|
135
|
+
# * <tt>duplicate</tt>
|
|
136
|
+
# * <tt>wontfix</tt>
|
|
137
|
+
# <tt>:kind</tt> - Optional string - The kind of issue
|
|
138
|
+
# * <tt>bug</tt>
|
|
139
|
+
# * <tt>enhancement</tt>
|
|
140
|
+
# * <tt>proposal</tt>
|
|
141
|
+
# * <tt>task</tt>
|
|
142
|
+
#
|
|
143
|
+
# = Examples
|
|
144
|
+
# bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
|
|
145
|
+
# bitbucket.issues.create
|
|
146
|
+
# "title" => "Found a bug",
|
|
147
|
+
# "content" => "I'm having a problem with this.",
|
|
148
|
+
# "responsible" => "octocat",
|
|
149
|
+
# "milestone" => 1,
|
|
150
|
+
# "priority" => "blocker"
|
|
151
|
+
#
|
|
152
|
+
def create(user_name, repo_name, params={ })
|
|
153
|
+
_update_user_repo_params(user_name, repo_name)
|
|
154
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
155
|
+
|
|
156
|
+
normalize! params
|
|
157
|
+
_merge_user_into_params!(params) unless params.has_key?('user')
|
|
158
|
+
filter! VALID_ISSUE_PARAM_NAMES, params
|
|
159
|
+
assert_required_keys(%w[ title ], params)
|
|
160
|
+
|
|
161
|
+
post_request("/repositories/#{user}/#{repo.downcase}/issues/", params)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Edit an issue
|
|
165
|
+
#
|
|
166
|
+
# = Inputs
|
|
167
|
+
# <tt>:title</tt> - Required string
|
|
168
|
+
# <tt>:content</tt> - Optional string
|
|
169
|
+
# <tt>:responsible</tt> - Optional string - Login for the user that this issue should be assigned to.
|
|
170
|
+
# <tt>:milestone</tt> - Optional number - Milestone to associate this issue with
|
|
171
|
+
# <tt>:version</tt> - Optional number - Version to associate this issue with
|
|
172
|
+
# <tt>:component</tt> - Optional number - Component to associate this issue with
|
|
173
|
+
# <tt>:priority</tt> - Optional string - The priority of this issue
|
|
174
|
+
# * <tt>trivial</tt>
|
|
175
|
+
# * <tt>minor</tt>
|
|
176
|
+
# * <tt>major</tt>
|
|
177
|
+
# * <tt>critical</tt>
|
|
178
|
+
# * <tt>blocker</tt>
|
|
179
|
+
# <tt>:status</tt> - Optional string - The status of this issue
|
|
180
|
+
# * <tt>new</tt>
|
|
181
|
+
# * <tt>open</tt>
|
|
182
|
+
# * <tt>resolved</tt>
|
|
183
|
+
# * <tt>on hold</tt>
|
|
184
|
+
# * <tt>invalid</tt>
|
|
185
|
+
# * <tt>duplicate</tt>
|
|
186
|
+
# * <tt>wontfix</tt>
|
|
187
|
+
# <tt>:kind</tt> - Optional string - The kind of issue
|
|
188
|
+
# * <tt>bug</tt>
|
|
189
|
+
# * <tt>enhancement</tt>
|
|
190
|
+
# * <tt>proposal</tt>
|
|
191
|
+
# * <tt>task</tt>
|
|
192
|
+
#
|
|
193
|
+
# = Examples
|
|
194
|
+
# bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
|
|
195
|
+
# bitbucket.issues.create
|
|
196
|
+
# "title" => "Found a bug",
|
|
197
|
+
# "content" => "I'm having a problem with this.",
|
|
198
|
+
# "responsible" => "octocat",
|
|
199
|
+
# "milestone" => 1,
|
|
200
|
+
# "priority" => "blocker"
|
|
201
|
+
#
|
|
202
|
+
def edit(user_name, repo_name, issue_id, params={ })
|
|
203
|
+
_update_user_repo_params(user_name, repo_name)
|
|
204
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
205
|
+
_validate_presence_of issue_id
|
|
206
|
+
|
|
207
|
+
normalize! params
|
|
208
|
+
filter! VALID_ISSUE_PARAM_NAMES, params
|
|
209
|
+
|
|
210
|
+
put_request("/repositories/#{user}/#{repo.downcase}/issues/#{issue_id}/", params)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
end # Issues
|
|
214
|
+
end # BitBucket
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Repos::Changesets < API
|
|
5
|
+
@version = '1.0'
|
|
6
|
+
|
|
7
|
+
REQUIRED_COMMENT_PARAMS = %w[
|
|
8
|
+
body
|
|
9
|
+
changeset_id
|
|
10
|
+
line
|
|
11
|
+
path
|
|
12
|
+
position
|
|
13
|
+
].freeze
|
|
14
|
+
|
|
15
|
+
# List changesets on a repository
|
|
16
|
+
#
|
|
17
|
+
# = Parameters
|
|
18
|
+
# * <tt>:limit</tt> Optional integer. An integer representing how many changesets to return. You can specify a limit between 0 and 50.
|
|
19
|
+
# * <tt>:start</tt> Optional string. A hash value representing the earliest node to start with.
|
|
20
|
+
#
|
|
21
|
+
# = Examples
|
|
22
|
+
# bitbucket = BitBucket.new
|
|
23
|
+
# bitbucket.repos.changesets.list 'user-name', 'repo-name', :start => '...'
|
|
24
|
+
# bitbucket.repos.changesets.list 'user-name', 'repo-name', :start => '...' { |changeset| ... }
|
|
25
|
+
#
|
|
26
|
+
def list(user_name, repo_name, params={})
|
|
27
|
+
_update_user_repo_params(user_name, repo_name)
|
|
28
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
29
|
+
normalize! params
|
|
30
|
+
filter! %w[ limit start], params
|
|
31
|
+
|
|
32
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/changesets", params)
|
|
33
|
+
return response unless block_given?
|
|
34
|
+
response.each { |el| yield el }
|
|
35
|
+
end
|
|
36
|
+
alias :all :list
|
|
37
|
+
|
|
38
|
+
# Gets a single changeset
|
|
39
|
+
#
|
|
40
|
+
# = Examples
|
|
41
|
+
# @bitbucket = BitBucket.new
|
|
42
|
+
# @bitbucket.repos.changesets.get 'user-name', 'repo-name', '6dcb09b5b57875f334f61aebed6')
|
|
43
|
+
#
|
|
44
|
+
def get(user_name, repo_name, sha, params={})
|
|
45
|
+
_update_user_repo_params(user_name, repo_name)
|
|
46
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
47
|
+
_validate_presence_of sha
|
|
48
|
+
normalize! params
|
|
49
|
+
|
|
50
|
+
get_request("/repositories/#{user}/#{repo.downcase}/changesets/#{sha}", params)
|
|
51
|
+
end
|
|
52
|
+
alias :find :get
|
|
53
|
+
|
|
54
|
+
end # Repos::Commits
|
|
55
|
+
end # BitBucket
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Repos::Following < API
|
|
5
|
+
@version = '1.0'
|
|
6
|
+
|
|
7
|
+
# List repo followers
|
|
8
|
+
#
|
|
9
|
+
# = Examples
|
|
10
|
+
# bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
|
|
11
|
+
# bitbucket.repos.following.followers
|
|
12
|
+
# bitbucket.repos.following.followers { |watcher| ... }
|
|
13
|
+
#
|
|
14
|
+
def followers(user_name, repo_name, params={})
|
|
15
|
+
_update_user_repo_params(user_name, repo_name)
|
|
16
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
17
|
+
normalize! params
|
|
18
|
+
|
|
19
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/followers/", params)
|
|
20
|
+
return response unless block_given?
|
|
21
|
+
response.each { |el| yield el }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# List repos being followed by the authenticated user
|
|
25
|
+
#
|
|
26
|
+
# = Examples
|
|
27
|
+
# bitbucket = BitBucket.new :oauth_token => '...', :oauth_secret => '...'
|
|
28
|
+
# bitbucket.repos.following.followed
|
|
29
|
+
#
|
|
30
|
+
def followed(*args)
|
|
31
|
+
params = args.extract_options!
|
|
32
|
+
normalize! params
|
|
33
|
+
|
|
34
|
+
response = get_request("/user/follows", params)
|
|
35
|
+
return response unless block_given?
|
|
36
|
+
response.each { |el| yield el }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end # Repos::Watching
|
|
40
|
+
end # BitBucket
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Repos::Keys < API
|
|
5
|
+
@version = '1.0'
|
|
6
|
+
|
|
7
|
+
VALID_KEY_PARAM_NAMES = %w[ label key ].freeze
|
|
8
|
+
|
|
9
|
+
# List deploy keys
|
|
10
|
+
#
|
|
11
|
+
# = Examples
|
|
12
|
+
# bitbucket = BitBucket.new
|
|
13
|
+
# bitbucket.repos.keys.list 'user-name', 'repo-name'
|
|
14
|
+
# bitbucket.repos.keys.list 'user-name', 'repo-name' { |key| ... }
|
|
15
|
+
#
|
|
16
|
+
def list(user_name, repo_name, params={})
|
|
17
|
+
_update_user_repo_params(user_name, repo_name)
|
|
18
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
19
|
+
normalize! params
|
|
20
|
+
|
|
21
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/deploy-keys/", params)
|
|
22
|
+
return response unless block_given?
|
|
23
|
+
response.each { |el| yield el }
|
|
24
|
+
end
|
|
25
|
+
alias :all :list
|
|
26
|
+
|
|
27
|
+
# Create a key
|
|
28
|
+
#
|
|
29
|
+
# = Inputs
|
|
30
|
+
# * <tt>:title</tt> - Required string.
|
|
31
|
+
# * <tt>:key</tt> - Required string.
|
|
32
|
+
#
|
|
33
|
+
# = Examples
|
|
34
|
+
# bitbucket = BitBucket.new
|
|
35
|
+
# bitbucket.repos.keys.create 'user-name', 'repo-name',
|
|
36
|
+
# "label" => "octocat@octomac",
|
|
37
|
+
# "key" => "ssh-rsa AAA..."
|
|
38
|
+
#
|
|
39
|
+
def create(user_name, repo_name, params={})
|
|
40
|
+
_update_user_repo_params(user_name, repo_name)
|
|
41
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
42
|
+
normalize! params
|
|
43
|
+
filter! VALID_KEY_PARAM_NAMES, params
|
|
44
|
+
assert_required_keys(VALID_KEY_PARAM_NAMES, params)
|
|
45
|
+
|
|
46
|
+
post_request("/repositories/#{user}/#{repo.downcase}/deploy-keys/", params)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Edit a key
|
|
50
|
+
#
|
|
51
|
+
# = Inputs
|
|
52
|
+
# * <tt>:title</tt> - Required string.
|
|
53
|
+
# * <tt>:key</tt> - Required string.
|
|
54
|
+
#
|
|
55
|
+
# = Examples
|
|
56
|
+
# bitbucket = BitBucket.new
|
|
57
|
+
# bitbucket.repos.keys.edit 'user-name', 'repo-name',
|
|
58
|
+
# "label" => "octocat@octomac",
|
|
59
|
+
# "key" => "ssh-rsa AAA..."
|
|
60
|
+
#
|
|
61
|
+
def edit(user_name, repo_name, key_id, params={})
|
|
62
|
+
_update_user_repo_params(user_name, repo_name)
|
|
63
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
64
|
+
_validate_presence_of key_id
|
|
65
|
+
|
|
66
|
+
normalize! params
|
|
67
|
+
filter! VALID_KEY_PARAM_NAMES, params
|
|
68
|
+
|
|
69
|
+
put_request("/repositories/#{user}/#{repo.downcase}/deploy-keys/#{key_id}", params)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Delete key
|
|
73
|
+
#
|
|
74
|
+
# = Examples
|
|
75
|
+
# @bitbucket = BitBucket.new
|
|
76
|
+
# @bitbucket.repos.keys.delete 'user-name', 'repo-name', 'key-id'
|
|
77
|
+
#
|
|
78
|
+
def delete(user_name, repo_name, key_id, params={})
|
|
79
|
+
_update_user_repo_params(user_name, repo_name)
|
|
80
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
81
|
+
_validate_presence_of key_id
|
|
82
|
+
normalize! params
|
|
83
|
+
|
|
84
|
+
delete_request("/repositories/#{user}/#{repo.downcase}/deploy-keys/#{key_id}", params)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end # Repos::Keys
|
|
88
|
+
end # BitBucket
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Repos::PullRequests::Comments < API
|
|
5
|
+
@version = '2.0'
|
|
6
|
+
|
|
7
|
+
# List comments on a pull request
|
|
8
|
+
#
|
|
9
|
+
# = Examples
|
|
10
|
+
# bitbucket = BitBucket.new
|
|
11
|
+
# bitbucket.repos.pull_requests.comments.all 'user-name', 'repo-name', 'pull-request-id'
|
|
12
|
+
#
|
|
13
|
+
def list(*args)
|
|
14
|
+
arguments(args, required: [:user, :repo, :pull_request_id])
|
|
15
|
+
user = arguments.user
|
|
16
|
+
repo = arguments.repo
|
|
17
|
+
pull_request_id = arguments.pull_request_id
|
|
18
|
+
|
|
19
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/comments")
|
|
20
|
+
return response unless block_given?
|
|
21
|
+
response.each { |el| yield el }
|
|
22
|
+
end
|
|
23
|
+
alias :all :list
|
|
24
|
+
|
|
25
|
+
# Gets a single comment
|
|
26
|
+
#
|
|
27
|
+
# = Examples
|
|
28
|
+
# @bitbucket = BitBucket.new
|
|
29
|
+
# @bitbucket.repos.pull_requests.comments.get 'user-name', 'repo-name', 'pull-request-id')
|
|
30
|
+
#
|
|
31
|
+
def get(*args)
|
|
32
|
+
arguments(args, required: [:user, :repo, :pull_request_id, :comment_id])
|
|
33
|
+
user = arguments.user
|
|
34
|
+
repo = arguments.repo
|
|
35
|
+
pull_request_id = arguments.pull_request_id
|
|
36
|
+
comment_id = arguments.comment_id
|
|
37
|
+
|
|
38
|
+
get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/comments/#{comment_id}")
|
|
39
|
+
end
|
|
40
|
+
alias :find :get
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module BitBucket
|
|
4
|
+
class Client::Repos::PullRequests::Commits < API
|
|
5
|
+
@version = '2.0'
|
|
6
|
+
|
|
7
|
+
# List commits on a pull request
|
|
8
|
+
#
|
|
9
|
+
# = Examples
|
|
10
|
+
# bitbucket = BitBucket.new
|
|
11
|
+
# bitbucket.repos.pull_requests.commits.all 'user-name', 'repo-name', 'pull-request-id'
|
|
12
|
+
#
|
|
13
|
+
def list(user_name, repo_name, pull_request_id)
|
|
14
|
+
_update_user_repo_params(user_name, repo_name)
|
|
15
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
|
16
|
+
_validate_presence_of pull_request_id
|
|
17
|
+
|
|
18
|
+
response = get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/commits")
|
|
19
|
+
return response unless block_given?
|
|
20
|
+
response.each { |el| yield el }
|
|
21
|
+
end
|
|
22
|
+
alias :all :list
|
|
23
|
+
end
|
|
24
|
+
end
|