puppet_forge 2.3.4 → 3.0.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
- SHA1:
3
- metadata.gz: 0377da9e98e658af8a1fa77a078231619d31dd74
4
- data.tar.gz: 1ac25a9f0e394453e73d28c69a5fdbe5a4eb27df
2
+ SHA256:
3
+ metadata.gz: 04e64600a52c57a9fef2dce82516632a77e196b1778b2082c925def0ecdbf734
4
+ data.tar.gz: 660cb79c76d923bbe6f101f68f01d913800625688ba59f61152d697054f967bc
5
5
  SHA512:
6
- metadata.gz: 983b63819ebfb51485a948f01a1c341a5f85fbf14cc6b6ccb51213ea4784b6daa3f80c5f79928ce31d22b4ff3932acd7d88af78bd5ef7cf4185365846f4bab89
7
- data.tar.gz: 284ba1a44ac17ef322dfb342758d40d12041f959db18f4d2bb4e0c9150dcbbe8094c99d02f92233c8b073112ce0e2dc3c41f4fcb5e31ee3577b24d04f1698ca2
6
+ metadata.gz: 2199cd27949a3de2c7869bcffea4b489b03aee703b5a1fdb9cac4b9447a90160ecf731cd549b1c8edcfeeb560a6352c0df3836daf2e22d2fdf5290f95f6f9f0b
7
+ data.tar.gz: 2a0053e71e9bccd6cb9cb2168618344426ca9e829f1328f5ff97b1d7d644a164e2a3077f483f2bc0ce2a41078e7daeefaf2d3016730ded51fd24a6cca9b82750
@@ -3,10 +3,10 @@ name: ruby-rspec
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - master
6
+ - main
7
7
  pull_request:
8
8
  branches:
9
- - master
9
+ - main
10
10
 
11
11
  jobs:
12
12
  test:
@@ -3,6 +3,12 @@
3
3
  Starting with v2.0.0, all notable changes to this project will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## v3.0.0 - 2021-01-28
7
+
8
+ * Breaking: The `puppet_forge` gem now requires at least Ruby 2.4.0.
9
+ * Update `faraday` and `faraday_middleware` gem dependencies to 1.x series.
10
+ * Update optional `typhoeus` dependency to `>= 1.4` to maintain compatibility with `faraday`.
11
+
6
12
  ## v2.3.4 - 2020-03-31
7
13
 
8
14
  * Update the forge API url to `forgeapi.puppet.com` (instead of using the older puppetlabs.com domain).
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Puppet Forge
2
2
 
