api_proxy 0.2.7 → 0.2.8

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: f7f3102a142d918c17fee6b1c1de26b5ce09f78f31422839d27283839b011371
4
- data.tar.gz: '06889bbc07a32f23482e1b44f038d84f938200919b98865e3eec816b6f8447e6'
3
+ metadata.gz: e5eef0dded505216ee8d17ccc306b16854efd171f3971e45901410225810adb5
4
+ data.tar.gz: 29704f1f5c053fc93247930fbf912a3a6484501b0cedb04862a0b19061044bcf
5
5
  SHA512:
6
- metadata.gz: 5f6e2852947eb89a50076c9fc99528639e9021b2c9b79d80e71eaf693845dab8ef295b8c18d830255cf42c1c710ff0c8f2a8d435c0fd00912d2bb4a806c162a9
7
- data.tar.gz: fd5715b1d1322458fdc69bac3f380138ea9ff60dd458dc98e3ddf700f10fc6aae9daea93fec3d7ed883e357ef5ece2268e1bbe6118c96b77646b931525d1a4a1
6
+ metadata.gz: a74b708a2d35a0d8d078acba1d9b601135e0396164ef695a84e3eb29114790e2f9ac8265c8a3ecc43370241ca6d11207e9454dfd5142f05247e4d43833a68760
7
+ data.tar.gz: ecc004d5c99b8cae0030ee28c0fa3b70a54d7aebcceef20cd2d489707ee2b1f82bbde82ff98e92f2de0a6f2544003916c08ad07dca518a99fc1509ade5f24ace
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.8)
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) }
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.8'
5
5
  end
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.8
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-03 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: []