api_proxy 0.2.7 → 0.2.9

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: f7f3102a142d918c17fee6b1c1de26b5ce09f78f31422839d27283839b011371
4
- data.tar.gz: '06889bbc07a32f23482e1b44f038d84f938200919b98865e3eec816b6f8447e6'
3
+ metadata.gz: d61c5cf36f1ea1bd4f85ccc4dae8a44c5cbfbbd5ed90a46c271b3dd5b1e6488e
4
+ data.tar.gz: a79c2e0eec2d448f0e7f8d74aca1f2e6387d3a2fd2c009dc41c6f3e364c67bb4
5
5
  SHA512:
6
- metadata.gz: 5f6e2852947eb89a50076c9fc99528639e9021b2c9b79d80e71eaf693845dab8ef295b8c18d830255cf42c1c710ff0c8f2a8d435c0fd00912d2bb4a806c162a9
7
- data.tar.gz: fd5715b1d1322458fdc69bac3f380138ea9ff60dd458dc98e3ddf700f10fc6aae9daea93fec3d7ed883e357ef5ece2268e1bbe6118c96b77646b931525d1a4a1
6
+ metadata.gz: 913b636988ecb6e592a8e331a6531d01fae795513730d93e0eac22951a84e431996e230609e41b9e61be94313b6ca0f2b23e9da1f6831a5913e2420a87a70443
7
+ data.tar.gz: edef8ee9c18aaa5024e7479a8a33996b5c088e7d3506a4db27dc31fb77aa2ff429d88c3c3778a5115a0f282037e9032a8a81506f18713ad88aaefd801de3765e
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.7.6
2
+ TargetRubyVersion: 3.2.2
3
3
 
4
4
  Exclude:
5
5
  - "Guardfile"
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.6
1
+ 3.2.2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api_proxy (0.2.7)
4
+ api_proxy (0.2.9)
5
5
  activesupport (>= 4.0)
6
6
  api_signature (~> 0.1.2)
7
7
  httparty (>= 0.15)
@@ -9,29 +9,66 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (7.0.4)
12
+ activesupport (7.1.3.2)
13
+ base64
14
+ bigdecimal
13
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ connection_pool (>= 2.2.5)
17
+ drb
14
18
  i18n (>= 1.6, < 2)
15
19
  minitest (>= 5.1)
20
+ mutex_m
16
21
  tzinfo (~> 2.0)
17
- addressable (2.8.1)
22
+ addressable (2.8.6)
18
23
  public_suffix (>= 2.0.2, < 6.0)
19
24
  api_signature (0.1.5)
20
25
  activesupport (>= 4.0)
21
26
  rack (>= 1.6)
22
27
  ast (2.4.2)
28
+ base64 (0.2.0)
29
+ bigdecimal (3.1.7)
23
30
  bundler-audit (0.9.1)
24
31
  bundler (>= 1.2.0, < 3)
25
32
  thor (~> 1.0)
26
- childprocess (4.1.0)
33
+ childprocess (5.0.0)
27
34
  coderay (1.1.3)
28
- concurrent-ruby (1.1.10)
29
- crack (0.4.5)
35
+ concurrent-ruby (1.2.3)
36
+ connection_pool (2.4.1)
37
+ crack (1.0.0)
38
+ bigdecimal
30
39
  rexml
31
- diff-lcs (1.5.0)
32
- ffi (1.15.5)
40
+ diff-lcs (1.5.1)
41
+ drb (2.2.1)
42
+ dry-configurable (1.1.0)
43
+ dry-core (~> 1.0, < 2)
44
+ zeitwerk (~> 2.6)
45
+ dry-core (1.0.1)
46
+ concurrent-ruby (~> 1.0)
47
+ zeitwerk (~> 2.6)
48
+ dry-inflector (1.0.0)
49
+ dry-initializer (3.1.1)
50
+ dry-logic (1.5.0)
51
+ concurrent-ruby (~> 1.0)
52
+ dry-core (~> 1.0, < 2)
53
+ zeitwerk (~> 2.6)
54
+ dry-schema (1.13.3)
55
+ concurrent-ruby (~> 1.0)
56
+ dry-configurable (~> 1.0, >= 1.0.1)
57
+ dry-core (~> 1.0, < 2)
58
+ dry-initializer (~> 3.0)
59
+ dry-logic (>= 1.4, < 2)
60
+ dry-types (>= 1.7, < 2)
61
+ zeitwerk (~> 2.6)
62
+ dry-types (1.7.2)
63
+ bigdecimal (~> 3.0)
64
+ concurrent-ruby (~> 1.0)
65
+ dry-core (~> 1.0)
66
+ dry-inflector (~> 1.0)
67
+ dry-logic (~> 1.4)
68
+ zeitwerk (~> 2.6)
69
+ ffi (1.16.3)
33
70
  formatador (1.1.0)