3
- Access and manipulate the [Puppet Forge API](https://forgeapi.puppetlabs.com)
3
+ Access and manipulate the [Puppet Forge API](https://forgeapi.puppet.com)
4
4
  from Ruby.
5
5
 
6
6
  ## Installation
@@ -2,7 +2,6 @@ require 'puppet_forge/connection/connection_failure'
2
2
 
3
3
  require 'faraday'
4
4
  require 'faraday_middleware'
5
- require 'puppet_forge/middleware/symbolify_json'
6
5
 
7
6
  module PuppetForge
8
7
  # Provide a common mixin for adding a HTTP connection to classes.
@@ -81,7 +80,7 @@ module PuppetForge
81
80
 
82
81
  begin
83
82
  # Use Typhoeus if available.
84
- Gem::Specification.find_by_name('typhoeus', '~> 1.0.1')
83
+ Gem::Specification.find_by_name('typhoeus', '~> 1.4')
85
84
  require 'typhoeus/adapters/faraday'
86
85
  adapter = :typhoeus
87
86
  rescue Gem::LoadError
@@ -114,8 +113,7 @@ module PuppetForge
114
113
  end
115
114
 
116
115
  Faraday.new(url, options) do |builder|
117
- builder.use PuppetForge::Middleware::SymbolifyJson
118
- builder.response(:json, :content_type => /\bjson$/)
116
+ builder.response(:json, :content_type => /\bjson$/, :parser_options => { :symbolize_names => true })
119
117
  builder.response(:raise_error)
120
118
  builder.use(:connection_failure)
121
119
 
@@ -1,3 +1,3 @@
1
1
  module PuppetForge
2
- VERSION = '2.3.4' # Library version
2
+ VERSION = '3.0.0' # Library version
3
3
  end
@@ -18,13 +18,13 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.required_ruby_version = '>= 1.9.3'
21
+ spec.required_ruby_version = '>= 2.4.0'
22
22
 
23
- spec.add_runtime_dependency "faraday", [">= 0.9.0", "< 0.18.0", "!= 0.13.1"]
24
- spec.add_runtime_dependency "faraday_middleware", [">= 0.9.0", "< 0.15.0"]
25
- spec.add_dependency 'semantic_puppet', '~> 1.0'
26
- spec.add_dependency 'minitar'
27
- spec.add_dependency 'gettext-setup', '~> 0.11'
23
+ spec.add_runtime_dependency "faraday", "~> 1.3"
24
+ spec.add_runtime_dependency "faraday_middleware", "~> 1.0"
25
+ spec.add_dependency "semantic_puppet", "~> 1.0"
26
+ spec.add_dependency "minitar"
27
+ spec.add_dependency "gettext-setup", "~> 0.11"
28
28
 
29
29
  spec.add_development_dependency "rake"
30
30
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -15,8 +15,7 @@ module StubbingFaraday
15
15
  def stub_api_for(klass, base_url = "http://api.example.com")
16
16
  allow(klass).to receive(:conn) do
17
17
  Faraday.new :url => base_url do |builder|
18
- builder.use PuppetForge::Middleware::SymbolifyJson
19
- builder.response(:json, :content_type => /\bjson$/)
18
+ builder.response(:json, :content_type => /\bjson$/, :parser_options => { :symbolize_names => true })
20
19
  builder.response(:raise_error)
21
20
  builder.use(:connection_failure)
22
21
 
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe PuppetForge::Connection do
4
4
  before(:each) do
5
- PuppetForge.host = "https://forgeapi.puppetlabs.com"
5
+ PuppetForge.host = "https://forgeapi.puppet.com"
6
6
  end
7
7
 
8
8
  let(:test_conn) do
@@ -88,7 +88,7 @@ describe PuppetForge::Connection do
88
88
 
89
89
  expect {
90
90
  subject.get('/error')
91
- }.to raise_error(Faraday::ClientError, "the server responded with status 503")
91
+ }.to raise_error(Faraday::ServerError, "the server responded with status 503")
92
92
  end
93
93
 
94
94
  context 'when an authorization value is provided' do
@@ -115,7 +115,7 @@ describe PuppetForge::Connection do
115
115
  describe 'creating a default connection' do
116
116
  it 'creates a connection with the PuppetForge host' do
117
117
  conn = test_conn.default_connection
118
- expect(conn.url_prefix.to_s).to eq 'https://forgeapi.puppetlabs.com/'
118
+ expect(conn.url_prefix.to_s).to eq 'https://forgeapi.puppet.com/'
119
119
  end
120
120
  end
121
121
  end
@@ -168,14 +168,6 @@ describe PuppetForge::Metadata do
168
168
 
169
169
  end
170
170
 
171
- context "with a valid dependency", :pending => "dependency resolution is not yet in scope" do
172
- let(:data) { {'dependencies' => [{'name' => 'puppetlabs-goodmodule'}] }}
173
-
174
- it "adds the dependency" do
175
- expect(subject.dependencies.size).to eq(1)
176
- end
177
- end
178
-
179
171
  context "with a invalid dependency name" do
180
172
  let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule'}] }}
181
173
 
@@ -184,14 +176,6 @@ describe PuppetForge::Metadata do
184
176
  end
185
177
  end
186
178
 
187
- context "with a valid dependency version range", :pending => "dependency resolution is not yet in scope" do
188
- let(:data) { {'dependencies' => [{'name' => 'puppetlabs-badmodule', 'version_requirement' => '>= 2.0.0'}] }}
189
-
190
- it "adds the dependency" do
191
- expect(subject.dependencies.size).to eq(1)
192
- end
193
- end
194
-
195
179
  context "with a invalid version range" do
196
180
  let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule', 'version_requirement' => '>= banana'}] }}
197
181
 
@@ -199,30 +183,6 @@ describe PuppetForge::Metadata do
199
183
  expect { subject }.to raise_error(ArgumentError)
200
184
  end
201
185
  end
202
-
203
- context "with duplicate dependencies", :pending => "dependency resolution is not yet in scope" do
204
- let(:data) { {'dependencies' => [{'name' => 'puppetlabs-dupmodule', 'version_requirement' => '1.0.0'},
205
- {'name' => 'puppetlabs-dupmodule', 'version_requirement' => '0.0.1'}] }
206
- }
207
-
208
- it "raises an exception" do
209
- expect { subject }.to raise_error(ArgumentError)
210
- end
211
- end
212
-
213
- context "adding a duplicate dependency", :pending => "dependency resolution is not yet in scope" do
214
- let(:data) { {'dependencies' => [{'name' => 'puppetlabs-origmodule', 'version_requirement' => '1.0.0'}] }}
215
-
216
- it "with a different version raises an exception" do
217
- metadata.add_dependency('puppetlabs-origmodule', '>= 0.0.1')
218
- expect { subject }.to raise_error(ArgumentError)
219
- end
220
-
221
- it "with the same version does not add another dependency" do
222
- metadata.add_dependency('puppetlabs-origmodule', '1.0.0')
223
- expect(subject.dependencies.size).to eq(1)
224
- end
225
- end
226
186
  end
227
187
 
228
188
  describe '#dashed_name' do
metadata CHANGED
@@ -1,61 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet_forge
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2021-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.9.0
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: 0.18.0
23
- - - "!="
17
+ - - "~>"
24
18
  - !ruby/object:Gem::Version
25
- version: 0.13.1
19
+ version: '1.3'
26
20
  type: :runtime
27
21
  prerelease: false
28
22
  version_requirements: !ruby/object:Gem::Requirement
29
23
  requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.9.0
33
- - - "<"
34
- - !ruby/object:Gem::Version
35
- version: 0.18.0
36
- - - "!="
24
+ - - "~>"
37
25
  - !ruby/object:Gem::Version
38
- version: 0.13.1
26
+ version: '1.3'
39
27
  - !ruby/object:Gem::Dependency
40
28
  name: faraday_middleware
41
29
  requirement: !ruby/object:Gem::Requirement
42
30
  requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 0.9.0
46
- - - "<"
31
+ - - "~>"
47
32
  - !ruby/object:Gem::Version
48
- version: 0.15.0
33
+ version: '1.0'
49
34
  type: :runtime
50
35
  prerelease: false
51
36
  version_requirements: !ruby/object:Gem::Requirement
52
37
  requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 0.9.0
56
- - - "<"
38
+ - - "~>"
57
39
  - !ruby/object:Gem::Version
58
- version: 0.15.0
40
+ version: '1.0'
59
41
  - !ruby/object:Gem::Dependency
60
42
  name: semantic_puppet
61
43
  requirement: !ruby/object:Gem::Requirement
@@ -218,7 +200,6 @@ files:
218
200
  - lib/puppet_forge/error.rb
219
201
  - lib/puppet_forge/lazy_accessors.rb
220
202
  - lib/puppet_forge/lazy_relations.rb
221
- - lib/puppet_forge/middleware/symbolify_json.rb
222
203
  - lib/puppet_forge/tar.rb
223
204
  - lib/puppet_forge/tar/mini.rb
224
205
  - lib/puppet_forge/unpacker.rb
@@ -269,7 +250,6 @@ files:
269
250
  - spec/unit/forge/connection_spec.rb
270
251
  - spec/unit/forge/lazy_accessors_spec.rb
271
252
  - spec/unit/forge/lazy_relations_spec.rb
272
- - spec/unit/forge/middleware/symbolify_json_spec.rb
273
253
  - spec/unit/forge/tar/mini_spec.rb
274
254
  - spec/unit/forge/tar_spec.rb
275
255
  - spec/unit/forge/unpacker_spec.rb
@@ -293,15 +273,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
293
273
  requirements:
294
274
  - - ">="
295
275
  - !ruby/object:Gem::Version
296
- version: 1.9.3
276
+ version: 2.4.0
297
277
  required_rubygems_version: !ruby/object:Gem::Requirement
298
278
  requirements:
299
279
  - - ">="
300
280
  - !ruby/object:Gem::Version
301
281
  version: '0'
302
282
  requirements: []
303
- rubyforge_project:
304
- rubygems_version: 2.6.14
283
+ rubygems_version: 3.0.8
305
284
  signing_key:
306
285
  specification_version: 4
307
286
  summary: Access the Puppet Forge API from Ruby for resource information and to download
@@ -343,7 +322,6 @@ test_files:
343
322
  - spec/unit/forge/connection_spec.rb
344
323
  - spec/unit/forge/lazy_accessors_spec.rb
345
324
  - spec/unit/forge/lazy_relations_spec.rb
346
- - spec/unit/forge/middleware/symbolify_json_spec.rb
347
325
  - spec/unit/forge/tar/mini_spec.rb
348
326
  - spec/unit/forge/tar_spec.rb
349
327
  - spec/unit/forge/unpacker_spec.rb
@@ -1,72 +0,0 @@
1
- module PuppetForge
2
- module Middleware
3
-
4
- # SymbolifyJson is a Faraday Middleware that will process any response formatted as a hash
5
- # and change all the keys into symbols (as long as they respond to the method #to_sym.
6
- #
7
- # This middleware makes no changes to the values of the hash.
8
- # If the response is not a hash, no changes will be made.
9
- class SymbolifyJson < Faraday::Middleware
10
-
11
- # Processes an array
12
- #
13
- # @return an array with any hash's keys turned into symbols if possible
14
- def process_array(array)
15
- array.map do |arg|
16
- # Search any arrays and hashes for hash keys
17
- if arg.is_a? Hash
18
- process_hash(arg)
19
- elsif arg.is_a? Array
20
- process_array(arg)
21
- else
22
- arg
23
- end
24
- end
25
- end
26
-
27
- # Processes a hash
28
- #
29
- # @return a hash with all keys turned into symbols if possible
30
- def process_hash(hash)
31
-
32
- # hash.map returns an array in the format
33
- # [ [key, value], [key2, value2], ... ]
34
- # Hash[] converts that into a hash in the format
35
- # { key => value, key2 => value2, ... }
36
- Hash[hash.map do |key, val|
37
- # Convert to a symbol if possible
38
- if key.respond_to? :to_sym
39
- new_key = key.to_sym
40
- else
41
- new_key = key
42
- end
43
-
44
- # If value is a hash or array look for more hash keys inside.
45
- if val.is_a?(Hash)
46
- [new_key, process_hash(val)]
47
- elsif val.is_a?(Array)
48
- [new_key, process_array(val)]
49
- else
50
- [new_key, val]
51
- end
52
- end]
53
- end
54
-
55
- def process_response(env)
56
- if !env["body"].nil? && env["body"].is_a?(Hash)
57
- process_hash(env.body)
58
- else
59
- env.body
60
- end
61
- end
62
-
63
- def call(environment)
64
- @app.call(environment).on_complete do |env|
65
- env.body = process_response(env)
66
- end
67
- end
68
-
69
- end
70
- end
71
- end
72
-
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe PuppetForge::Middleware::SymbolifyJson do
4
- let(:basic_array) { [1, "two", 3] }
5
- let(:basic_hash) { { "id" => 1, "data" => "x" } }
6
- let(:symbolified_hash) { { :id => 1, :data => "x" } }
7
- let(:internal_hash) { { :id => 2, :data => basic_hash } }
8
-
9
- let(:hash_with_array) { { "id" => 3, "data" => basic_array } }
10
- let(:array_with_hash) { [1, "two", basic_hash] }
11
-
12
- let(:complex_array) { [array_with_hash, hash_with_array] }
13
- let(:complex_hash) { { "id" => 4, "data" => [complex_array, basic_array], "more_data" => hash_with_array } }
14
- let(:complex_request) { { "id" => 5, "data" => complex_hash } }
15
-
16
- let(:middleware) { described_class.new() }
17
-
18
- context "#process_array" do
19
- it "doesn't change an array with no array or hash inside" do
20
- processed_array = middleware.process_array(basic_array)
21
- expect(processed_array).to eql( [1, "two", 3] )
22
- end
23
-
24
- it "changes all keys of a hash inside the array" do
25
- processed_array = middleware.process_array(array_with_hash)
26
- expect(processed_array).to eql( [ 1, "two", { :id => 1, :data => "x" } ] )
27
- end
28
- end
29
-
30
- context "#process_hash" do
31
- it "changes all keys that respond to :to_sym into Symbols and doesn't change values." do
32
- processed_hash = middleware.process_hash(basic_hash)
33
- expect(processed_hash).to eql( { :id => 1, :data => "x" } )
34
- end
35
-
36
- it "doesn't change keys that don't respond to :to_sym" do
37
- processed_hash = middleware.process_hash(basic_hash.merge({ 1 => 2 }))
38
- expect(processed_hash).to eql( { :id => 1, :data => "x", 1 => 2 } )
39
- end
40
-
41
- it "can process a hash that is already symbolified" do
42
- processed_hash = middleware.process_hash(symbolified_hash)
43
- expect(processed_hash).to eql( { :id => 1, :data => "x" })
44
- end
45
-
46
- it "can process a hash with a hash inside of it" do
47
- processed_hash = middleware.process_hash(internal_hash)
48
- expect(processed_hash).to eql( {:id => 2, :data => { :id => 1, :data => "x" } })
49
- end
50
-
51
- it "can process a hash with an array inside of it" do
52
- processed_hash = middleware.process_hash(hash_with_array)
53
- expect(processed_hash).to eql( { :id => 3, :data => [1, "two", 3] } )
54
- end
55
-
56
- it "can handle extensively nested arrays and hashes" do
57
- processed_hash = middleware.process_hash(complex_request)
58
- expect(processed_hash).to eql( { :id => 5, :data => { :id => 4 , :data=>[ [ [1, "two", { :id => 1, :data => "x" } ], { :id=>3, :data => [1, "two", 3] } ], [1, "two", 3] ], :more_data => { :id => 3, :data => [1, "two", 3] } } } )
59
- end
60
- end
61
-
62
- end
63
-