nexus_api 1.0.4 → 1.1.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: 07dd575297d828538f762c39b116f348b220e4bce0472ab3a10950b801e4bf18
4
- data.tar.gz: 0b33bb52c7f8775fe92d113cd4b38f3bd088e58f9a1883abeea47f1e23afac53
3
+ metadata.gz: 54540d2831ebe3afc8edbb9dbb5e32f68100d3f4618306d0818edb00ed74a3c8
4
+ data.tar.gz: d950c2e81a149d411b3d13fb6635488ff79f794d0d7a585069b8a2b39915ebc6
5
5
  SHA512:
6
- metadata.gz: 5c254a794bb8edf24992eb4b8ca7dccd9d601a5c2451eabb4dd8a223dc74a5e90994a7a122fc68fb69e73fb75e15bb343a17d85c7b8fcc98b6391f976289d838
7
- data.tar.gz: d21310b932b4fc7539c33fee22ff77c0bdee0f8fbd8a59d17e62f34eb19e87959689b0c4061a2676083b482119c3271ba31c5af736d91e19c27f5697158885d6
6
+ metadata.gz: 2a24f487215f4994725270ac80c522257622113f86019f0f99af7d02d8abad5564bfbb6a353ffb12b851b0b69f3af8b2571e31a313b13bdf7ea63fe3d5000953
7
+ data.tar.gz: 7e9a259841115128402c789caf2b72e84160c50949f08367c38acb9199c6136e8fe0f5620e0eda9fa2c33cb6b40fb1943a8bf8e14f559b4cd7a428837213a8a4
data/CHANGELOG.md CHANGED
@@ -5,6 +5,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
 