34
- guard (2.18.0)
71
+ guard (2.18.1)
35
72
  formatador (>= 0.2.4)
36
73
  listen (>= 2.7, < 4.0)
37
74
  lumberjack (>= 1.0.12, < 2.0)
@@ -45,102 +82,106 @@ GEM
45
82
  guard (~> 2.1)
46
83
  guard-compat (~> 1.1)
47
84
  rspec (>= 2.99.0, < 4.0)
48
- hashdiff (1.0.1)
49
- httparty (0.20.0)
50
- mime-types (~> 3.0)
85
+ hashdiff (1.1.0)
86
+ httparty (0.21.0)
87
+ mini_mime (>= 1.0.0)
51
88
  multi_xml (>= 0.5.2)
52
- i18n (1.12.0)
89
+ i18n (1.14.4)
53
90
  concurrent-ruby (~> 1.0)
54
91
  iniparse (1.5.0)
55
- json (2.6.3)
56
- kwalify (0.7.2)
57
- listen (3.7.1)
92
+ json (2.7.1)
93
+ language_server-protocol (3.17.0.3)
94
+ listen (3.9.0)
58
95
  rb-fsevent (~> 0.10, >= 0.10.3)
59
96
  rb-inotify (~> 0.9, >= 0.9.10)
60
- lumberjack (1.2.8)
97
+ lumberjack (1.2.10)
61
98
  method_source (1.0.0)
62
- mime-types (3.4.1)
63
- mime-types-data (~> 3.2015)
64
- mime-types-data (3.2022.0105)
65
- minitest (5.16.3)
99
+ mini_mime (1.1.5)
100
+ minitest (5.22.3)
66
101
  multi_xml (0.6.0)
102
+ mutex_m (0.2.0)
67
103
  nenv (0.3.0)
68
104
  notiffany (0.1.3)
69
105
  nenv (~> 0.1)
70
106
  shellany (~> 0.0)
71
- overcommit (0.59.1)
72
- childprocess (>= 0.6.3, < 5)
107
+ overcommit (0.63.0)
108
+ childprocess (>= 0.6.3, < 6)
73
109
  iniparse (~> 1.4)
74
110
  rexml (~> 3.2)
75
- parallel (1.22.1)
76
- parser (3.1.3.0)
111
+ parallel (1.24.0)
112
+ parser (3.3.0.5)
77
113
  ast (~> 2.4.1)
78
- pry (0.14.1)
114
+ racc
115
+ pry (0.14.2)
79
116
  coderay (~> 1.1)
80
117
  method_source (~> 1.0)
81
- public_suffix (5.0.1)
82
- rack (3.0.2)
118
+ public_suffix (5.0.5)
119
+ racc (1.7.3)
120
+ rack (3.0.10)
83
121
  rainbow (3.1.1)
84
- rake (10.5.0)
122
+ rake (13.2.0)
85
123
  rb-fsevent (0.11.2)
86
124
  rb-inotify (0.10.1)
87
125
  ffi (~> 1.0)
88
- reek (6.1.2)
89
- kwalify (~> 0.7.0)
90
- parser (~> 3.1.0)
126
+ reek (6.3.0)
127
+ dry-schema (~> 1.13.0)
128
+ parser (~> 3.3.0)
91
129
  rainbow (>= 2.0, < 4.0)
92
- regexp_parser (2.6.1)
93
- rexml (3.2.5)
94
- rspec (3.12.0)
95
- rspec-core (~> 3.12.0)
96
- rspec-expectations (~> 3.12.0)
97
- rspec-mocks (~> 3.12.0)
98
- rspec-core (3.12.0)
99
- rspec-support (~> 3.12.0)
100
- rspec-expectations (3.12.0)
130
+ rexml (~> 3.1)
131
+ regexp_parser (2.9.0)
132
+ rexml (3.2.6)
133
+ rspec (3.13.0)
134
+ rspec-core (~> 3.13.0)
135
+ rspec-expectations (~> 3.13.0)
136
+ rspec-mocks (~> 3.13.0)
137
+ rspec-core (3.13.0)
138
+ rspec-support (~> 3.13.0)
139
+ rspec-expectations (3.13.0)
101
140
  diff-lcs (>= 1.2.0, < 2.0)
102
- rspec-support (~> 3.12.0)
103
- rspec-mocks (3.12.0)
141
+ rspec-support (~> 3.13.0)
142
+ rspec-mocks (3.13.0)
104
143
  diff-lcs (>= 1.2.0, < 2.0)
105
- rspec-support (~> 3.12.0)
106
- rspec-support (3.12.0)
107
- rubocop (1.39.0)
144
+ rspec-support (~> 3.13.0)
145
+ rspec-support (3.13.1)
146
+ rubocop (1.62.1)
108
147
  json (~> 2.3)
