grpc-rest 0.1.11 → 0.1.12
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 +4 -4
- data/CHANGELOG +3 -0
- data/lib/grpc_rest/version.rb +1 -1
- data/lib/grpc_rest.rb +13 -4
- data/protoc-gen-rails/testdata/test_service.proto +1 -0
- data/spec/grpc_rest_spec.rb +2 -1
- data/spec/test_service_pb.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bfe3edbd1ceece344b2dff703ce619a0d829e40cec4022fe4676fe61ab77940
|
4
|
+
data.tar.gz: a86fd6b8b0fd11479510e3db9296431d4f36490ec2ad1037ce2a1e80fcac2578
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c08004595c9f8db0c3e7f6a0f9b15c35fa91f83229ed2741a303633fd174a6f1dba521ba73fb989a17ea901fd5c46177f842449845fd5493c45182bcc232bde4
|
7
|
+
data.tar.gz: 4010b037a9bd33eb3b5b80896dbc73449f4adb2fccc51771ecec9d0bea1017365181eb9c4e23e87763c8c62cbf15a43da9e5bf2c0b2ef8ae5e6f4f6da870d1ec
|
data/CHANGELOG
CHANGED
data/lib/grpc_rest/version.rb
CHANGED
data/lib/grpc_rest.rb
CHANGED
@@ -36,13 +36,22 @@ module GrpcRest
|
|
36
36
|
proto.public_send(:"#{tokens.last}=", value) if proto.respond_to?(:"#{tokens.last}=")
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
39
|
+
def map_proto_type(proto, params)
|
40
40
|
proto.to_a.each do |descriptor|
|
41
41
|
field = descriptor.name
|
42
42
|
val = params[field]
|
43
43
|
next if val.nil?
|
44
44
|
next if descriptor.subtype.is_a?(Google::Protobuf::EnumDescriptor)
|
45
45
|
|
46
|
+
case descriptor.type
|
47
|
+
when *%i(int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64)
|
48
|
+
params[field] = val.to_i
|
49
|
+
when *%i(float double)
|
50
|
+
params[field] = val.to_f
|
51
|
+
when :bool
|
52
|
+
params[field] = !!val
|
53
|
+
end
|
54
|
+
|
46
55
|
case descriptor.subtype&.name
|
47
56
|
when 'google.protobuf.Struct'
|
48
57
|
params[field] = Google::Protobuf::Struct.from_hash(val)
|
@@ -59,17 +68,17 @@ module GrpcRest
|
|
59
68
|
else
|
60
69
|
if params[field].is_a?(Array)
|
61
70
|
params[field].each do |item|
|
62
|
-
|
71
|
+
map_proto_type(descriptor.subtype, item)
|
63
72
|
end
|
64
73
|
else
|
65
|
-
|
74
|
+
map_proto_type(descriptor.subtype, params[field])
|
66
75
|
end
|
67
76
|
end
|
68
77
|
end
|
69
78
|
end
|
70
79
|
|
71
80
|
def init_request(request_class, params)
|
72
|
-
|
81
|
+
map_proto_type(request_class.descriptor, params)
|
73
82
|
request_class.new(params)
|
74
83
|
end
|
75
84
|
|
data/spec/grpc_rest_spec.rb
CHANGED
@@ -66,6 +66,7 @@ RSpec.describe MyServiceController, type: :request do
|
|
66
66
|
it 'should be successful' do
|
67
67
|
params = {
|
68
68
|
test_id: 'abc',
|
69
|
+
some_int: "65",
|
69
70
|
foobar: 'xyz',
|
70
71
|
repeated_string: ['W', 'T', 'F'],
|
71
72
|
sub_record: {
|
@@ -95,7 +96,7 @@ RSpec.describe MyServiceController, type: :request do
|
|
95
96
|
expect(response).to be_successful
|
96
97
|
expect(response.parsed_body).to eq({
|
97
98
|
'some_int' => 4,
|
98
|
-
'full_response' => %({"testId":"abc","foobar":"xyz","repeatedString":["W","T","F"],"subRecord":{"subId":"id1","anotherId":"id2"},"secondRecord":{"subId":"id3","anotherId":"id4"},"structField":{"bool_key":true,"str_key":"val","nil_key":null,"list_key":[{"inner_key":"inner_val"}],"int_key":123},"timestampField":"2024-04-03T01:02:03Z","listValue":["F","Y","I"],"bareValue":45})
|
99
|
+
'full_response' => %({"testId":"abc","foobar":"xyz","repeatedString":["W","T","F"],"subRecord":{"subId":"id1","anotherId":"id2"},"secondRecord":{"subId":"id3","anotherId":"id4"},"structField":{"bool_key":true,"str_key":"val","nil_key":null,"list_key":[{"inner_key":"inner_val"}],"int_key":123},"timestampField":"2024-04-03T01:02:03Z","listValue":["F","Y","I"],"bareValue":45,\"someInt\":65})
|
99
100
|
})
|
100
101
|
end
|
101
102
|
end
|
data/spec/test_service_pb.rb
CHANGED
@@ -9,7 +9,7 @@ require 'google/protobuf/struct_pb'
|
|
9
9
|
require 'google/protobuf/timestamp_pb'
|
10
10
|
|
11
11
|
|
12
|
-
descriptor_data = "\n\x12test_service.proto\x12\x08testdata\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\
|
12
|
+
descriptor_data = "\n\x12test_service.proto\x12\x08testdata\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x98\x03\n\x0bTestRequest\x12\x0f\n\x07test_id\x18\x01 \x01(\t\x12\x0e\n\x06\x66oobar\x18\x02 \x01(\t\x12\x17\n\x0frepeated_string\x18\x03 \x03(\t\x12\'\n\nsub_record\x18\x04 \x01(\x0b\x32\x13.testdata.SubRecord\x12*\n\rsecond_record\x18\x05 \x01(\x0b\x32\x13.testdata.SubRecord\x12-\n\x0cstruct_field\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x33\n\x0ftimestamp_field\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nlist_value\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.ListValue\x12*\n\nbare_value\x18\t \x01(\x0b\x32\x16.google.protobuf.Value\x12(\n\x0bsub_records\x18\n \x03(\x0b\x32\x13.testdata.SubRecord\x12\x10\n\x08some_int\x18\x0b \x01(\x05\"/\n\tSubRecord\x12\x0e\n\x06sub_id\x18\x01 \x01(\t\x12\x12\n\nanother_id\x18\x02 \x01(\t\"7\n\x0cTestResponse\x12\x10\n\x08some_int\x18\x01 \x01(\x05\x12\x15\n\rfull_response\x18\x02 \x01(\t2\xdf\x02\n\tMyService\x12T\n\x04Test\x12\x15.testdata.TestRequest\x1a\x16.testdata.TestResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/test/{foobar=blah/*}\x12U\n\x05Test2\x12\x15.testdata.TestRequest\x1a\x16.testdata.TestResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x06/test2:\rsecond_record\x12Z\n\x05Test3\x12\x15.testdata.TestRequest\x1a\x16.testdata.TestResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x1a/test3/{sub_record.sub_id}\x12I\n\x05Test4\x12\x15.testdata.TestRequest\x1a\x16.testdata.TestResponse\"\x11\x82\xd3\xe4\x93\x02\x0b\"\x06/test4:\x01*b\x06proto3"
|
13
13
|
|
14
14
|
pool = Google::Protobuf::DescriptorPool.generated_pool
|
15
15
|
pool.add_serialized_file(descriptor_data)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grpc-rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Orner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grpc
|