grpc-web 1.2.1 → 1.3.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: 4a827887d2a84c23d24a6aa4ae6fd0cf81df893c4f1c9f2461af484621de856b
4
- data.tar.gz: 200ec67ac9d863a3fde1aac8a8ff5f991c580da27cfeb919b6b187891e10b1bd
3
+ metadata.gz: 6e526c73cf9201c8bd579d12a88b6201d557da57602229759b3fcc0b99a1b48f
4
+ data.tar.gz: 64b6eb5a814450798e69cdfe2c440685e5b8f70a7e662ae2d1ad1f61dc3d7b43
5
5
  SHA512:
6
- metadata.gz: 58636b56284fb1255c1f6f2943a73db0adea7d5b1b7556b736e41fdbf9a77f9e9c49be03885911ab41df93ec79981af29e38b59258e6424db55e06eedd4de6d2
7
- data.tar.gz: 5f5eacc6a310cafc754787a565637d9857020f9d2c458810df2745ecd799cc0575142fb4dbb0956dc066fe71439f51624f9d7286c036dc60f7677df871b0d494
6
+ metadata.gz: '010186c6b9c93a7478d022225361cc79ecdaa2ec6900a30fc8ab3961a1a9da177f7c1aac0c863bbf7cc73b8d215b5f3860b08b1aa42f359f112dd5743d37163f'
7
+ data.tar.gz: '0260480cdf85a36b92e5eeeeead0e1ecd451cce4a33970d6c65b6cdf5535666e93ececa73039c3558fab4ac19d0bf3b384e108feaa9b0b6178bd5e79892e242f'
@@ -26,9 +26,9 @@ class GRPCWeb::Client
26
26
 
27
27
  def define_rpc_method(rpc_method, rpc_desc)
28
28
  ruby_method = ::GRPC::GenericService.underscore(rpc_method.to_s).to_sym
29
- define_singleton_method(ruby_method) do |params = {}|
29
+ define_singleton_method(ruby_method) do |params = {}, metadata = {}|
30
30
  uri = endpoint_uri(rpc_desc)
31
- ::GRPCWeb::ClientExecutor.request(uri, rpc_desc, params)
31
+ ::GRPCWeb::ClientExecutor.request(uri, rpc_desc, params, metadata)
32
32
  end
33
33
  end
34
34
 
@@ -16,28 +16,28 @@ module GRPCWeb::ClientExecutor
16
16
  GRPC_MESSAGE_HEADER = 'grpc-message'
17
17
  GRPC_HEADERS = %W[x-grpc-web #{GRPC_STATUS_HEADER} #{GRPC_MESSAGE_HEADER}].freeze
18
18
 
19
- def request(uri, rpc_desc, params = {})
19
+ def request(uri, rpc_desc, params = {}, metadata = {})
20
20
  req_proto = rpc_desc.input.new(params)
21
21
  marshalled_proto = rpc_desc.marshal_proc.call(req_proto)
22
22
  frame = ::GRPCWeb::MessageFrame.payload_frame(marshalled_proto)
23
23
  request_body = ::GRPCWeb::MessageFraming.pack_frames([frame])
24
24
 
25
- resp = post_request(uri, request_body)
25
+ resp = post_request(uri, request_body, metadata)
26
26
  resp_body = handle_response(resp)
27
27
  rpc_desc.unmarshal_proc(:output).call(resp_body)
28
28
  end
29
29
 
30
30
  private
31
31
 
32
- def request_headers
32
+ def request_headers(metadata)
33
33
  {
34
34
  'Accept' => PROTO_CONTENT_TYPE,
35
- 'Content-Type' => PROTO_CONTENT_TYPE,
36
- }
35
+ 'content-type' => PROTO_CONTENT_TYPE,
36
+ }.merge(metadata[:metadata] || {})
37
37
  end
38
38
 
39
- def post_request(uri, request_body)
40
- request = Net::HTTP::Post.new(uri, request_headers)
39
+ def post_request(uri, request_body, metadata)
40
+ request = Net::HTTP::Post.new(uri, request_headers(metadata))
41
41
  request.body = request_body
42
42
  request.basic_auth uri.user, uri.password if uri.userinfo
43
43
 
@@ -29,7 +29,7 @@ module GRPCWeb::RackHandler
29
29
  request = GRPCWeb::GRPCWebRequest.new(service, service_method, content_type, accept, body)
30
30
  response = GRPCWeb::GRPCRequestProcessor.process(request)
31
31
 
32
- [200, { 'Content-Type' => response.content_type }, [response.body]]
32
+ [200, { 'content-type' => response.content_type }, [response.body]]
33
33
  rescue Google::Protobuf::ParseError => e
34
34
  invalid_response(e.message)
35
35
  rescue StandardError => e
@@ -51,7 +51,7 @@ module GRPCWeb::RackHandler
51
51
  def not_found_response(path)
52
52
  [
53
53
  NOT_FOUND,
54
- { 'Content-Type' => 'text/plain', 'X-Cascade' => 'pass' },
54
+ { 'content-type' => 'text/plain', 'x-cascade' => 'pass' },
55
55
  ["Not Found: #{path}"],
56
56
  ]
57
57
  end
@@ -59,19 +59,19 @@ module GRPCWeb::RackHandler
59
59
  def unsupported_media_type_response