148
+ language_server-protocol (>= 3.17.0)
109
149
  parallel (~> 1.10)
110
- parser (>= 3.1.2.1)
150
+ parser (>= 3.3.0.2)
111
151
  rainbow (>= 2.2.2, < 4.0)
112
152
  regexp_parser (>= 1.8, < 3.0)
113
153
  rexml (>= 3.2.5, < 4.0)
114
- rubocop-ast (>= 1.23.0, < 2.0)
154
+ rubocop-ast (>= 1.31.1, < 2.0)
115
155
  ruby-progressbar (~> 1.7)
116
- unicode-display_width (>= 1.4.0, < 3.0)
117
- rubocop-ast (1.24.0)
118
- parser (>= 3.1.1.0)
119
- ruby-progressbar (1.11.0)
156
+ unicode-display_width (>= 2.4.0, < 3.0)
157
+ rubocop-ast (1.31.2)
158
+ parser (>= 3.3.0.4)
159
+ ruby-progressbar (1.13.0)
120
160
  shellany (0.0.1)
121
- thor (1.2.1)
122
- tzinfo (2.0.5)
161
+ thor (1.3.1)
162
+ tzinfo (2.0.6)
123
163
  concurrent-ruby (~> 1.0)
124
- unicode-display_width (2.3.0)
125
- webmock (3.18.1)
164
+ unicode-display_width (2.5.0)
165
+ webmock (3.23.0)
126
166
  addressable (>= 2.8.0)
127
167
  crack (>= 0.3.2)
128
168
  hashdiff (>= 0.4.0, < 2.0.0)
169
+ zeitwerk (2.6.13)
129
170
 
130
171
  PLATFORMS
131
- arm64-darwin-21
172
+ arm64-darwin-22
132
173
 
133
174
  DEPENDENCIES
134
175
  api_proxy!
135
176
  bundler
136
177
  bundler-audit
137
- guard-rspec (~> 4.7, >= 4.7.3)
178
+ guard-rspec
138
179
  overcommit
139
- rake (~> 10.0)
180
+ rake
140
181
  reek
141
- rspec (~> 3.0)
182
+ rspec
142
183
  rubocop
143
184
  webmock (~> 3.4, >= 3.4.2)
144
185
 
145
186
  BUNDLED WITH
146
- 2.3.25
187
+ 2.4.19
data/README.md CHANGED
@@ -34,6 +34,8 @@ ApiProxy.configure(:my_namespace) do |config|
34
34
  config.api_url = 'http://localhost:3002/api/v1'
35
35
 
36
36
  config.request_starts_with = '/_some_key'
37
+
38
+ config.allowed_headers = %w[content-type content-length]
37
39
  end
