manageiq-api-client 0.3.7 → 0.4.1

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: 8dec9fe356657ce4cfd68117c3782600682ad3866f666fd10aabbc88a0c47f3f
4
- data.tar.gz: f6b2c0d1515a13b033f23ba73aeb58e691810ebfcef3b1e26640180912f283e7
3
+ metadata.gz: 3a7891f16b3eae78cc834f589cdd23b17a272a84cc3073ab9e8565a0c5b7bb5c
4
+ data.tar.gz: 59448475061016e496a8b957c2bfcf6421be156a098cfa6f1ded20a0897905c8
5
5
  SHA512:
6
- metadata.gz: da5baaedb66406e134675e01036f085b92e1fbf091c938f932ab9c81d5f3ca99e2ace57e12a66cbdead50d8794f095d0359511f1d061c3ebd0ea9cce3d8b86fc
7
- data.tar.gz: ff1c57b8ae147f36eed38b0535aa789776b2ed3e8088e37bd729b218e5e50afd6c97099e57fbb7244351fc5991f3595ad6fce8463fda72ec2aa2b4a29c098d0e
6
+ metadata.gz: f66d9368405b2e33acbc7d7ac30b3d9197855a9df5b592502741e1c5a2f0efbe6fa81cf6d0884e8a81df90a0dae8f8f4964f16d9d66a70b98a8ac52b96de3b77
7
+ data.tar.gz: dbb2ad769d72f8075a7749754eb6501814bcecc96336e6a4ded66a549c4f56429475fea90ab6bd1c63a09d5e8cf464f64e7e87ac17d19fb31005a1bac76fc03b
data/.codeclimate.yml CHANGED
@@ -12,5 +12,5 @@ plugins:
12
12
  rubocop:
13
13
  enabled: true
14
14
  config: ".rubocop_cc.yml"
15
- channel: rubocop-0-82
15
+ channel: rubocop-1-56-3
16
16
  version: '2'
@@ -12,17 +12,17 @@ jobs:
12
12
  strategy:
13
13
  matrix:
14
14
  ruby-version:
15
- - '2.6'
16
- - '2.7'
17
15
  - '3.0'
16
+ - '3.1'
18
17
  rails-version:
19
18
  - '6.0'
20
19
  - '6.1'
20
+ - '7.0'
21
21
  env:
22
22
  TEST_RAILS_VERSION: ${{ matrix.rails-version }}
23
23
  CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
24
24
  steps:
25
- - uses: actions/checkout@v2
25
+ - uses: actions/checkout@v4
26
26
  - name: Set up Ruby
27
27
  uses: ruby/setup-ruby@v1
28
28
  with:
@@ -34,4 +34,4 @@ jobs:
34
34
  - name: Report code coverage
35
35
  if: ${{ github.ref == 'refs/heads/master' && matrix.ruby-version == '3.0' && matrix.rails-version == '6.1' }}
36
36
  continue-on-error: true
