labclient 0.6.0 → 0.7.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 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