universal-git-client 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,110 @@
1
+ require 'universal-git-client/normalizers/base'
2
+
3
+ module UniversalGitClient
4
+ module Normalizers
5
+ class BitbucketServer < Base
6
+ def current_page_index
7
+ current_page.to_s
8
+ rescue StandardError
9
+ nil
10
+ end
11
+
12
+ def first_page_index
13
+ '1'
14
+ end
15
+
16
+ def prev_page_index
17
+ prev_page&.to_s
18
+ end
19
+
20
+ def next_page_index
21
+ next_page&.to_s
22
+ end
23
+
24
+ def last_page_index
25
+ nil
26
+ end
27
+
28
+ def per_page_index
29
+ response.request.options[:query][:limit].to_s
30
+ rescue StandardError
31
+ nil
32
+ end
33
+
34
+ private
35
+
36
+ def next_page
37
+ next_page_start = response.parsed_response['nextPageStart']
38
+ if next_page_start
39
+ ( next_page_start.to_i / per_page_index.to_i) + 1
40
+ else
41
+ nil
42
+ end
43
+ rescue StandardError
44
+ nil
45
+ end
46
+
47
+ def current_page
48
+ (response.request.options[:query][:start].to_i / per_page_index.to_i) + 1
49
+ end
50
+
51
+ def prev_page
52
+ current_page > 1 ? current_page - 1 : nil
53
+ end
54
+
55
+ class UserSerializer < BaseSerializer
56
+ set_id :account_id
57
+ attribute :login, &:username
58
+ attribute :name, &:display_name
59
+
60
+ attribute :avatar_url do |object|
61
+ object.links.avatar.href
62
+ end
63
+ end
64
+
65
+ class OrganizationSerializer < BaseSerializer
66
+ set_id :uuid
67
+ attribute :login, &:username
68
+
69
+ attribute :avatar_url do |object|
70
+ object.links.avatar.href
71
+ end
72
+ end
73
+
74
+ class RepositorySerializer < BaseSerializer
75
+ attribute :name, &:slug
76
+ attribute :archived do false end
77
+ attribute :default_branch do nil end
78
+
79
+ attribute :full_name do |object|
80
+ "#{object.project.key}/#{object.name}"
81
+ end
82
+
83
+ attribute :full_path do |object|
84
+ "#{object.project.key}/#{object.slug}"
85
+ end
86
+
87
+ attribute :private do |object|
88
+ !object.public
89
+ end
90
+ end
91
+
92
+ class BranchSerializer < BaseSerializer
93
+ set_id :displayId
94
+ attribute :name, &:displayId
95
+ attribute :commit, &:latestCommit
96
+ attribute :protected do false end
97
+ end
98
+
99
+ class WebhookSerializer < BaseSerializer
100
+ set_id :id
101
+ attributes :url, :active
102
+ attribute :events do |object|
103
+ events = []
104
+ events << 'push' if object.events.include?('repo:refs_changed')
105
+ end
106
+ attribute :type do 'Repository' end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,35 @@
1
+ require 'universal-git-client/normalizers/base'
2
+
3
+ module UniversalGitClient
4
+ module Normalizers
5
+ class Github < Base
6
+ class UserSerializer < BaseSerializer
7
+ attributes :login, :name, :avatar_url
8
+ end
9
+
10
+ class OrganizationSerializer < BaseSerializer
11
+ attributes :login, :avatar_url
12
+ end
13
+
14
+ class RepositorySerializer < BaseSerializer
15
+ attributes :name, :full_name, :private, :archived, :default_branch
16
+ attribute :full_path, &:full_name
17
+ end
18
+
19
+ class BranchSerializer < BaseSerializer
20
+ set_id :name
21
+ attributes :name, :commit, :protected
22
+ attribute :commit do |object|
23
+ object.commit.sha
24
+ end
25
+ end
26
+
27
+ class WebhookSerializer < BaseSerializer
28
+ attributes :type, :url, :secret, :events, :active
29
+ attribute :url do |object|
30
+ object.config.url
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,53 @@
1
+ require 'universal-git-client/normalizers/base'
2
+
3
+ module UniversalGitClient
4
+ module Normalizers
5
+ class Gitlab < Base
6
+ class UserSerializer < BaseSerializer
7
+ attribute :login, &:username
8
+ attributes :name, :avatar_url
9
+ end
10
+
11
+ class OrganizationSerializer < BaseSerializer
12
+ attributes :avatar_url
13
+ attribute :login, &:full_path
14
+ end
15
+
16
+ class RepositorySerializer < BaseSerializer
17
+ attributes :name, :archived, :default_branch
18
+ attribute :full_name, &:path_with_namespace
19
+ attribute :full_path, &:path_with_namespace
20
+
21
+ attribute :private do |object|
22
+ case object.visibility
23
+ when 'private'
24
+ true
25
+ else
26
+ false
27
+ end
28
+ end
29
+ end
30
+
31
+ class BranchSerializer < BaseSerializer
32
+ set_id :name
33
+ attributes :name, :protected
34
+
35
+ attribute :commit do |object|
36
+ object.commit.id
37
+ end
38
+ end
39
+
40
+ class WebhookSerializer < BaseSerializer
41
+ attributes :url
42
+ attribute(:active) { true }
43
+ attribute(:type) { 'Repository' }
44
+
45
+ attribute :events do |object|
46
+ events = []
47
+ events << 'push' if object.push_events
48
+ events
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,320 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: universal-git-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.4
5
+ platform: ruby
6
+ authors:
7
+ - HipTest
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deep_merge
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: httparty
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.17.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.17.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: down
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '4.4'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '4.4'
61
+ - !ruby/object:Gem::Dependency
62
+ name: nitlink
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.1'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.1'
75
+ - !ruby/object:Gem::Dependency
76
+ name: dry-configurable
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.8'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.8'
89
+ - !ruby/object:Gem::Dependency
90
+ name: fast_jsonapi
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.5'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.5'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rdoc
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.12'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '3.12'
117
+ - !ruby/object:Gem::Dependency
118
+ name: bundler
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: juwelier
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 2.4.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 2.4.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: simplecov
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.16'
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 0.16.1
155
+ type: :development
156
+ prerelease: false
157
+ version_requirements: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '0.16'
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: 0.16.1
165
+ - !ruby/object:Gem::Dependency
166
+ name: pry
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: 0.12.2
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: 0.12.2
179
+ - !ruby/object:Gem::Dependency
180
+ name: rubocop
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: 0.80.1
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 0.80.1
193
+ - !ruby/object:Gem::Dependency
194
+ name: rspec
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '3.4'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '3.4'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rspec-json_expectations
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '2.2'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '2.2'
221
+ - !ruby/object:Gem::Dependency
222
+ name: webmock
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '2.1'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '2.1'
235
+ - !ruby/object:Gem::Dependency
236
+ name: factory_bot
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '5.0'
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: 5.0.2
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '5.0'
252
+ - - ">="
253
+ - !ruby/object:Gem::Version
254
+ version: 5.0.2
255
+ - !ruby/object:Gem::Dependency
256
+ name: ffaker
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - "~>"
260
+ - !ruby/object:Gem::Version
261
+ version: '2.11'
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - "~>"
267
+ - !ruby/object:Gem::Version
268
+ version: '2.11'
269
+ description: Use this gem to normalize git providers api responses
270
+ email: besancon@smartbear.com
271
+ executables: []
272
+ extensions: []
273
+ extra_rdoc_files:
274
+ - LICENSE
275
+ - README.md
276
+ files:
277
+ - LICENSE
278
+ - README.md
279
+ - VERSION
280
+ - lib/universal-git-client.rb
281
+ - lib/universal-git-client/client.rb
282
+ - lib/universal-git-client/client_factory.rb
283
+ - lib/universal-git-client/configuration.rb
284
+ - lib/universal-git-client/errors.rb
285
+ - lib/universal-git-client/http/base.rb
286
+ - lib/universal-git-client/http/bitbucket.rb
287
+ - lib/universal-git-client/http/bitbucket_server.rb
288
+ - lib/universal-git-client/http/github.rb
289
+ - lib/universal-git-client/http/gitlab.rb
290
+ - lib/universal-git-client/http/helpers/dummy_response.rb
291
+ - lib/universal-git-client/http/response_validation.rb
292
+ - lib/universal-git-client/normalizers/base.rb
293
+ - lib/universal-git-client/normalizers/bitbucket.rb
294
+ - lib/universal-git-client/normalizers/bitbucket_server.rb
295
+ - lib/universal-git-client/normalizers/github.rb
296
+ - lib/universal-git-client/normalizers/gitlab.rb
297
+ homepage: https://github.com/SmartBear/universal-git-client
298
+ licenses:
299
+ - MIT
300
+ metadata: {}
301
+ post_install_message:
302
+ rdoc_options: []
303
+ require_paths:
304
+ - lib
305
+ required_ruby_version: !ruby/object:Gem::Requirement
306
+ requirements:
307
+ - - ">="
308
+ - !ruby/object:Gem::Version
309
+ version: '0'
310
+ required_rubygems_version: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
315
+ requirements: []
316
+ rubygems_version: 3.0.3
317
+ signing_key:
318
+ specification_version: 4
319
+ summary: Use this gem to normalize git providers api responses
320
+ test_files: []