8
+ ## [1.1.0](https://github.com/Cisco-AMP/nexus_api/compare/v1.0.4...v1.1.0) - 2020-04-20
9
+ ### Changed
10
+ - `list_repositories` to use the new `beta` API version which returns richer content than the old `v1` version
11
+
12
+ ### Added
13
+ - create methods for hosted `docker`, `maven`, `npm`, `pypi`, and `yum` repository types (`raw` and `rubygems` aren't supported yet)
14
+ - delete method for any repository type
15
+
16
+
8
17
  ## [1.0.4](https://github.com/Cisco-AMP/nexus_api/compare/v1.0.3...v1.0.4) - 2020-03-23
9
18
  ### Added
10
19
  - URL escaping
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nexus_api (1.0.4)
4
+ nexus_api (1.1.0)
5
5
  bundler (~> 2)
6
6
  docker-api (~> 1.34.2)
7
7
  dotenv (~> 2.7.5)
@@ -13,7 +13,11 @@ PATH
13
13
  GEM
14
14
  remote: https://rubygems.org/
15
15
  specs:
16
+ addressable (2.7.0)
17
+ public_suffix (>= 2.0.2, < 5.0)
16
18
  coderay (1.1.2)
19
+ crack (0.4.3)
20
+ safe_yaml (~> 1.0.0)
17
21
  diff-lcs (1.3)
18
22
  docile (1.3.2)
19
23
  docker-api (1.34.2)
@@ -22,12 +26,13 @@ GEM
22
26
  domain_name (0.5.20190701)
23
27
  unf (>= 0.0.5, < 1.0.0)
24
28
  dotenv (2.7.5)
25
- excon (0.72.0)
29
+ excon (0.73.0)
30
+ hashdiff (1.0.1)
26
31
  http-accept (1.7.0)
27
32
  http-cookie (1.0.3)
28
33
  domain_name (~> 0.5)
29
34
  method_source (0.9.2)
30
- mime-types (3.3)
35
+ mime-types (3.3.1)
31
36
  mime-types-data (~> 3.2015)
32
37
  mime-types-data (3.2019.1009)
33
38
  multi_json (1.14.1)
@@ -35,6 +40,7 @@ GEM
35
40
  pry (0.12.2)
36
41
  coderay (~> 1.1.0)
37
42
  method_source (~> 0.9.0)
43
+ public_suffix (4.0.4)
38
44
  rake (10.5.0)
39
45
  rest-client (2.1.0)
40
46
  http-accept (>= 1.7.0, < 2.0)
@@ -54,6 +60,7 @@ GEM
54
60
  diff-lcs (>= 1.2.0, < 2.0)
55
61
  rspec-support (~> 3.9.0)
56
62
  rspec-support (3.9.0)
63
+ safe_yaml (1.0.5)
57
64
  simplecov (0.18.5)
58
65
  docile (~> 1.1)
59
66
  simplecov-html (~> 0.11)
@@ -61,7 +68,11 @@ GEM
61
68
  thor (0.20.3)
62
69
  unf (0.1.4)
63
70
  unf_ext
64
- unf_ext (0.0.7.6)
71
+ unf_ext (0.0.7.7)
72
+ webmock (3.8.3)
73
+ addressable (>= 2.3.6)
74
+ crack (>= 0.3.2)
75
+ hashdiff (>= 0.4.0, < 2.0.0)
65
76
 
66
77
  PLATFORMS
67
78
  ruby
@@ -69,7 +80,8 @@ PLATFORMS
69
80
  DEPENDENCIES
70
81
  nexus_api!
71
82
  rspec (~> 3.0)
72
- simplecov (~> 0.18.5)
83
+ simplecov (~> 0.18)
84
+ webmock (~> 3.8)
73
85
 
74
86
  BUNDLED WITH
75
87
  2.0.2
@@ -0,0 +1,16 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/assets
4
+ def list_assets(repository: nil, paginate: false)
5
+ repository ||= @team_config.assets_repository
6
+ @connection.get_response(endpoint: "assets?repository=#{repository}", paginate: paginate)
7
+ end
8
+
9
+ # GET /service/rest/v1/assets/{id}
10
+ def list_asset(id:)
11
+ @connection.get_response(endpoint: "assets/#{id}")
12
+ end
13
+
14
+ # DELETE /service/rest/v1/assets/{id}
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/blobstores
4
+ # DELETE /service/rest/beta/blobstores/{name}
5
+ # POST /service/rest/beta/blobstores/file
6
+ # GET /service/rest/beta/blobstores/file/{name}
7
+ # PUT /service/rest/beta/blobstores/file/{name}
8
+ # POST /service/rest/beta/blobstores/group
9
+ # GET /service/rest/beta/blobstores/group/{name}
10
+ # PUT /service/rest/beta/blobstores/group/{name}
11
+ # POST /service/rest/beta/blobstores/group/promote/{name}
12
+ # POST /service/rest/beta/blobstores/s3
13
+ # GET /service/rest/beta/blobstores/s3/{name}
14
+ # PUT /service/rest/beta/blobstores/s3/{name}
15
+ # GET /service/rest/v1/blobstores/{id}/quota-status
16
+ end
17
+ end
@@ -0,0 +1,79 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/components
4
+ def list_components(repository: nil, paginate: false)
5
+ repository ||= @team_config.components_repository
6
+ @connection.get_response(endpoint: "components?repository=#{repository}", paginate: paginate)
7
+ end
8
+
9
+ # POST /service/rest/v1/components
10
+ def upload_maven_component(filename:, group_id:, artifact_id:, version:, repository: nil, tag: nil)
11
+ repository ||= @team_config.maven_repository
12
+ parameters = {
13
+ 'maven2.groupId' => group_id,
14
+ 'maven2.artifactId' => artifact_id,
15
+ 'maven2.version' => version,
16
+ 'maven2.asset1' => File.open(filename, 'r'),
17
+ 'maven2.asset1.extension' => filename.split('.').last,
18
+ }
19
+ parameters['maven2.tag'] = tag if tag
20
+ @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
21
+ end
22
+
23
+ def upload_npm_component(filename:, repository: nil, tag: nil)
24
+ repository ||= @team_config.npm_repository
25
+ parameters = {
26
+ 'npm.asset' => File.open(filename, 'r'),
27
+ }
28
+ parameters['npm.tag'] = tag if tag
29
+ @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
30
+ end
31
+
32
+ def upload_pypi_component(filename:, repository: nil, tag: nil)
33
+ repository ||= @team_config.pypi_repository
34
+ parameters = {
35
+ 'pypi.asset' => File.open(filename, 'r'),
36
+ }
37
+ parameters['pypi.tag'] = tag if tag
38
+ @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
39
+ end
40
+
41
+ def upload_raw_component(filename:, directory:, repository: nil, tag: nil)
42
+ repository ||= @team_config.raw_repository
43
+ parameters = {
44
+ 'raw.directory' => directory,
45
+ 'raw.asset1' => File.open(filename, 'r'),
46
+ 'raw.asset1.filename' => filename.split('/').last,
47
+ }
48
+ parameters['raw.tag'] = tag if tag
49
+ @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
50
+ end
51
+
52
+ def upload_rubygems_component(filename:, repository: nil, tag: nil)
53
+ repository ||= @team_config.rubygems_repository
54
+ parameters = {
55
+ 'rubygems.asset' => File.open(filename, 'r'),
56
+ }
57
+ parameters['rubygems.tag'] = tag if tag
58
+ @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
59
+ end
60
+
61
+ def upload_yum_component(filename:, directory:, repository: nil, tag: nil)
62
+ repository ||= @team_config.yum_repository
63
+ parameters = {
64
+ 'yum.directory' => directory,
65
+ 'yum.asset' => File.open(filename, 'r'),
66
+ 'yum.asset.filename' => filename.split('/').last,
67
+ }
68
+ parameters['yum.tag'] = tag if tag
69
+ @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
70
+ end
71
+
72
+ # GET /service/rest/v1/components/{id}
73
+ def list_component(id:)
74
+ @connection.get_response(endpoint: "components/#{id}")
75
+ end
76
+
77
+ # DELETE /service/rest/v1/components/{id}
78
+ end
79
+ end
@@ -0,0 +1,9 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/content-selectors
4
+ # POST /service/rest/beta/security/content-selectors
5
+ # GET /service/rest/beta/security/content-selectors/{name}
6
+ # PUT /service/rest/beta/security/content-selectors/{name}
7
+ # DELETE /service/rest/beta/security/content-selectors/{name}
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/email
4
+ # PUT /service/rest/beta/email
5
+ # DELETE /service/rest/beta/email
6
+ # POST /service/rest/beta/email/verify
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/formats/{format}/upload-specs
4
+ # GET /service/rest/v1/formats/upload-specs
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/iq
4
+ # PUT /service/rest/beta/iq
5
+ # POST /service/rest/beta/iq/disable
6
+ # POST /service/rest/beta/iq/enable
7
+ # POST /service/rest/beta/iq/verify-connection
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/ldap
4
+ # POST /service/rest/beta/security/ldap
5
+ # GET /service/rest/beta/security/ldap/{name}
6
+ # PUT /service/rest/beta/security/ldap/{name}
7
+ # DELETE /service/rest/beta/security/ldap/{name}
8
+ # POST /service/rest/beta/security/ldap/change-order
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/system/license
4
+ # POST /service/rest/beta/system/license
5
+ # DELETE /service/rest/beta/system/license
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module NexusAPI
2
+ class API
3
+ # PUT /service/rest/v1/lifecycle/bounce
4
+ # GET /service/rest/v1/lifecycle/phase
5
+ # PUT /service/rest/v1/lifecycle/phase
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/privileges
4
+ # GET /service/rest/beta/security/privileges/{privilegeId}
5
+ # DELETE /service/rest/beta/security/privileges/{privilegeId}
6
+ # POST /service/rest/beta/security/privileges/application
7
+ # PUT /service/rest/beta/security/privileges/application/{privilegeId}
8
+ # POST /service/rest/beta/security/privileges/repository-admin
9
+ # PUT /service/rest/beta/security/privileges/repository-admin/{privilegeId}
10
+ # POST /service/rest/beta/security/privileges/repository-content-selector
11
+ # PUT /service/rest/beta/security/privileges/repository-content-selector/{privilegeId}
12
+ # POST /service/rest/beta/security/privileges/repository-view
13
+ # PUT /service/rest/beta/security/privileges/repository-view/{privilegeId}
14
+ # POST /service/rest/beta/security/privileges/script
15
+ # PUT /service/rest/beta/security/privileges/script/{privilegeId}
16
+ # POST /service/rest/beta/security/privileges/wildcard
17
+ # PUT /service/rest/beta/security/privileges/wildcard/{privilegeId}
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/read-only
4
+ # POST /service/rest/v1/read-only/force-release
5
+ # POST /service/rest/v1/read-only/freeze
6
+ # POST /service/rest/v1/read-only/release
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/realms/active
4
+ # PUT /service/rest/beta/security/realms/active
5
+ # GET /service/rest/beta/security/realms/available
6
+ end
7
+ end
@@ -0,0 +1,104 @@
1
+ require 'utilities/parameter_builder'
2
+
3
+ module NexusAPI
4
+ class API
5
+ # GET /service/rest/v1/repositories (This endpoint does not paginate)
6
+ # GET /service/rest/beta/repositories
7
+ def list_repositories
8
+ @connection.get_response(endpoint: 'repositories', api_version: 'beta')
9
+ end
10
+
11
+ def list_repository_names
12
+ list_repositories.map { |repo| repo['name'] }
13
+ end
14
+
15
+ # DELETE /service/rest/beta/repositories/{repositoryName}
16
+ def delete_repository(name:)
17
+ @connection.delete(endpoint: "repositories/#{name}", api_version: 'beta')
18
+ end
19
+
20
+ # POST /service/rest/beta/repositories/{repositoryName}/health-check
21
+ # DELETE /service/rest/beta/repositories/{repositoryName}/health-check
22
+ # POST /service/rest/beta/repositories/{repositoryName}/invalidate-cache
23
+ # POST /service/rest/beta/repositories/{repositoryName}/rebuild-index
24
+ # POST /service/rest/beta/repositories/apt/hosted
25
+ # PUT /service/rest/beta/repositories/apt/hosted/{repositoryName}
26
+ # POST /service/rest/beta/repositories/apt/proxy
27
+ # PUT /service/rest/beta/repositories/apt/proxy/{repositoryName}
28
+ # POST /service/rest/beta/repositories/bower/group
29
+ # PUT /service/rest/beta/repositories/bower/group/{repositoryName}
30
+ # POST /service/rest/beta/repositories/bower/hosted
31
+ # PUT /service/rest/beta/repositories/bower/hosted/{repositoryName}
32
+ # POST /service/rest/beta/repositories/bower/proxy
33
+ # PUT /service/rest/beta/repositories/bower/proxy/{repositoryName}
34
+ # POST /service/rest/beta/repositories/conan/proxy
35
+ # PUT /service/rest/beta/repositories/conan/proxy/{repositoryName}
36
+ # POST /service/rest/beta/repositories/docker/group
37
+ # PUT /service/rest/beta/repositories/docker/group/{repositoryName}
38
+ # POST /service/rest/beta/repositories/docker/hosted
39
+ def create_repository_docker_hosted(name:, port:)
40
+ parameters = ParameterBuilder.docker_hosted(name, port)
41
+ @connection.post(endpoint: 'repositories/docker/hosted', parameters: parameters, api_version: 'beta')
42
+ end
43
+
44
+ # PUT /service/rest/beta/repositories/docker/hosted/{repositoryName}
45
+ # POST /service/rest/beta/repositories/docker/proxy
46
+ # PUT /service/rest/beta/repositories/docker/proxy/{repositoryName}
47
+ # POST /service/rest/beta/repositories/gitlfs/hosted
48
+ # PUT /service/rest/beta/repositories/gitlfs/hosted/{repositoryName}
49
+ # POST /service/rest/beta/repositories/go/group
50
+ # PUT /service/rest/beta/repositories/go/group/{repositoryName}
51
+ # POST /service/rest/beta/repositories/go/proxy
52
+ # PUT /service/rest/beta/repositories/go/proxy/{repositoryName}
53
+ # POST /service/rest/beta/repositories/helm/hosted
54
+ # PUT /service/rest/beta/repositories/helm/hosted/{repositoryName}
55
+ # POST /service/rest/beta/repositories/helm/proxy
56
+ # PUT /service/rest/beta/repositories/helm/proxy/{repositoryName}
57
+ # POST /service/rest/beta/repositories/maven/hosted
58
+ def create_repository_maven_hosted(name:)
59
+ parameters = ParameterBuilder.maven_hosted(name)
60
+ @connection.post(endpoint: 'repositories/maven/hosted', parameters: parameters, api_version: 'beta')
61
+ end
62
+
63
+ # PUT /service/rest/beta/repositories/maven/hosted/{repositoryName}
64
+ # POST /service/rest/beta/repositories/maven/proxy
65
+ # PUT /service/rest/beta/repositories/maven/proxy/{repositoryName}
66
+ # POST /service/rest/beta/repositories/npm/group
67
+ # PUT /service/rest/beta/repositories/npm/group/{repositoryName}
68
+ # POST /service/rest/beta/repositories/npm/hosted
69
+ def create_repository_npm_hosted(name:)
70
+ parameters = ParameterBuilder.npm_hosted(name)
71
+ @connection.post(endpoint: 'repositories/npm/hosted', parameters: parameters, api_version: 'beta')
72
+ end
73
+
74
+ # PUT /service/rest/beta/repositories/npm/hosted/{repositoryName}
75
+ # POST /service/rest/beta/repositories/npm/proxy
76
+ # PUT /service/rest/beta/repositories/npm/proxy/{repositoryName}
77
+ # POST /service/rest/beta/repositories/nuget/group
78
+ # PUT /service/rest/beta/repositories/nuget/group/{repositoryName}
79
+ # POST /service/rest/beta/repositories/nuget/hosted
80
+ # PUT /service/rest/beta/repositories/nuget/hosted/{repositoryName}
81
+ # POST /service/rest/beta/repositories/nuget/proxy
82
+ # PUT /service/rest/beta/repositories/nuget/proxy/{repositoryName}
83
+ # POST /service/rest/beta/repositories/p2/proxy
84
+ # PUT /service/rest/beta/repositories/p2/proxy/{repositoryName}
85
+ # POST /service/rest/beta/repositories/pypi/group
86
+ # PUT /service/rest/beta/repositories/pypi/group/{repositoryName}
87
+ # POST /service/rest/beta/repositories/pypi/hosted
88
+ def create_repository_pypi_hosted(name:)
89
+ parameters = ParameterBuilder.pypi_hosted(name)
90
+ @connection.post(endpoint: 'repositories/pypi/hosted', parameters: parameters, api_version: 'beta')
91
+ end
92
+
93
+ # PUT /service/rest/beta/repositories/pypi/hosted/{repositoryName}
94
+ # POST /service/rest/beta/repositories/pypi/proxy
95
+ # PUT /service/rest/beta/repositories/pypi/proxy/{repositoryName}
96
+ # POST /service/rest/beta/repositories/yum/hosted
97
+ def create_repository_yum_hosted(name:, depth:)
98
+ parameters = ParameterBuilder.yum_hosted(name, depth)
99
+ @connection.post(endpoint: 'repositories/yum/hosted', parameters: parameters, api_version: 'beta')
100
+ end
101
+
102
+ # PUT /service/rest/beta/repositories/yum/hosted/{repositoryName}
103
+ end
104
+ end
@@ -0,0 +1,9 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/roles
4
+ # POST /service/rest/beta/security/roles
5
+ # GET /service/rest/beta/security/roles/{id}
6
+ # PUT /service/rest/beta/security/roles/{id}
7
+ # DELETE /service/rest/beta/security/roles/{id}
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/routing-rules
4
+ # POST /service/rest/beta/routing-rules
5
+ # GET /service/rest/beta/routing-rules/{name}
6
+ # PUT /service/rest/beta/routing-rules/{name}
7
+ # DELETE /service/rest/beta/routing-rules/{name}
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/security/saml
4
+ # PUT /service/rest/v1/security/saml
5
+ # DELETE /service/rest/v1/security/saml
6
+ # GET /service/rest/v1/security/saml/metadata
7
+ # GET /service/rest/v1/security/saml/pem
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/script
4
+ def list_scripts
5
+ @connection.get_response(endpoint: "script")
6
+ end
7
+
8
+ # POST /service/rest/v1/script
9
+ def upload_script(filename:)
10
+ puts_deprecated_notice
11
+ file = File.read(filename)
12
+ @connection.post(endpoint: "script", parameters: file)
13
+ end
14
+
15
+ # GET /service/rest/v1/script/{name}
16
+ # PUT /service/rest/v1/script/{name}
17
+ # DELETE /service/rest/v1/script/{name}
18
+ def delete_script(name:)
19
+ @connection.delete(endpoint: "script/#{name}")
20
+ end
21
+
22
+ # POST /service/rest/v1/script/{name}/run
23
+ def run_script(name:)
24
+ puts_deprecated_notice
25
+ @connection.post(endpoint: "script/#{name}/run", headers: {'Content-Type' => 'text/plain'})
26
+ end
27
+
28
+
29
+ private
30
+
31
+ def puts_deprecated_notice
32
+ puts 'WARNING: This endpoint has been disabled in Nexus due to a vulnerability'
33
+ puts ' and may not work as intended. An HTTP 410 is an indication of this'
34
+ puts ' See https://issues.sonatype.org/browse/NEXUS-23205 for details'
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/search
4
+
5
+ # GET /service/rest/v1/search/assets
6
+ def search_asset(name:, format: nil, repository: nil, sha1: nil, version: nil, paginate: false)
7
+ repository ||= @team_config.search_repository
8
+ endpoint = "search/assets?q=#{name}"
9
+ endpoint += "&format=#{format}" unless format.nil?
10
+ endpoint += "&repository=#{repository}" unless repository.nil?
11
+ endpoint += "&sha1=#{sha1}" unless sha1.nil?
12
+ endpoint += "&version=#{version}" unless version.nil?
13
+ @connection.get_response(endpoint: endpoint, paginate: paginate)
14
+ end
15
+
16
+ # GET /service/rest/v1/search/assets/download
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/ssl
4
+ # GET /service/rest/beta/security/ssl/truststore
5
+ # POST /service/rest/beta/security/ssl/truststore
6
+ # DELETE /service/rest/beta/security/ssl/truststore/{id}
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module NexusAPI
2
+ class API
3
+ # POST /service/rest/v1/staging/delete
4
+ # POST /service/rest/v1/staging/move/{destination}
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/status
4
+ def status
5
+ @connection.get(endpoint: 'status')
6
+ end
7
+
8
+ # GET /service/rest/v1/status/check
9
+
10
+ # GET /service/rest/v1/status/writable
11
+ def status_writable
12
+ @connection.get(endpoint: 'status/writable')
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ module NexusAPI
2
+ class API
3
+ # POST /service/rest/v1/support/supportzip
4
+ end
5
+ end
@@ -0,0 +1,44 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/tags
4
+ def list_tags(paginate: false)
5
+ @connection.get_response(endpoint: 'tags', paginate: paginate)
6
+ end
7
+
8
+ # POST /service/rest/v1/tags
9
+ def create_tag(name:)
10
+ parameters = JSON.dump({
11
+ 'name' => name,
12
+ })
13
+ @connection.post(endpoint: 'tags', parameters: parameters)
14
+ end
15
+
16
+ # GET /service/rest/v1/tags/{name}
17
+ # PUT /service/rest/v1/tags/{name}
18
+ # DELETE /service/rest/v1/tags/{name}
19
+ def delete_tag(name:)
20
+ @connection.delete(endpoint: "tags/#{name}")
21
+ end
22
+
23
+ # POST /service/rest/v1/tags/associate/{tagName}
24
+ def associate_tag(name:, sha1:, repository: nil)
25
+ repository ||= @team_config.tag_repository
26
+ search_query =
27
+ "?"\
28
+ "wait=true&"\
29
+ "repository=#{repository}&"\
30
+ "sha1=#{sha1}"
31
+ @connection.post(endpoint: "tags/associate/#{name}" + search_query)
32
+ end
33
+
34
+ # DELETE /service/rest/v1/tags/associate/{tagName}
35
+ def delete_associated_tag(name:, sha1:, repository: nil)
36
+ repository ||= @team_config.tag_repository
37
+ search_query =
38
+ "?"\
39
+ "repository=#{repository}&"\
40
+ "sha1=#{sha1}"
41
+ @connection.delete(endpoint: "tags/associate/#{name}" + search_query)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,8 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/v1/tasks
4
+ # GET /service/rest/v1/tasks/{id}
5
+ # POST /service/rest/v1/tasks/{id}/run
6
+ # POST /service/rest/v1/tasks/{id}/stop
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/user-sources
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module NexusAPI
2
+ class API
3
+ # DELETE /service/rest/beta/security/user-tokens
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ module NexusAPI
2
+ class API
3
+ # GET /service/rest/beta/security/users
4
+ # POST /service/rest/beta/security/users
5
+ # PUT /service/rest/beta/security/users/{userId}
6
+ # DELETE /service/rest/beta/security/users/{userId}
7
+ # PUT /service/rest/beta/security/users/{userId}/change-password
8
+ # DELETE /service/rest/beta/security/users/{userId}/user-token
9
+ end
10
+ end
data/lib/endpoints.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'endpoints/assets'
2
+ require 'endpoints/blobstore'
3
+ require 'endpoints/components'
4
+ require 'endpoints/content-selectors'
5
+ require 'endpoints/email'
6
+ require 'endpoints/formats'
7
+ require 'endpoints/iq'
8
+ require 'endpoints/ldap'
9
+ require 'endpoints/license'
10
+ require 'endpoints/lifecycle'
11
+ require 'endpoints/privileges'
12
+ require 'endpoints/read-only'
13
+ require 'endpoints/realms'
14
+ require 'endpoints/repositories'
15
+ require 'endpoints/roles'
16
+ require 'endpoints/routing-rules'
17
+ require 'endpoints/saml'
18
+ require 'endpoints/script'
19
+ require 'endpoints/search'
20
+ require 'endpoints/ssl'
21
+ require 'endpoints/staging'
22
+ require 'endpoints/status'
23
+ require 'endpoints/support'
24
+ require 'endpoints/tags'
25
+ require 'endpoints/tasks'
26
+ require 'endpoints/user-sources'
27
+ require 'endpoints/user-tokens'
28
+ require 'endpoints/users'
@@ -1,10 +1,11 @@
1
1
  require 'base64'
2
+ require 'json'
2
3
  require 'rest-client'
3
4
  require 'uri'
4
5
 
5
6
  module NexusAPI
6
7
  class NexusConnection
7
- VALID_RESPONSE_CODES = [200, 204].freeze
8
+ VALID_RESPONSE_CODES = [200, 201, 204].freeze
8
9
 
9
10
  attr_accessor :continuation_token
10
11
 
@@ -14,40 +15,43 @@ module NexusAPI
14
15
  @hostname = hostname
15
16
  end
16
17
 
17
- def get_response(endpoint:, paginate: false, headers: {'Content-Type' => 'application/json'})
18
- response = send_get(endpoint, paginate, headers)
18
+ def get_response(endpoint:, paginate: false, headers: {'Content-Type' => 'application/json'}, api_version: 'v1')
19
+ response = send_get(endpoint, paginate, headers, api_version)
19
20
  response.nil? ? Hash.new : jsonize(response)
20
21
  end
21
22
 
22
- def get(endpoint:, paginate: false, headers: {'Content-Type' => 'application/json'})
23
- valid?(send_get(endpoint, paginate, headers))
23
+ def get(endpoint:, paginate: false, headers: {'Content-Type' => 'application/json'}, api_version: 'v1')
24
+ valid?(send_get(endpoint, paginate, headers, api_version))
24
25
  end
25
26
 
26
- def post(endpoint:, parameters: '', headers: {'Content-Type' => 'application/json'})
27
+ def post(endpoint:, parameters: '', headers: {'Content-Type' => 'application/json'}, api_version: 'v1')
27
28
  response = send_request(
28
29
  :post,
29
30
  endpoint,
30
31
  parameters: parameters,
31
- headers: headers
32
+ headers: headers,
33
+ api_version: api_version
32
34
  )
33
35
  valid?(response)
34
36
  end
35
37
 
36
- def put(endpoint:, parameters: '', headers: {'Content-Type' => 'application/json'})
38
+ def put(endpoint:, parameters: '', headers: {'Content-Type' => 'application/json'}, api_version: 'v1')
37
39
  response = send_request(
38
40
  :put,
39
41
  endpoint,
40
42
  parameters: parameters,
41
- headers: headers
43
+ headers: headers,
44
+ api_version: api_version
42
45
  )
43
46
  valid?(response)
44
47
  end
45
48
 
46
- def delete(endpoint:, headers: {'Content-Type' => 'application/json'})
49
+ def delete(endpoint:, headers: {'Content-Type' => 'application/json'}, api_version: 'v1')
47
50
  response = send_request(
48
51
  :delete,
49
52
  endpoint,
50
- headers: headers
53
+ headers: headers,
54
+ api_version: api_version
51
55
  )
52
56
  valid?(response)
53
57
  end
@@ -103,8 +107,8 @@ module NexusAPI
103
107
  { :Authorization => 'Basic ' + Base64.strict_encode64( "#{@username}:#{@password}" ) }
104
108
  end
105
109
 
106
- def send_request(connection_method, endpoint, parameters: '', headers: {})
107
- url = "https://#{@hostname}/service/rest/v1/#{endpoint}"
110
+ def send_request(connection_method, endpoint, parameters: '', headers: {}, api_version: 'v1')
111
+ url = "https://#{@hostname}/service/rest/#{api_version}/#{endpoint}"
108
112
  catch_connection_error do
109
113
  RestClient::Request.execute(
110
114
  method: connection_method,
@@ -115,14 +119,15 @@ module NexusAPI
115
119
  end
116
120
  end
117
121
 
118
- def send_get(endpoint, paginate, headers)
122
+ def send_get(endpoint, paginate, headers, api_version)
119
123
  # paginate answers is the user requesting pagination, paginate? answers does a continuation token exist
120
124
  # if an empty continuation token is included in the request we'll get an ArrayIndexOutOfBoundsException
121
125
  endpoint += "&continuationToken=#{@continuation_token}" if paginate && paginate?
122
126
  response = send_request(
123
127
  :get,
124
128
  endpoint,
125
- headers: headers
129
+ headers: headers,
130
+ api_version: api_version
126
131
  )
127
132
  end
128
133
 
@@ -1,4 +1,4 @@
1
1
  module NexusAPI
2
- VERSION = '1.0.4'
2
+ VERSION = '1.1.0'
3
3
  end
4
4
 
data/lib/nexus_api.rb CHANGED
@@ -1,9 +1,9 @@
1
+ require 'endpoints'
1
2
  require 'nexus_api/version'
2
3
  require 'nexus_api/docker_shell'
3
4
  require 'nexus_api/docker_manager'
4
5
  require 'nexus_api/nexus_connection'
5
6
  require 'nexus_api/config_manager'
6
- require 'json'
7
7
  require 'pry'
8
8
 
9
9
  # Nexus API docs:
@@ -40,289 +40,6 @@ module NexusAPI
40
40
  @team_config = NexusAPI::ConfigManager.new(config_path: team_config)
41
41
  end
42
42
 
43
-
44
- # ---ASSETS---
45
- # GET /service/rest/v1/assets
46
- def list_assets(repository: nil, paginate: false)
47
- repository ||= @team_config.assets_repository
48
- @connection.get_response(endpoint: "assets?repository=#{repository}", paginate: paginate)
49
- end
50
-
51
- # GET /service/rest/v1/assets/{id}
52
- def list_asset(id:)
53
- @connection.get_response(endpoint: "assets/#{id}")
54
- end
55
-
56
- # DELETE /service/rest/v1/assets/{id}
57
-
58
-
59
- # ---BLOB STORE---
60
- # GET /service/rest/v1/blobstores/{id}/quota-status
61
-
62
-
63
- # ---COMPONENTS---
64
- # GET /service/rest/v1/components
65
- def list_components(repository: nil, paginate: false)
66
- repository ||= @team_config.components_repository
67
- @connection.get_response(endpoint: "components?repository=#{repository}", paginate: paginate)
68
- end
69
-
70
- # POST /service/rest/v1/components
71
- def upload_maven_component(filename:, group_id:, artifact_id:, version:, repository: nil, tag: nil)
72
- repository ||= @team_config.maven_repository
73
- parameters = {
74
- 'maven2.groupId' => group_id,
75
- 'maven2.artifactId' => artifact_id,
76
- 'maven2.version' => version,
77
- 'maven2.asset1' => File.open(filename, 'r'),
78
- 'maven2.asset1.extension' => filename.split('.').last,
79
- }
80
- parameters['maven2.tag'] = tag if tag
81
- @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
82
- end
83
-
84
- def upload_npm_component(filename:, repository: nil, tag: nil)
85
- repository ||= @team_config.npm_repository
86
- parameters = {
87
- 'npm.asset' => File.open(filename, 'r'),
88
- }
89
- parameters['npm.tag'] = tag if tag
90
- @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
91
- end
92
-
93
- def upload_pypi_component(filename:, repository: nil, tag: nil)
94
- repository ||= @team_config.pypi_repository
95
- parameters = {
96
- 'pypi.asset' => File.open(filename, 'r'),
97
- }
98
- parameters['pypi.tag'] = tag if tag
99
- @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
100
- end
101
-
102
- def upload_raw_component(filename:, directory:, repository: nil, tag: nil)
103
- repository ||= @team_config.raw_repository
104
- parameters = {
105
- 'raw.directory' => directory,
106
- 'raw.asset1' => File.open(filename, 'r'),
107
- 'raw.asset1.filename' => filename.split('/').last,
108
- }
109
- parameters['raw.tag'] = tag if tag
110
- @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
111
- end
112
-
113
- def upload_rubygems_component(filename:, repository: nil, tag: nil)
114
- repository ||= @team_config.rubygems_repository
115
- parameters = {
116
- 'rubygems.asset' => File.open(filename, 'r'),
117
- }
118
- parameters['rubygems.tag'] = tag if tag
119
- @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
120
- end
121
-
122
- def upload_yum_component(filename:, directory:, repository: nil, tag: nil)
123
- repository ||= @team_config.yum_repository
124
- parameters = {
125
- 'yum.directory' => directory,
126
- 'yum.asset' => File.open(filename, 'r'),
127
- 'yum.asset.filename' => filename.split('/').last,
128
- }
129
- parameters['yum.tag'] = tag if tag
130
- @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
131
- end
132
-
133
- # GET /service/rest/v1/components/{id}
134
- def list_component(id:)
135
- @connection.get_response(endpoint: "components/#{id}")
136
- end
137
-
138
- # DELETE /service/rest/v1/components/{id}
139
-
140
-
141
- # ---FORMATS---
142
- # GET /service/rest/v1/formats/{format}/upload-specs
143
- # GET /service/rest/v1/formats/upload-specs
144
-
145
-
146
- # ---LIFECYCLE---
147
- # PUT /service/rest/v1/lifecycle/bounce
148
- # GET /service/rest/v1/lifecycle/phase
149
- # PUT /service/rest/v1/lifecycle/phase
150
-
151
-
152
- # ---MAINTENANCE---
153
- # PUT /service/rest/v1/maintenance/{databaseName}/check
154
- # PUT /service/rest/v1/maintenance/{databaseName}/reinstall
155
- # PUT /service/rest/v1/maintenance/{databaseName}/repair
156
- # GET /service/rest/v1/maintenance/{databaseName}/role
157
- # PUT /service/rest/v1/maintenance/{databaseName}/role
158
- # GET /service/rest/v1/maintenance/{databaseName}/status
159
- # PUT /service/rest/v1/maintenance/{databaseName}/status
160
-
161
-
162
- # ---NODES---
163
- # GET /service/rest/v1/nodes
164
- # PUT /service/rest/v1/nodes
165
- # GET /service/rest/v1/nodes/supportzipdownload
166
- # POST /service/rest/v1/nodes/supportzips
167
-
168
-
169
- # ---READ-ONLY---
170
- # GET /service/rest/v1/read-only
171
- # POST /service/rest/v1/read-only/force-release
172
- # POST /service/rest/v1/read-only/freeze
173
- # POST /service/rest/v1/read-only/release
174
-
175
-
176
- # ---REPOSITORIES--- (This endpoint does not paginate)
177
- # GET /service/rest/v1/repositories
178
- def list_repositories
179
- @connection.get_response(endpoint: 'repositories')
180
- end
181
-
182
- def list_repository_names
183
- list_repositories.map { |repo| repo['name'] }
184
- end
185
-
186
-
187
- # ---ROUTING-RULES---
188
- # GET /service/rest/v1/beta/routing-rules
189
- # POST /service/rest/v1/beta/routing-rules
190
- # GET /service/rest/v1/beta/routing-rules/{name}
191
- # PUT /service/rest/v1/beta/routing-rules/{name}
192
- # DELETE /service/rest/v1/beta/routing-rules/{name}
193
-
194
-
195
- # ---SCRIPT---
196
- # GET /service/rest/v1/script
197
- def list_scripts
198
- @connection.get_response(endpoint: "script")
199
- end
200
-
201
- # POST /service/rest/v1/script
202
- def upload_script(filename:)
203
- file = File.read(filename)
204
- @connection.post(endpoint: "script", parameters: file)
205
- end
206
-
207
- # GET /service/rest/v1/script/{name}
208
- # PUT /service/rest/v1/script/{name}
209
- # DELETE /service/rest/v1/script/{name}
210
- def delete_script(name:)
211
- @connection.delete(endpoint: "script/#{name}")
212
- end
213
-
214
- # POST /service/rest/v1/script/{name}/run
215
- def run_script(name:)
216
- @connection.post(endpoint: "script/#{name}/run", headers: {'Content-Type' => 'text/plain'})
217
- end
218
-
219
-
220
- # ---SEARCH---
221
- # GET /service/rest/v1/search
222
-
223
- # GET /service/rest/v1/search/assets
224
- def search_asset(name:, format: nil, repository: nil, sha1: nil, version: nil, paginate: false)
225
- repository ||= @team_config.search_repository
226
- endpoint = "search/assets?q=#{name}"
227
- endpoint += "&format=#{format}" unless format.nil?
228
- endpoint += "&repository=#{repository}" unless repository.nil?
229
- endpoint += "&sha1=#{sha1}" unless sha1.nil?
230
- endpoint += "&version=#{version}" unless version.nil?
231
- @connection.get_response(endpoint: endpoint, paginate: paginate)
232
- end
233
-
234
- # GET /service/rest/v1/search/assets/download
235
-
236
-
237
- # ---SECURITY MANAGEMENT---
238
- # GET /service/rest/v1/beta/security/user-sources
239
-
240
-
241
- # ---SECURITY MANAGEMENT: USER TOKENS---
242
- # DELETE /service/rest/v1/beta/security/user-tokens
243
-
244
-
245
- # ---SECURITY MANAGEMENT: USERS---
246
- # GET /service/rest/v1/beta/security/users
247
- # POST /service/rest/v1/beta/security/users
248
- # PUT /service/rest/v1/beta/security/users/{userId}
249
- # DELETE /service/rest/v1/beta/security/users/{userId}
250
- # PUT /service/rest/v1/beta/security/users/{userId}/change-password
251
- # DELETE /service/rest/v1/beta/security/users/{userId}/user-token
252
-
253
-
254
- # ---STAGING---
255
- # POST /service/rest/v1/staging/delete
256
- # POST /service/rest/v1/staging/move/{destination}
257
-
258
-
259
- # ---STATUS---
260
- # GET /service/rest/v1/status
261
- def status
262
- @connection.get(endpoint: 'status')
263
- end
264
-
265
- # GET /service/rest/v1/status/writable
266
- def status_writable
267
- @connection.get(endpoint: 'status/writable')
268
- end
269
-
270
-
271
- # ---SUPPORT---
272
- # POST /service/rest/v1/support/supportzip
273
-
274
-
275
- # ---TAGS---
276
- # GET /service/rest/v1/tags
277
- def list_tags(paginate: false)
278
- @connection.get_response(endpoint: 'tags', paginate: paginate)
279
- end
280
-
281
- # POST /service/rest/v1/tags
282
- def create_tag(name:)
283
- parameters = JSON.dump({
284
- 'name' => name,
285
- })
286
- @connection.post(endpoint: 'tags', parameters: parameters)
287
- end
288
-
289
- # GET /service/rest/v1/tags/{name}
290
- # PUT /service/rest/v1/tags/{name}
291
- # DELETE /service/rest/v1/tags/{name}
292
- def delete_tag(name:)
293
- @connection.delete(endpoint: "tags/#{name}")
294
- end
295
-
296
- # POST /service/rest/v1/tags/associate/{tagName}
297
- def associate_tag(name:, sha1:, repository: nil)
298
- repository ||= @team_config.tag_repository
299
- search_query =
300
- "?"\
301
- "wait=true&"\
302
- "repository=#{repository}&"\
303
- "sha1=#{sha1}"
304
- @connection.post(endpoint: "tags/associate/#{name}" + search_query)
305
- end
306
-
307
- # DELETE /service/rest/v1/tags/associate/{tagName}
308
- def delete_associated_tag(name:, sha1:, repository: nil)
309
- repository ||= @team_config.tag_repository
310
- search_query =
311
- "?"\
312
- "repository=#{repository}&"\
313
- "sha1=#{sha1}"
314
- @connection.delete(endpoint: "tags/associate/#{name}" + search_query)
315
- end
316
-
317
-
318
- # ---TASKS---
319
- # GET /service/rest/v1/tasks
320
- # GET /service/rest/v1/tasks/{id}
321
- # POST /service/rest/v1/tasks/{id}/run
322
- # POST /service/rest/v1/tasks/{id}/stop
323
-
324
-
325
- # ---CUSTOM FUNCTIONS---
326
43
  def get_asset_size(asset_url:)
327
44
  @connection.content_length(asset_url: asset_url)
328
45
  end
@@ -0,0 +1,92 @@
1
+ require 'json'
2
+
3
+ module NexusAPI
4
+ class ParameterBuilder
5
+ # Write Policies
6
+ ALLOW = 'ALLOW'
7
+ ALLOW_ONCE = 'ALLOW_ONCE'
8
+ DENY = 'DENY'
9
+
10
+ # Version Policy
11
+ RELEASE = 'RELEASE'
12
+ SNAPSHOT = 'SNAPSHOT'
13
+ MIXED = 'MIXED'
14
+
15
+ # Layout or Deploy Policy
16
+ STRICT = 'STRICT'
17
+ PERMISSIVE = 'PERMISSIVE'
18
+
19
+ def self.docker_hosted(name, port, write_policy: ALLOW_ONCE)
20
+ {
21
+ 'name' => name,
22
+ 'online' => true,
23
+ 'storage' => {
24
+ 'blobStoreName' => 'default',
25
+ 'strictContentTypeValidation' => true,
26
+ 'writePolicy' => write_policy
27
+ },
28
+ 'docker' => {
29
+ 'v1Enabled' => false,
30
+ 'forceBasicAuth' => true,
31
+ 'httpPort' => port
32
+ }
33
+ }.to_json
34
+ end
35
+
36
+ def self.maven_hosted(name, write_policy: ALLOW_ONCE, version_policy: RELEASE, layout_policy: STRICT)
37
+ {
38
+ 'name' => name,
39
+ 'online' => true,
40
+ 'storage' => {
41
+ 'blobStoreName' => 'default',
42
+ 'strictContentTypeValidation' => true,
43
+ 'writePolicy' => write_policy
44
+ },
45
+ 'maven' => {
46
+ 'versionPolicy' => version_policy,
47
+ 'layoutPolicy' => layout_policy
48
+ }
49
+ }.to_json
50
+ end
51
+
52
+ def self.npm_hosted(name, write_policy: ALLOW_ONCE)
53
+ {
54
+ 'name' => name,
55
+ 'online' => true,
56
+ 'storage' => {
57
+ 'blobStoreName' => 'default',
58
+ 'strictContentTypeValidation' => true,
59
+ 'writePolicy' => write_policy
60
+ }
61
+ }.to_json
62
+ end
63
+
64
+ def self.pypi_hosted(name, write_policy: ALLOW_ONCE)
65
+ {
66
+ 'name' => name,
67
+ 'online' => true,
68
+ 'storage' => {
69
+ 'blobStoreName' => 'default',
70
+ 'strictContentTypeValidation' => true,
71
+ 'writePolicy' => write_policy
72
+ }
73
+ }.to_json
74
+ end
75
+
76
+ def self.yum_hosted(name, depth, write_policy: ALLOW_ONCE, deploy_policy: STRICT)
77
+ {
78
+ 'name' => name,
79
+ 'online' => true,
80
+ 'storage' => {
81
+ 'blobStoreName' => 'default',
82
+ 'strictContentTypeValidation' => true,
83
+ 'writePolicy' => write_policy
84
+ },
85
+ 'yum' => {
86
+ 'repodataDepth' => depth,
87
+ 'deployPolicy' => deploy_policy
88
+ }
89
+ }.to_json
90
+ end
91
+ end
92
+ end
data/nexus_api.gemspec CHANGED
@@ -32,5 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_runtime_dependency 'thor', "~> 0.20.3"
33
33
 
34
34
  spec.add_development_dependency 'rspec', "~> 3.0"
35
- spec.add_development_dependency 'simplecov', "~> 0.18.5"
35
+ spec.add_development_dependency 'simplecov', "~> 0.18"
36
+ spec.add_development_dependency 'webmock', "~> 3.8"
36
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexus_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Levesque
@@ -129,14 +129,28 @@ dependencies:
129
129
  requirements:
130
130
  - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: 0.18.5
132
+ version: '0.18'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 0.18.5
139
+ version: '0.18'
140
+ - !ruby/object:Gem::Dependency
141
+ name: webmock
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '3.8'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '3.8'
140
154
  description:
141
155
  email:
142
156
  - francis.d.levesque@gmail.com
@@ -163,6 +177,35 @@ files:
163
177
  - bin/release
164
178
  - bin/setup
165
179
  - bin/test
180
+ - lib/endpoints.rb
181
+ - lib/endpoints/assets.rb
182
+ - lib/endpoints/blobstore.rb
183
+ - lib/endpoints/components.rb
184
+ - lib/endpoints/content-selectors.rb
185
+ - lib/endpoints/email.rb
186
+ - lib/endpoints/formats.rb
187
+ - lib/endpoints/iq.rb
188
+ - lib/endpoints/ldap.rb
189
+ - lib/endpoints/license.rb
190
+ - lib/endpoints/lifecycle.rb
191
+ - lib/endpoints/privileges.rb
192
+ - lib/endpoints/read-only.rb
193
+ - lib/endpoints/realms.rb
194
+ - lib/endpoints/repositories.rb
195
+ - lib/endpoints/roles.rb
196
+ - lib/endpoints/routing-rules.rb
197
+ - lib/endpoints/saml.rb
198
+ - lib/endpoints/script.rb
199
+ - lib/endpoints/search.rb
200
+ - lib/endpoints/ssl.rb
201
+ - lib/endpoints/staging.rb
202
+ - lib/endpoints/status.rb
203
+ - lib/endpoints/support.rb
204
+ - lib/endpoints/tags.rb
205
+ - lib/endpoints/tasks.rb
206
+ - lib/endpoints/user-sources.rb
207
+ - lib/endpoints/user-tokens.rb
208
+ - lib/endpoints/users.rb
166
209
  - lib/nexus_api.rb
167
210
  - lib/nexus_api/cli.rb
168
211
  - lib/nexus_api/cli_commands/commands.rb
@@ -178,6 +221,7 @@ files:
178
221
  - lib/nexus_api/docker_shell.rb
179
222
  - lib/nexus_api/nexus_connection.rb
180
223
  - lib/nexus_api/version.rb
224
+ - lib/utilities/parameter_builder.rb
181
225
  - nexus_api.gemspec
182
226
  - team_configs/default.yaml
183
227
  - team_configs/template.yaml