60
60
  [
61
61
  UNSUPPORTED_MEDIA_TYPE,
62
- { 'Content-Type' => 'text/plain' },
62
+ { 'content-type' => 'text/plain' },
63
63
  ['Unsupported Media Type: Invalid Content-Type or Accept header'],
64
64
  ]
65
65
  end
66
66
 
67
67
  def invalid_response(message)
68
- [422, { 'Content-Type' => 'text/plain' }, ["Invalid request format: #{message}"]]
68
+ [422, { 'content-type' => 'text/plain' }, ["Invalid request format: #{message}"]]
69
69
  end
70
70
 
71
71
  def error_response
72
72
  [
73
73
  INTERNAL_SERVER_ERROR,
74
- { 'Content-Type' => 'text/plain' },
74
+ { 'content-type' => 'text/plain' },
75
75
  ['Request failed with an unexpected error.'],
76
76
  ]
77
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GRPCWeb
4
- VERSION = '1.2.1'
4
+ VERSION = '1.3.0'
5
5
  end
metadata CHANGED
@@ -1,51 +1,120 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grpc-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Shkolnik
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2020-08-26 00:00:00.000000000 Z
10
+ date: 2026-03-04 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: google-protobuf
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
13
40
  - !ruby/object:Gem::Dependency
14
41
  name: grpc
15
42
  requirement: !ruby/object:Gem::Requirement
16
43
  requirements:
17
- - - "~>"
44
+ - - ">="
18
45
  - !ruby/object:Gem::Version
19
- version: '1.0'
46
+ version: '0'
20
47
  type: :runtime
21
48
  prerelease: false
22
49
  version_requirements: !ruby/object:Gem::Requirement
23
50
  requirements:
24
- - - "~>"
51
+ - - ">="
25
52
  - !ruby/object:Gem::Version
26
- version: '1.0'
53
+ version: '0'
27
54
  - !ruby/object:Gem::Dependency
28
55
  name: rack
29
56
  requirement: !ruby/object:Gem::Requirement
30
57
  requirements:
31
58
  - - ">="
32
59
  - !ruby/object:Gem::Version
33
- version: 1.6.0
60
+ version: '2'
34
61
  - - "<"
35
62
  - !ruby/object:Gem::Version
36
- version: '3.0'
63
+ version: '4'
37
64
  type: :runtime
38
65
  prerelease: false
39
66
  version_requirements: !ruby/object:Gem::Requirement
40
67
  requirements:
41
68
  - - ">="
42
69
  - !ruby/object:Gem::Version
43
- version: 1.6.0
70
+ version: '2'
44
71
  - - "<"
45
72
  - !ruby/object:Gem::Version
46
- version: '3.0'
73
+ version: '4'
47
74
  - !ruby/object:Gem::Dependency
48
- name: apparition
75
+ name: capybara
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ - !ruby/object:Gem::Dependency
89
+ name: rackup
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ - !ruby/object:Gem::Dependency
103
+ name: webrick
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ - !ruby/object:Gem::Dependency
117
+ name: selenium-webdriver
49
118
  requirement: !ruby/object:Gem::Requirement
50
119
  requirements:
51
120
  - - ">="
@@ -104,30 +173,30 @@ dependencies:
104
173
  name: rspec
105
174
  requirement: !ruby/object:Gem::Requirement
106
175
  requirements:
107
- - - "~>"
176
+ - - ">="
108
177
  - !ruby/object:Gem::Version
109
- version: '3.3'
178
+ version: '0'
110
179
  type: :development
111
180
  prerelease: false
112
181
  version_requirements: !ruby/object:Gem::Requirement
113
182
  requirements:
114
- - - "~>"
183
+ - - ">="
115
184
  - !ruby/object:Gem::Version
116
- version: '3.3'
185
+ version: '0'
117
186
  - !ruby/object:Gem::Dependency
118
187
  name: rubocop
119
188
  requirement: !ruby/object:Gem::Requirement
120
189
  requirements:
121
- - - "~>"
190
+ - - ">="
122
191
  - !ruby/object:Gem::Version
123
- version: 0.79.0
192
+ version: '0'
124
193
  type: :development
125
194
  prerelease: false
126
195
  version_requirements: !ruby/object:Gem::Requirement
127
196
  requirements:
128
- - - "~>"
197
+ - - ">="
129
198
  - !ruby/object:Gem::Version
130
- version: 0.79.0
199
+ version: '0'
131
200
  - !ruby/object:Gem::Dependency
132
201
  name: rubocop-rspec
133
202
  requirement: !ruby/object:Gem::Requirement
@@ -200,7 +269,6 @@ homepage: https://github.com/gusto/grpc-web-ruby
200
269
  licenses:
201
270
  - MIT
202
271
  metadata: {}
203
- post_install_message:
204
272
  rdoc_options: []
205
273
  require_paths:
206
274
  - lib
@@ -215,8 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
283
  - !ruby/object:Gem::Version
216
284
  version: '0'
217
285
  requirements: []
218
- rubygems_version: 3.0.3
219
- signing_key:
286
+ rubygems_version: 3.6.2
220
287
  specification_version: 4
221
288
  summary: Host gRPC-Web endpoints for Ruby gRPC services in a Rack or Rails app(over
222
289
  HTTP/1.1). Client included.