37
- uses: paambaati/codeclimate-action@v3.0.0
37
+ uses: paambaati/codeclimate-action@v6
data/CHANGELOG.md CHANGED
@@ -6,6 +6,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.4.1] - 2024-03-06
10
+ ### Added
11
+ - Drop active_support and more_core_extensions dependency [[#115]](https://github.com/ManageIQ/manageiq-api-client/pull/115)
12
+ - Add rails 7 support [[#114]](https://github.com/ManageIQ/manageiq-api-client/pull/114)
13
+
14
+ ## [0.4.0] - 2023-10-16
15
+ ### Added
16
+ - Add Bearer token support [[#113]](https://github.com/ManageIQ/manageiq-api-client/pull/113)
17
+
9
18
  ## [0.3.7] - 2023-05-19
10
19
  ### Changed
11
20
  - Loosen faraday to 1.x. [[#108]](https://github.com/ManageIQ/manageiq-api-client/pull/108)
@@ -61,7 +70,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
61
70
  - Add CHANGELOG.md
62
71
  - Update README with simple instructions reflecting the query interface.
63
72
 
64
- [Unreleased]: https://github.com/ManageIQ/manageiq-api-client/compare/v0.3.7...HEAD
73
+ [Unreleased]: https://github.com/ManageIQ/manageiq-api-client/compare/v0.4.0...HEAD
74
+ [0.4.0]: https://github.com/ManageIQ/manageiq-api-client/compare/v0.3.7...v0.4.0
65
75
  [0.3.7]: https://github.com/ManageIQ/manageiq-api-client/compare/v0.3.6...v0.3.7
66
76
  [0.3.6]: https://github.com/ManageIQ/manageiq-api-client/compare/v0.3.5...v0.3.6
67
77
  [0.3.5]: https://github.com/ManageIQ/manageiq-api-client/compare/v0.3.4...v0.3.5
data/Gemfile CHANGED
@@ -7,9 +7,14 @@ gemspec
7
7
  dev_gemfile = File.expand_path("Gemfile.dev.rb", __dir__)
8
8
  eval_gemfile(dev_gemfile) if File.exist?(dev_gemfile)
9
9
 
10
- case ENV['TEST_RAILS_VERSION']
11
- when "6.0"
12
- gem "activesupport", "~>6.0.4"
13
- when "6.1"
14
- gem "activesupport", "~>6.1.4"
15
- end
10
+ minimum_version =
11
+ case ENV['TEST_RAILS_VERSION']
12
+ when "6.0"
13
+ "~>6.0.4"
14
+ when "7.0"
15
+ "~>7.0.8"
16
+ else
17
+ "~>6.1.4"
18
+ end
19
+
20
+ gem "activesupport", minimum_version
@@ -6,6 +6,7 @@ module ManageIQ
6
6
  attr_reader :password
7
7
  attr_reader :token
8
8
  attr_reader :miqtoken
9
+ attr_reader :bearer_token
9
10
  attr_reader :group
10
11
 
11
12
  DEFAULTS = {
@@ -13,26 +14,26 @@ module ManageIQ
13
14
  :password => "smartvm"
14
15
  }.freeze
15
16
 
16
- CUSTOM_INSPECT_EXCLUSIONS = [:@password].freeze
17
+ CUSTOM_INSPECT_EXCLUSIONS = %i[@password @token @miqtoken @bearer_token].freeze
17
18
  include CustomInspectMixin
18
19
 
19
20
  def initialize(options = {})
20
21
  @user, @password = fetch_credentials(options)
21
- @token, @miqtoken, @group = options.values_at(:token, :miqtoken, :group)
22
+ @token, @miqtoken, @bearer_token, @group = options.values_at(:token, :miqtoken, :bearer_token, :group)
22
23
 
23
- unless token || miqtoken
24
+ unless token || miqtoken || bearer_token
24
25
  raise "Must specify both a user and a password" if user.blank? || password.blank?
25
26
  end
26
27
  end
27
28
 
28
29
  def self.auth_options_specified?(options)
29
- options.slice(:user, :password, :token, :miqtoken, :group).present?
30
+ options.slice(:user, :password, :token, :miqtoken, :bearer_token, :group).present?
30
31
  end
31
32
 
32
33
  private
33
34
 
34
35
  def fetch_credentials(options)
35
- if options.slice(:user, :password, :token, :miqtoken).blank?
36
+ if options.slice(:user, :password, :token, :miqtoken, :bearer_token).blank?
36
37
  [DEFAULTS[:user], DEFAULTS[:password]]
37
38
  else
38
39
  [options[:user], options[:password]]
@@ -1,6 +1,7 @@
1
1
  module ManageIQ
2
2
  module API
3
3
  class Client
4
+ extend Forwardable
4
5
  attr_reader :client_options
5
6
  attr_reader :logger
6
7
  attr_reader :url
@@ -62,7 +63,7 @@ module ManageIQ
62
63
  load_definitions
63
64
  end
64
65
 
65
- delegate :get, :post, :put, :patch, :delete, :options, :error, :to => :connection
66
+ def_delegators :connection, :get, :post, :put, :patch, :delete, :options, :error
66
67
 
67
68
  private
68
69
 
@@ -2,6 +2,8 @@ module ManageIQ
2
2
  module API
3
3
  class Client
4
4
  class Connection
5
+ extend Forwardable
6
+
5
7
  attr_reader :url
6
8
  attr_reader :authentication
7
9
  attr_reader :client
@@ -9,7 +11,7 @@ module ManageIQ
9
11
  attr_reader :response
10
12
  attr_reader :error
11
13
 
12
- delegate :url, :authentication, :to => :client
14
+ def_delegators :client, :url, :authentication
13
15
 
14
16
  API_PREFIX = "/api".freeze
15
17
  CONTENT_TYPE = "application/json".freeze
@@ -58,12 +60,12 @@ module ManageIQ
58
60
  end
59
61
 
60
62
  def api_path(path)
61
- if path.to_s.starts_with?(url.to_s)
63
+ if path.to_s.start_with?(url.to_s)
62
64
  path.to_s
63
65
  elsif path.to_s.blank?
64
66
  URI.join(url, API_PREFIX).to_s
65
67
  else
66
- URI.join(url, path.to_s.starts_with?(API_PREFIX) ? path.to_s : "#{API_PREFIX}/#{path}").to_s
68
+ URI.join(url, path.to_s.start_with?(API_PREFIX) ? path.to_s : "#{API_PREFIX}/#{path}").to_s
67
69
  end
68
70
  end
69
71
 
@@ -74,10 +76,17 @@ module ManageIQ
74
76
  faraday.options.open_timeout = @connection_options[:open_timeout] if @connection_options[:open_timeout]
75
77
  faraday.options.timeout = @connection_options[:timeout] if @connection_options[:timeout]
76
78
  faraday.response(:logger, client.logger)
77
- faraday.use FaradayMiddleware::FollowRedirects, :limit => 3, :standards_compliant => true
78
- faraday.adapter(Faraday.default_adapter) # make requests with Net::HTTP
79
- if authentication.token.blank? && authentication.miqtoken.blank?
80
- faraday.basic_auth(authentication.user, authentication.password)
79
+ faraday.response(:follow_redirects, :limit => 3, :standards_compliant => true)
80
+ # make requests with Net::HTTP
81
+ faraday.adapter(Faraday.default_adapter)
82
+ if authentication.token.blank? && authentication.miqtoken.blank? && authentication.bearer_token.blank?
83
+ if faraday.respond_to?(:basic_auth)
84
+ # faraday 1.0
85
+ faraday.basic_auth(authentication.user, authentication.password)
86
+ else
87
+ # faraday 2.0
88
+ faraday.request(:authorization, :basic, authentication.user, authentication.password)
89
+ end
81
90
  end
82
91
  end
83
92
  end
@@ -90,6 +99,7 @@ module ManageIQ
90
99
  @response = handle.run_request(method.to_sym, api_path(path), nil, nil) do |request|
91
100
  request.headers[:content_type] = CONTENT_TYPE
92
101
  request.headers[:accept] = CONTENT_TYPE
102
+ request.headers[:authorization] = "Bearer #{authentication.bearer_token}" unless authentication.bearer_token.blank?
93
103
  request.headers['X-MIQ-Group'] = authentication.group unless authentication.group.blank?
94
104
  request.headers['X-Auth-Token'] = authentication.token unless authentication.token.blank?
95
105
  request.headers['X-MIQ-Token'] = authentication.miqtoken unless authentication.miqtoken.blank?
@@ -104,11 +114,11 @@ module ManageIQ
104
114
 
105
115
  def check_response
106
116
  if response.status == 404
107
- message = json_response.fetch_path("error", "message") || json_response["error"]
117
+ message = json_response["error"].kind_of?(String) ? json_response["error"] : json_response.dig("error", "message")
108
118
  raise ManageIQ::API::Client::ResourceNotFound, message
109
119
  elsif response.status >= 400
110
120
  @error = ManageIQ::API::Client::Error.new(response.status, json_response)
111
- raise @error.message
121
+ raise ManageIQ::API::Client::Exception, @error.message || "Empty Response"
112
122
  end
113
123
  end
114
124
  end
@@ -2,6 +2,7 @@ module ManageIQ
2
2
  module API
3
3
  class Client
4
4
  class Resource
5
+ extend Forwardable
5
6
  include ActionMixin
6
7
 
7
8
  CUSTOM_INSPECT_EXCLUSIONS = [:@collection].freeze
@@ -21,7 +22,7 @@ module ManageIQ
21
22
  attr_reader :collection
22
23
  attr_reader :actions
23
24
 
24
- delegate :client, :to => :collection
25
+ def_delegators :collection, :client
25
26
 
26
27
  def initialize(collection, resource_hash)
27
28
  raise "Cannot instantiate a Resource directly" if instance_of?(Resource)
@@ -1,7 +1,7 @@
1
1
  module ManageIQ
2
2
  module API
3
3
  class Client
4
- VERSION = "0.3.7".freeze
4
+ VERSION = "0.4.1".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -1,10 +1,9 @@
1
1
  require "active_support"
2
2
  require "active_support/core_ext"
3
3
  require "faraday"
4
- require "faraday_middleware"
4
+ require "faraday/follow_redirects"
5
+ require 'forwardable'
5
6
  require "json"
6
- require "more_core_extensions/all"
7
- require "pp"
8
7
  require "query_relation"
9
8
 
10
9
  require "manageiq/api/client/client"
@@ -23,11 +23,10 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_dependency "activesupport", ">= 5.0", "< 7.0"
27
- spec.add_dependency "faraday", "~> 1.0"
28
- spec.add_dependency "faraday_middleware", "~> 1.0"
26
+ spec.add_dependency "activesupport", ">= 6.0", "<7.1"
27
+ spec.add_dependency "faraday", ">= 1.0", "< 3.0"
28
+ spec.add_dependency "faraday-follow_redirects"
29
29
  spec.add_dependency "json", "~> 2.3"
30
- spec.add_dependency "more_core_extensions"
31
30
  spec.add_dependency "query_relation"
32
31
 
33
32
  spec.add_development_dependency "bundler"
data/renovate.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": [
4
+ "config:recommended"
5
+ ]
6
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manageiq-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alberto Bellotti
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-05-19 00:00:00.000000000 Z
12
+ date: 2024-05-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,48 +17,54 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.0'
20
+ version: '6.0'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '7.0'
23
+ version: '7.1'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: '5.0'
30
+ version: '6.0'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '7.0'
33
+ version: '7.1'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: faraday
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: '3.0'
41
44
  type: :runtime
42
45
  prerelease: false
43
46
  version_requirements: !ruby/object:Gem::Requirement
44
47
  requirements:
45
- - - "~>"
48
+ - - ">="
46
49
  - !ruby/object:Gem::Version
47
50
  version: '1.0'
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
48
54
  - !ruby/object:Gem::Dependency
49
- name: faraday_middleware
55
+ name: faraday-follow_redirects
50
56
  requirement: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - "~>"
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '1.0'
60
+ version: '0'
55
61
  type: :runtime
56
62
  prerelease: false
57
63
  version_requirements: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - "~>"
65
+ - - ">="
60
66
  - !ruby/object:Gem::Version
61
- version: '1.0'
67
+ version: '0'
62
68
  - !ruby/object:Gem::Dependency
63
69
  name: json
64
70
  requirement: !ruby/object:Gem::Requirement
@@ -73,20 +79,6 @@ dependencies:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
81
  version: '2.3'
76
- - !ruby/object:Gem::Dependency
77
- name: more_core_extensions
78
- requirement: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- type: :runtime
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
82
  - !ruby/object:Gem::Dependency
91
83
  name: query_relation
92
84
  requirement: !ruby/object:Gem::Requirement
@@ -233,6 +225,7 @@ files:
233
225
  - lib/manageiq/api/client/version.rb
234
226
  - lib/manageiq_api_client.rb
235
227
  - manageiq-api-client.gemspec
228
+ - renovate.json
236
229
  homepage: http://github.com/ManageIQ/manageiq-api-client
237
230
  licenses:
238
231
  - MIT
@@ -252,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
245
  - !ruby/object:Gem::Version
253
246
  version: '0'
254
247
  requirements: []
255
- rubygems_version: 3.2.33
248
+ rubygems_version: 3.3.27
256
249
  signing_key:
257
250
  specification_version: 4
258
251
  summary: ManageIQ API Client