labclient 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 866bed156a753e7148f538c380d453899259cae098cca155fba3ed81517d71c7
4
- data.tar.gz: 2f52c954789f226ead00127e029428f2bc32f85757112211082d0a204ecd1c53
3
+ metadata.gz: d74d5b878f7c98298959ec6c47bb4b81a6dcb336391eb4fae8df4f38a180d920
4
+ data.tar.gz: b31895a60a9f209d39f30b33b6975e173e0ce0bc557b3cab30afb6aceb65642e
5
5
  SHA512:
6
- metadata.gz: 13c0c5f1201b8a4a4d77ad09b7496a6ea1c14af360e7d19cce1877467a6b6a70acb018025a36c2746532ffed98e258e6960b03436ebb24bc717d6c895f35af25
7
- data.tar.gz: b1b10db7e1ab7a4ed4a428330d5fac26fead66f09c220b4147e236aa380066d40a439cb6beb60ab0afd321f4620ffe654250af6121114481d935756cc671a901
6
+ metadata.gz: 5548da86087095cf0093be6635ef81da29a2cec523a13834a793056898da03561039cccce12fa757b726945752362498c5673b15f5f33590c6edaf7ff14aff2c
7
+ data.tar.gz: 0d145b1acb0dee2c10ef8ced865a1e073791fcb1616123db9e39ffaabeb1279cff646d1ab0afd6e4a83d87771e4980c7e0ee2bea1a0162c4cc9c42cb584b1f56
@@ -85,7 +85,7 @@ module LabClient
85
85
  klass ? klass.new(resp.data, resp, self) : resp.data
86
86
  when Array
87
87
  if klass.nil?
88
- resp.data
88
+ PaginatedResponse.new(Klass, resp, self)
89
89
  else
90
90
  PaginatedResponse.new(klass, resp, self)
91
91
  end
@@ -83,7 +83,7 @@ module LabClient
83
83
  # Valid Integer in String
84
84
  return obj_id if /\A\d+\z/.match(obj_id)
85
85
 
86
- CGI.escape obj_id.to_s
86
+ ERB::Util.url_encode obj_id.to_s
87
87
  end
88
88
 
89
89
  def format_query_id(key, query)
@@ -47,7 +47,7 @@ module LabClient
47
47
  project_id = format_id(project_id)
48
48
 
49
49
  # Path Name Encoding
50
- file_path = CGI.escape(file_path)
50
+ file_path = ERB::Util.url_encode(file_path)
51
51
 
52
52
  client.request(:post, "projects/#{project_id}/repository/files/#{file_path}", nil, query)
53
53
  end
@@ -38,7 +38,7 @@ module LabClient
38
38
  project_id = format_id(project_id)
39
39
 
40
40
  # Path Name Encoding
41
- file_path = CGI.escape(file_path)
41
+ file_path = ERB::Util.url_encode(file_path)
42
42
 
43
43
  client.request(:delete, "projects/#{project_id}/repository/files/#{file_path}", nil, query)
44
44
  end
@@ -27,25 +27,27 @@ module LabClient
27
27
  desc 'via Project'
28
28
  example <<~DOC
29
29
  project = client.projects.show(264)
30
- project.file('a3c86df3f')
30
+ project.file('README.md')
31
31
  DOC
32
32
  end
33
33
 
34
34
  def show(project_id, file_path, ref = :main, kind = nil)
35
+ # LabStruct vs LabFile
36
+ return_kind = kind == :raw ? LabFile : nil
37
+
35
38
  kind = case kind
36
39
  when :raw
37
40
  '/raw'
38
41
  when :blame
39
42
  '/blame'
40
43
  end
41
- # GET /projects/:id/repository/files/:file_path
42
44
 
43
45
  project_id = format_id(project_id)
44
46
 
45
47
  # Path Name Encoding
46
- file_path = CGI.escape(file_path)
48
+ file_path = ERB::Util.url_encode(file_path)
47
49
 
48
- client.request(:get, "projects/#{project_id}/repository/files/#{file_path}#{kind}", LabFile, ref: ref)
50
+ client.request(:get, "projects/#{project_id}/repository/files/#{file_path}#{kind}", return_kind, ref: ref)
49
51
  end
50
52
  end
51
53
  end
@@ -44,7 +44,7 @@ module LabClient
44
44
  project_id = format_id(project_id)
45
45
 
46
46
  # Path Name Encoding
47
- file_path = CGI.escape(file_path)
47
+ file_path = ERB::Util.url_encode(file_path)
48
48
 
49
49
  client.request(:put, "projects/#{project_id}/repository/files/#{file_path}", nil, query)
50
50
  end
@@ -721,6 +721,15 @@ module LabClient
721
721
  client.projects.clusters.show(id, cluster_id)
722
722
  end
723
723
 
724
+ # Templates
725
+ def templates(template_type)
726
+ client.projects.templates.list(id, template_type)
727
+ end
728
+
729
+ def template_show(template_type, template_name, query = {})
730
+ client.projects.templates.show(id, template_type, template_name, query)
731
+ end
732
+
724
733
  # Reload
725
734
  def reload
726
735
  update_self client.projects.show(id)
@@ -264,6 +264,10 @@ module LabClient
264
264
  # Clusters
265
265
  option 'clusters', 'Returns a list of project clusters.'
266
266
 
