grac 4.3.0 → 4.4.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: 8460d522d154cc9553f4a67210e6509fd1e1e5d9b956cccf4e3e4701eccd6135
4
- data.tar.gz: a8c70bc97eadf86324176c301b4bc5bd856f4d20e402ba111236860734d8e0b6
3
+ metadata.gz: 061003ad2cd97921474d31303c4257061bcc15836c47303149f73519757848cb
4
+ data.tar.gz: fc62c7fd354b21f7ea929870fbc2f69a0b3c4c7f838f10c4f501c451dba05db9
5
5
  SHA512:
6
- metadata.gz: 2db352fde7d23f9e42d578b50c08c702232c096d0de59d4ed1075bf4db63946fbff16335de25bdbac7d076e9f176a8b18b78f506bd7c5b3fe8bb81e4d9d8ba57
7
- data.tar.gz: 146317de75aa8ab0a276016b90cd3aac920594424edc2f601b650bc64746ff531c360b34997be1e6d1af73676826948ddb573ac4be2b11e004a24aed4250d779
6
+ metadata.gz: 9f341acf25ddbf2e17551adfa3c7c75b0b157f06867c1b9f8aa62e141080eff04072598f0419ad1a9eab4c77d7b86934471db240a862e2ff856ccb2ae28d17e5
7
+ data.tar.gz: 54091341a2859c9a4fa98e8f253e24f7d0b34caa199a8dca476a9397c3934f38cfb31aa5f1db77632534dda5dcbd8d49f60e3baa151dcdfb4349bb6c8d7ca46a
data/lib/grac/client.rb CHANGED
@@ -21,11 +21,13 @@ module Grac
21
21
  params: options[:params] || {},
22
22
  headers: {
23
23
  'User-Agent' => "Grac v#{Grac::VERSION}",
24
- 'Content-Type' => 'application/json;charset=utf-8'
24
+ 'Content-Type' => 'application/json;charset=utf-8',
25
25
  }.merge(options[:headers] || {}),
26
26
  postprocessing: {},
27
27
  middleware: options[:middleware] || [],
28
28
  retry_get_head: options.fetch(:retry_get_head, true),
29
+ proxy: options[:proxy],
30
+ ssl: options[:ssl],
29
31
  }
30
32
 
31
33
  if options[:postprocessing]
@@ -43,8 +45,8 @@ module Grac
43
45
 
44
46
  @options.freeze
45
47
 
46
- [:params, :headers, :postprocessing, :middleware].each do |k|
47
- @options[k].freeze
48
+ [:params, :headers, :postprocessing, :middleware, :proxy, :ssl].each do |k|
49
+ @options[k]&.freeze
48
50
  end
49
51
 
50
52
  @uri.freeze
@@ -55,6 +57,8 @@ module Grac
55
57
  {
56
58
  headers: @options[:headers].merge(options[:headers] || {}),
57
59
  middleware: @options[:middleware] + (options[:middleware] || []),
60
+ proxy: merge_option_hash(options, :proxy),
61
+ ssl: merge_option_hash(options, :ssl),
58
62
  },
59
63
  )
60
64
 
@@ -85,12 +89,14 @@ module Grac
85
89
  def call(opts, request_uri, method, params, body)
86
90
  request_hash = {
87
91
  method: method,
88
- params: params, # Query params are escaped by Typhoeus
92
+ params: params, # Query params are escaped by Typhoeus
89
93
  body: body,
90
94
  connecttimeout: opts[:connecttimeout],
91
95
  timeout: opts[:timeout],
92
96
  headers: opts[:headers],
93
97
  }
98
+ apply_proxy_options(request_hash, opts[:proxy])
99
+ apply_ssl_options(request_hash, opts[:ssl])
94
100
 
95
101
  request = ::Typhoeus::Request.new(request_uri, request_hash)
96
102
  response = request.run
@@ -244,5 +250,34 @@ module Grac
244
250
  CGI::escape(value).gsub('+', '%20')
245
251
  end
246
252
 
253
+ def merge_option_hash(options, key)
254
+ existing = @options[key] || {}
255
+ new_val = options[key]
256
+
257
+ return existing if new_val == nil
258
+
259
+ existing.merge(new_val)
260
+ end
261
+
262
+ # map proxy options from our format to typhoeus format
263
+ def apply_proxy_options(request_hash, proxy)
264
+ return if proxy == nil
265
+
266
+ request_hash[:proxy] = proxy[:url] if proxy[:url] != nil
267
+ request_hash[:proxyusername] = proxy[:username] if proxy[:username] != nil
268
+ request_hash[:proxypassword] = proxy[:password] if proxy[:password] != nil
269
+ end
270
+
271
+ # map ssl options from our format to typhoeus format
272
+ def apply_ssl_options(request_hash, ssl)
273
+ return if ssl == nil
274
+
275
+ request_hash[:ssl_verifypeer] = ssl[:verify_peer] if ssl[:verify_peer] != nil
276
+ request_hash[:ssl_verifyhost] = ssl[:verify_host] if ssl[:verify_host] != nil
277
+ request_hash[:sslcert] = ssl[:cert] if ssl[:cert] != nil
278
+ request_hash[:sslkey] = ssl[:key] if ssl[:key] != nil
279
+ request_hash[:cainfo] = ssl[:ca_info] if ssl[:ca_info] != nil
280
+ end
281
+
247
282
  end
248
283
  end
data/lib/grac/version.rb CHANGED
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Grac
2
- VERSION = "4.3.0"
4
+
5
+ VERSION = '4.4.0'
6
+
3
7
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grac
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schoknecht
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -100,14 +99,14 @@ dependencies:
100
99
  requirements:
101
100
  - - "~>"
102
101
  - !ruby/object:Gem::Version
103
- version: 3.13.23
102
+ version: '3.16'
104
103
  type: :runtime
105
104
  prerelease: false
106
105
  version_requirements: !ruby/object:Gem::Requirement
107
106
  requirements:
108
107
  - - "~>"
109
108
  - !ruby/object:Gem::Version
110
- version: 3.13.23
109
+ version: '3.16'
111
110
  - !ruby/object:Gem::Dependency
112
111
  name: typhoeus
113
112
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +137,6 @@ homepage: https://github.com/Barzahlen/grac
138
137
  licenses:
139
138
  - MIT
140
139
  metadata: {}
141
- post_install_message:
142
140
  rdoc_options: []
143
141
  require_paths:
144
142
  - lib
@@ -153,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
151
  - !ruby/object:Gem::Version
154
152
  version: '0'
155
153
  requirements: []
156
- rubygems_version: 3.5.3
157
- signing_key:
154
+ rubygems_version: 3.6.9
158
155
  specification_version: 4
159
156
  summary: Very generic client for REST API with basic error handling
160
157
  test_files: []