38
40
  ```
39
41
 
data/api_proxy.gemspec CHANGED
@@ -23,11 +23,11 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'bundler-audit'
26
- spec.add_development_dependency 'guard-rspec', '~> 4.7', '>= 4.7.3'
26
+ spec.add_development_dependency 'guard-rspec'
27
27
  spec.add_development_dependency 'overcommit'
28
- spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rake'
29
29
  spec.add_development_dependency 'reek'
30
- spec.add_development_dependency 'rspec', '~> 3.0'
30
+ spec.add_development_dependency 'rspec'
31
31
  spec.add_development_dependency 'rubocop'
32
32
  spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
33
33
 
@@ -8,7 +8,8 @@ module ApiProxy
8
8
  :request_starts_with,
9
9
  :request_allowed,
10
10
  :custom_headers,
11
- :reject_params
11
+ :reject_params,
12
+ :allowed_headers
12
13
 
13
14
  def initialize
14
15
  load_defaults
@@ -28,6 +29,15 @@ module ApiProxy
28
29
  @custom_headers = ->(_env) { {} }
29
30
 
30
31
  @reject_params = %w[utf8 authenticity_token commit format controller action]
32
+
33
+ @allowed_headers = %w[
34
+ content-type
35
+ etag
36
+ cache-control
37
+ content-length
38
+ content-disposition
39
+ content-transfer-encoding
40
+ ]
31
41
  end
32
42
  end
33
43
  end
@@ -2,21 +2,13 @@
2
2
 
3
3
  module ApiProxy
4
4
  class HeadersFilter
5
- ALLOWED_HEADERS = [
6
- 'content-type',
7
- 'etag',
8
- 'cache-control',
9
- 'content-length',
10
- 'content-disposition',
11
- 'content-transfer-encoding'
12
- ].freeze
13
-
14
- def initialize(headers)
5
+ def initialize(headers, allowed_headers = [])
15
6
  @headers = headers
7
+ @allowed_headers = allowed_headers
16
8
  end
17
9
 
18
10
  def filter
19
- @headers.select { |key, _value| ALLOWED_HEADERS.include?(key) }
11
+ @headers.select { |key, value| @allowed_headers.include?(key) && value.present? }
20
12
  .transform_values { |value| Array(value)[0] }
21
13
  end
22
14
  end
@@ -20,9 +20,9 @@ module ApiProxy
20
20
 
21
21
  def response
22
22
  Rack::Response.new(
23
- result.to_s,
23
+ result.body.to_s,
24
24
  result.code,
25
- ApiProxy::HeadersFilter.new(result.headers).filter
25
+ response_headers(result)
26
26
  )
27
27
  end
28
28
 
@@ -42,7 +42,7 @@ module ApiProxy
42
42
  end
43
43
 
44
44
  def options
45
- { namespace: namespace, body: filtered_params, headers: headers }
45
+ { namespace: namespace, body: filtered_params, headers: request_headers }
46
46
  end
47
47
 
48
48
  def filtered_params
@@ -53,8 +53,15 @@ module ApiProxy
53
53
  @params ||= (env['action_dispatch.request.request_parameters'].presence || request.params)
54
54
  end
55
55
 
56
- def headers
56
+ def request_headers
57
57
  config.custom_headers.call(env)
58
58
  end
59
+
60
+ def response_headers(response)
61
+ ApiProxy::HeadersFilter.new(
62
+ response.headers.merge('content-length' => response.body&.size),
63
+ @config.allowed_headers
64
+ ).filter
65
+ end
59
66
  end
60
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ApiProxy
4
- VERSION = '0.2.7'
4
+ VERSION = '0.2.9'
5
5
  end
data/lib/api_proxy.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'api_proxy/version'
4
- require 'active_support/time'
5
- require 'active_support/time_with_zone'
6
- require 'active_support/core_ext/module'
4
+
5
+ require 'active_support/all'
7
6
 
8
7
  module ApiProxy
8
+ extend ActiveSupport::Autoload
9
+
9
10
  autoload :Config, 'api_proxy/config'
10
11
  autoload :Middleware, 'api_proxy/middleware'
11
12
  autoload :HeadersFilter, 'api_proxy/headers_filter'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Malinovskiy
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-08 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,22 +42,16 @@ dependencies:
42
42
  name: guard-rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '4.7'
48
45
  - - ">="
49
46
  - !ruby/object:Gem::Version
50
- version: 4.7.3
47
+ version: '0'
51
48
  type: :development
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '4.7'
58
52
  - - ">="
59
53
  - !ruby/object:Gem::Version
60
- version: 4.7.3
54
+ version: '0'
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: overcommit
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -76,16 +70,16 @@ dependencies:
76
70
  name: rake
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
- - - "~>"
73
+ - - ">="
80
74
  - !ruby/object:Gem::Version
81
- version: '10.0'
75
+ version: '0'
82
76
  type: :development
83
77
  prerelease: false
84
78
  version_requirements: !ruby/object:Gem::Requirement
85
79
  requirements:
86
- - - "~>"
80
+ - - ">="
87
81
  - !ruby/object:Gem::Version
88
- version: '10.0'
82
+ version: '0'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: reek
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -104,16 +98,16 @@ dependencies:
104
98
  name: rspec
105
99
  requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
- - - "~>"
101
+ - - ">="
108
102
  - !ruby/object:Gem::Version
109
- version: '3.0'
103
+ version: '0'
110
104
  type: :development
111
105
  prerelease: false
112
106
  version_requirements: !ruby/object:Gem::Requirement
113
107
  requirements:
114
- - - "~>"
108
+ - - ">="
115
109
  - !ruby/object:Gem::Version
116
- version: '3.0'
110
+ version: '0'
117
111
  - !ruby/object:Gem::Dependency
118
112
  name: rubocop
119
113
  requirement: !ruby/object:Gem::Requirement
@@ -190,7 +184,7 @@ dependencies:
190
184
  - - ">="
191
185
  - !ruby/object:Gem::Version
192
186
  version: '0.15'
193
- description:
187
+ description:
194
188
  email:
195
189
  - igor.malinovskiy@netfixllc.org
196
190
  executables: []
@@ -225,7 +219,7 @@ homepage: https://github.com/psyipm/api_proxy
225
219
  licenses:
226
220
  - MIT
227
221
  metadata: {}
228
- post_install_message:
222
+ post_install_message:
229
223
  rdoc_options: []
230
224
  require_paths:
231
225
  - lib
@@ -240,8 +234,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
240
234
  - !ruby/object:Gem::Version
241
235
  version: '0'
242
236
  requirements: []
243
- rubygems_version: 3.1.6
244
- signing_key:
237
+ rubygems_version: 3.4.10
238
+ signing_key:
245
239
  specification_version: 4
246
240
  summary: Proxy for tickets service
247
241
  test_files: []