267
+ # Clusters
268
+ option 'templates', 'List Templates of Type [String/Symbol]'
269
+ option 'template_show', 'Get one template of a particular type [Type: String/Symbol, Name: String/Symbol, Params: Hash]'
270
+
267
271
  option 'events', 'List project events [Hash]'
268
272
  option 'parent', 'Show (API Call) Project Parent, returns either Group or User'
269
273
  end
@@ -0,0 +1,17 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Inspect Helper
4
+ class ProjectTemplates < Common
5
+ include ClassHelpers
6
+ end
7
+ end
8
+
9
+ # Top namespace
10
+ module LabClient
11
+ # Specifics
12
+ class Projects < Common
13
+ def templates
14
+ ProjectTemplates.new(client)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class ProjectTemplates < Common
5
+ doc 'List' do
6
+ desc 'Get all templates of a particular type. [Project ID, String/Symbol]'
7
+ example 'client.projects.templates.list(15, :issues)'
8
+ result '[{:key=>"Code Contributions", :name=>"Code Contributions"}, ...]'
9
+
10
+ markdown <<~DOC
11
+ | Attribute | Type | Required | Description |
12
+ | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
13
+ | type | string | yes | The type of the template. Accepted values are: `dockerfiles`, `gitignores`, `gitlab_ci_ymls`, `licenses`, `issues`, `merge_requests` |
14
+ DOC
15
+ end
16
+
17
+ doc 'List' do
18
+ desc 'Via Project [String/Symbol]'
19
+ example <<~DOC
20
+ project = client.projects.show(16)
21
+ project.templates(:issues)
22
+ DOC
23
+ end
24
+
25
+ def list(project_id, template_type)
26
+ project_id = format_id(project_id)
27
+ client.request(:get, "projects/#{project_id}/templates/#{template_type}")
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,36 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class ProjectTemplates < Common
5
+ doc 'Show' do
6
+ desc 'Get one template of a particular type. [Project ID, Type: String/Symbol, Name: String/Symbol, Hash]'
7
+ example 'client.projects.templates.show(15,:issues,:elasticsearch)'
8
+ result '[#<Runner id: 1, status: online>, ... ]'
9
+
10
+ markdown <<~DOC
11
+
12
+ | Attribute | Type | Required | Description |
13
+ | ---------------------------- | ----------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
14
+ | type | string | yes | The type of the template. One of: `dockerfiles`, `gitignores`, `gitlab_ci_ymls`, `licenses`, `issues`, or `merge_requests`. |
15
+ | name | string | yes | The key of the template, as obtained from the collection endpoint |
16
+ | source_template_project_id | integer | no | The project ID where a given template is being stored. This is useful when multiple templates from different projects have the same name. If multiple templates have the same name, the match from `closest ancestor` is returned if `source_template_project_id` is not specified |
17
+ | project | string | no | The project name to use when expanding placeholders in the template. Only affects licenses |
18
+ | fullname | string | no | The full name of the copyright holder to use when expanding placeholders in the template. Only affects licenses |
19
+ DOC
20
+ end
21
+
22
+ doc 'List' do
23
+ desc 'Via Project [String/Symbol]'
24
+ example <<~DOC
25
+ project = client.projects.show(16)
26
+ project.template_show(:issues, 'Elasticsearch')
27
+ DOC
28
+ end
29
+
30
+ def show(project_id, template_type, template_name, query = {})
31
+ project_id = format_id(project_id)
32
+
33
+ client.request(:get, "projects/#{project_id}/templates/#{template_type}/#{template_name}", nil, query)
34
+ end
35
+ end
36
+ end
@@ -1,6 +1,6 @@
1
1
  # Overall version
2
2
  module LabClient
3
- VERSION = '0.6.0'.freeze
3
+ VERSION = '0.7.0'.freeze
4
4
 
5
5
  # Make it easy to print version
6
6
  def self.version
data/lib/labclient.rb CHANGED
@@ -7,6 +7,9 @@ require 'gitlab_chronic_duration'
7
7
  require 'ostruct'
8
8
  require 'ougai'
9
9
 
10
+ # Escaping Paths - https://stackoverflow.com/questions/2824126/whats-the-difference-between-uri-escape-and-cgi-escape/13059657#13059657
11
+ require 'erb'
12
+
10
13
  require 'labclient/version'
11
14
  require 'labclient/logger'
12
15
  require 'labclient/docs'
@@ -266,6 +269,11 @@ require 'labclient/projects/access_requests/approve'
266
269
  require 'labclient/projects/access_requests/deny'
267
270
  require 'labclient/projects/access_requests/access_request'
268
271
 
272
+ # Project Templates
273
+ require 'labclient/projects/templates/client'
274
+ require 'labclient/projects/templates/show'
275
+ require 'labclient/projects/templates/list'
276
+
269
277
  # ===========================================================
270
278
  # Final Projects
271
279
  # ===========================================================
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: labclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davin Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-17 00:00:00.000000000 Z
11
+ date: 2022-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -799,6 +799,9 @@ files:
799
799
  - lib/labclient/projects/stars/starred_projects.rb
800
800
  - lib/labclient/projects/stars/starrers.rb
801
801
  - lib/labclient/projects/submodule.rb
802
+ - lib/labclient/projects/templates/client.rb
803
+ - lib/labclient/projects/templates/list.rb
804
+ - lib/labclient/projects/templates/show.rb
802
805
  - lib/labclient/projects/transfer.rb
803
806
  - lib/labclient/projects/triggers/client.rb
804
807
  - lib/labclient/projects/triggers/create.rb