gitlab 4.9.0 → 4.13.1
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 +4 -4
- data/README.md +12 -6
- data/lib/gitlab/cli.rb +0 -3
- data/lib/gitlab/cli_helpers.rb +11 -10
- data/lib/gitlab/client.rb +10 -0
- data/lib/gitlab/client/application_settings.rb +172 -0
- data/lib/gitlab/client/avatar.rb +21 -0
- data/lib/gitlab/client/boards.rb +56 -0
- data/lib/gitlab/client/build_variables.rb +14 -10
- data/lib/gitlab/client/commits.rb +18 -2
- data/lib/gitlab/client/container_registry.rb +85 -0
- data/lib/gitlab/client/epics.rb +73 -0
- data/lib/gitlab/client/group_boards.rb +141 -0
- data/lib/gitlab/client/group_labels.rb +88 -0
- data/lib/gitlab/client/groups.rb +66 -2
- data/lib/gitlab/client/issue_links.rb +48 -0
- data/lib/gitlab/client/labels.rb +1 -1
- data/lib/gitlab/client/lint.rb +19 -0
- data/lib/gitlab/client/markdown.rb +23 -0
- data/lib/gitlab/client/merge_request_approvals.rb +8 -7
- data/lib/gitlab/client/merge_requests.rb +12 -0
- data/lib/gitlab/client/notes.rb +1 -1
- data/lib/gitlab/client/projects.rb +27 -6
- data/lib/gitlab/client/repositories.rb +5 -3
- data/lib/gitlab/client/repository_files.rb +16 -0
- data/lib/gitlab/client/runners.rb +49 -2
- data/lib/gitlab/client/search.rb +66 -0
- data/lib/gitlab/client/users.rb +7 -9
- data/lib/gitlab/configuration.rb +1 -1
- data/lib/gitlab/error.rb +19 -0
- data/lib/gitlab/paginated_response.rb +19 -0
- data/lib/gitlab/request.rb +15 -26
- data/lib/gitlab/shell_history.rb +4 -8
- data/lib/gitlab/version.rb +1 -1
- metadata +13 -3
data/lib/gitlab/error.rb
CHANGED
@@ -95,6 +95,9 @@ module Gitlab
|
|
95
95
|
# Raised when API endpoint returns the HTTP status code 405.
|
96
96
|
class MethodNotAllowed < ResponseError; end
|
97
97
|
|
98
|
+
# Raised when API endpoint returns the HTTP status code 406.
|
99
|
+
class NotAcceptable < ResponseError; end
|
100
|
+
|
98
101
|
# Raised when API endpoint returns the HTTP status code 409.
|
99
102
|
class Conflict < ResponseError; end
|
100
103
|
|
@@ -112,5 +115,21 @@ module Gitlab
|
|
112
115
|
|
113
116
|
# Raised when API endpoint returns the HTTP status code 503.
|
114
117
|
class ServiceUnavailable < ResponseError; end
|
118
|
+
|
119
|
+
# HTTP status codes mapped to error classes.
|
120
|
+
STATUS_MAPPINGS = {
|
121
|
+
400 => BadRequest,
|
122
|
+
401 => Unauthorized,
|
123
|
+
403 => Forbidden,
|
124
|
+
404 => NotFound,
|
125
|
+
405 => MethodNotAllowed,
|
126
|
+
406 => NotAcceptable,
|
127
|
+
409 => Conflict,
|
128
|
+
422 => Unprocessable,
|
129
|
+
429 => TooManyRequests,
|
130
|
+
500 => InternalServerError,
|
131
|
+
502 => BadGateway,
|
132
|
+
503 => ServiceUnavailable
|
133
|
+
}.freeze
|
115
134
|
end
|
116
135
|
end
|
@@ -56,6 +56,25 @@ module Gitlab
|
|
56
56
|
response
|
57
57
|
end
|
58
58
|
|
59
|
+
def paginate_with_limit(limit)
|
60
|
+
response = block_given? ? nil : []
|
61
|
+
count = 0
|
62
|
+
each_page do |page|
|
63
|
+
if block_given?
|
64
|
+
page.each do |item|
|
65
|
+
yield item
|
66
|
+
count += 1
|
67
|
+
break if count >= limit
|
68
|
+
end
|
69
|
+
else
|
70
|
+
response += page[0, limit - count]
|
71
|
+
count = response.length
|
72
|
+
end
|
73
|
+
break if count >= limit
|
74
|
+
end
|
75
|
+
response
|
76
|
+
end
|
77
|
+
|
59
78
|
def last_page?
|
60
79
|
!(@links.nil? || @links.last.nil?)
|
61
80
|
end
|
data/lib/gitlab/request.rb
CHANGED
@@ -42,7 +42,12 @@ module Gitlab
|
|
42
42
|
%w[get post put delete].each do |method|
|
43
43
|
define_method method do |path, options = {}|
|
44
44
|
httparty_config(options)
|
45
|
-
|
45
|
+
|
46
|
+
unless options[:unauthenticated]
|
47
|
+
options[:headers] ||= {}
|
48
|
+
options[:headers].merge!(authorization_header)
|
49
|
+
end
|
50
|
+
|
46
51
|
validate self.class.send(method, @endpoint + path, options)
|
47
52
|
end
|
48
53
|
end
|
@@ -50,20 +55,7 @@ module Gitlab
|
|
50
55
|
# Checks the response code for common errors.
|
51
56
|
# Returns parsed response for successful requests.
|
52
57
|
def validate(response)
|
53
|
-
error_klass =
|
54
|
-
when 400 then Error::BadRequest
|
55
|
-
when 401 then Error::Unauthorized
|
56
|
-
when 403 then Error::Forbidden
|
57
|
-
when 404 then Error::NotFound
|
58
|
-
when 405 then Error::MethodNotAllowed
|
59
|
-
when 409 then Error::Conflict
|
60
|
-
when 422 then Error::Unprocessable
|
61
|
-
when 429 then Error::TooManyRequests
|
62
|
-
when 500 then Error::InternalServerError
|
63
|
-
when 502 then Error::BadGateway
|
64
|
-
when 503 then Error::ServiceUnavailable
|
65
|
-
end
|
66
|
-
|
58
|
+
error_klass = Error::STATUS_MAPPINGS[response.code]
|
67
59
|
raise error_klass, response if error_klass
|
68
60
|
|
69
61
|
parsed = response.parsed_response
|
@@ -75,28 +67,25 @@ module Gitlab
|
|
75
67
|
# Sets a base_uri and default_params for requests.
|
76
68
|
# @raise [Error::MissingCredentials] if endpoint not set.
|
77
69
|
def request_defaults(sudo = nil)
|
78
|
-
self.class.default_params sudo: sudo
|
79
70
|
raise Error::MissingCredentials, 'Please set an endpoint to API' unless @endpoint
|
80
71
|
|
72
|
+
self.class.default_params sudo: sudo
|
81
73
|
self.class.default_params.delete(:sudo) if sudo.nil?
|
82
74
|
end
|
83
75
|
|
84
76
|
private
|
85
77
|
|
86
|
-
#
|
78
|
+
# Returns an Authorization header hash
|
87
79
|
#
|
88
|
-
# @param [Hash] options A customizable set of options.
|
89
|
-
# @option options [Boolean] :unauthenticated true if the API call does not require user authentication.
|
90
80
|
# @raise [Error::MissingCredentials] if private_token and auth_token are not set.
|
91
|
-
def authorization_header
|
92
|
-
return if options[:unauthenticated]
|
81
|
+
def authorization_header
|
93
82
|
raise Error::MissingCredentials, 'Please provide a private_token or auth_token for user' unless @private_token
|
94
83
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
84
|
+
if @private_token.size < 21
|
85
|
+
{ 'PRIVATE-TOKEN' => @private_token }
|
86
|
+
else
|
87
|
+
{ 'Authorization' => "Bearer #{@private_token}" }
|
88
|
+
end
|
100
89
|
end
|
101
90
|
|
102
91
|
# Set HTTParty configuration
|
data/lib/gitlab/shell_history.rb
CHANGED
@@ -30,12 +30,8 @@ class Gitlab::Shell
|
|
30
30
|
private
|
31
31
|
|
32
32
|
def history_file
|
33
|
-
|
34
|
-
|
35
|
-
else
|
36
|
-
@history_file = File.open(history_file_path, 'w', 0o600).tap do |file|
|
37
|
-
file.sync = true
|
38
|
-
end
|
33
|
+
@history_file ||= File.open(history_file_path, 'w', 0o600).tap do |file|
|
34
|
+
file.sync = true
|
39
35
|
end
|
40
36
|
rescue Errno::EACCES
|
41
37
|
warn 'History not saved; unable to open your history file for writing.'
|
@@ -50,8 +46,8 @@ class Gitlab::Shell
|
|
50
46
|
path = history_file_path
|
51
47
|
|
52
48
|
File.foreach(path) { |line| yield(line) } if File.exist?(path)
|
53
|
-
rescue StandardError =>
|
54
|
-
warn "History file not loaded: #{
|
49
|
+
rescue StandardError => e
|
50
|
+
warn "History file not loaded: #{e.message}"
|
55
51
|
end
|
56
52
|
|
57
53
|
def max_lines
|
data/lib/gitlab/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nihad Abbasov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-12-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -140,6 +140,8 @@ files:
|
|
140
140
|
- lib/gitlab/cli_helpers.rb
|
141
141
|
- lib/gitlab/client.rb
|
142
142
|
- lib/gitlab/client/access_requests.rb
|
143
|
+
- lib/gitlab/client/application_settings.rb
|
144
|
+
- lib/gitlab/client/avatar.rb
|
143
145
|
- lib/gitlab/client/award_emojis.rb
|
144
146
|
- lib/gitlab/client/boards.rb
|
145
147
|
- lib/gitlab/client/branches.rb
|
@@ -147,16 +149,23 @@ files:
|
|
147
149
|
- lib/gitlab/client/build_variables.rb
|
148
150
|
- lib/gitlab/client/builds.rb
|
149
151
|
- lib/gitlab/client/commits.rb
|
152
|
+
- lib/gitlab/client/container_registry.rb
|
150
153
|
- lib/gitlab/client/deployments.rb
|
151
154
|
- lib/gitlab/client/environments.rb
|
155
|
+
- lib/gitlab/client/epics.rb
|
152
156
|
- lib/gitlab/client/events.rb
|
153
157
|
- lib/gitlab/client/features.rb
|
158
|
+
- lib/gitlab/client/group_boards.rb
|
159
|
+
- lib/gitlab/client/group_labels.rb
|
154
160
|
- lib/gitlab/client/group_milestones.rb
|
155
161
|
- lib/gitlab/client/groups.rb
|
162
|
+
- lib/gitlab/client/issue_links.rb
|
156
163
|
- lib/gitlab/client/issues.rb
|
157
164
|
- lib/gitlab/client/jobs.rb
|
158
165
|
- lib/gitlab/client/keys.rb
|
159
166
|
- lib/gitlab/client/labels.rb
|
167
|
+
- lib/gitlab/client/lint.rb
|
168
|
+
- lib/gitlab/client/markdown.rb
|
160
169
|
- lib/gitlab/client/merge_request_approvals.rb
|
161
170
|
- lib/gitlab/client/merge_requests.rb
|
162
171
|
- lib/gitlab/client/milestones.rb
|
@@ -176,6 +185,7 @@ files:
|
|
176
185
|
- lib/gitlab/client/repository_submodules.rb
|
177
186
|
- lib/gitlab/client/resource_label_events.rb
|
178
187
|
- lib/gitlab/client/runners.rb
|
188
|
+
- lib/gitlab/client/search.rb
|
179
189
|
- lib/gitlab/client/services.rb
|
180
190
|
- lib/gitlab/client/sidekiq.rb
|
181
191
|
- lib/gitlab/client/snippets.rb
|
@@ -216,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
226
|
- !ruby/object:Gem::Version
|
217
227
|
version: '0'
|
218
228
|
requirements: []
|
219
|
-
rubygems_version: 3.0.
|
229
|
+
rubygems_version: 3.0.6
|
220
230
|
signing_key:
|
221
231
|
specification_version: 4
|
222
232
|
summary: A Ruby wrapper and CLI for the GitLab API
|