protobuf 2.4.7 → 2.4.8

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.
@@ -22,6 +22,27 @@ module Protobuf
22
22
  bytes
23
23
  end
24
24
 
25
+ def define_setter
26
+ field = self
27
+ @message_class.class_eval do
28
+ define_method(field.setter_method_name) do |val|
29
+ begin
30
+ field.warn_if_deprecated
31
+
32
+ if val.nil?
33
+ @values.delete(field.name)
34
+ elsif field.acceptable?(val)
35
+ @values[field.name] = val.dup
36
+ else
37
+ raise TypeError, "unacceptable value #{val} for type #{field.type}"
38
+ end
39
+ rescue NoMethodError => ex
40
+ raise TypeError, "unacceptable value #{val} for type #{field.type} field #{field.name}"
41
+ end
42
+ end
43
+ end
44
+ end
45
+
25
46
  def encode(value)
26
47
  value = value.serialize_to_string if value.is_a?(::Protobuf::Message)
27
48
  value.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
@@ -5,27 +5,6 @@ module Protobuf
5
5
  class StringField < BytesField
6
6
  ENCODING = 'UTF-8'.freeze
7
7
 
8
- def define_setter
9
- field = self
10
- @message_class.class_eval do
11
- define_method(field.setter_method_name) do |val|
12
- begin
13
- field.warn_if_deprecated
14
-
15
- if val.nil? || val.empty?
16
- @values.delete(field.name)
17
- elsif field.acceptable?(val)
18
- @values[field.name] = val.dup
19
- else
20
- raise TypeError, "unacceptable value #{val} for type #{field.type}"
21
- end
22
- rescue NoMethodError => ex
23
- raise TypeError, "unacceptable value #{val} for type #{field.type} field #{field.name}"
24
- end
25
- end
26
- end
27
- end
28
-
29
8
  def encode(value)
30
9
  value.force_encoding(::Protobuf::Field::StringField::ENCODING)
31
10
  string_size = ::Protobuf::Field::VarintField.encode(value.size)
@@ -160,11 +160,11 @@ module Protobuf
160
160
 
161
161
  value = @values[field.name]
162
162
 
163
- if value.present? || [true, false].include?(value)
164
- yield(field, value)
165
- else
166
- # Only way you can get here is if you are required and not present
163
+ if value.nil?
164
+ # Only way you can get here is if you are required and nil
167
165
  raise ::Protobuf::SerializationError, "#{field.name} is required on #{field.message_class}"
166
+ else
167
+ yield(field, value)
168
168
  end
169
169
  end
170
170
  end
@@ -336,12 +336,7 @@ module Protobuf
336
336
  end
337
337
 
338
338
  def __field_must_be_serialized__?(field)
339
- field.required? || __field_value_is_present__?(field)
340
- end
341
-
342
- def __field_value_is_present__?(field)
343
- value = @values[field.name]
344
- !value.nil? && (value.present? || [true, false].include?(value))
339
+ field.required? || !@values[field.name].nil?
345
340
  end
346
341
 
347
342
  # Encode key and value, and write to +stream+.
@@ -147,7 +147,11 @@ module Protobuf
147
147
  # Request object for this rpc cycle. Not assignable.
148
148
  #
149
149
  def request
150
- @_request ||= rpcs[@rpc].request_type.new.parse_from_string(@request_bytes)
150
+ @_request ||= if @request_bytes.present?
151
+ rpcs[@rpc].request_type.new.parse_from_string(@request_bytes)
152
+ else
153
+ rpcs[@rpc].request_type.new
154
+ end
151
155
  rescue => e
152
156
  raise BadRequestProto, "Unable to parse request: #{e.message}"
153
157
  end
@@ -71,8 +71,10 @@ module Protobuf
71
71
  #
72
72
  def init_method
73
73
  method_name = outer_request.method_name.underscore.to_sym
74
+ request_proto = outer_request.has_field?(:request_proto) ? outer_request.request_proto : nil
75
+
74
76
  if service_klass.rpc_method?(method_name)
75
- self.service = service_klass.new(method_name, outer_request.request_proto)
77
+ self.service = service_klass.new(method_name, request_proto)
76
78
  self.callable_method = service.callable_rpc_method(method_name)
77
79
  self.definition = service.rpcs[method_name]
78
80
  else
@@ -1,4 +1,4 @@
1
1
  module Protobuf
2
- VERSION = '2.4.7'
2
+ VERSION = '2.4.8'
3
3
  PROTOC_VERSION = '2.4.1'
4
4
  end
@@ -36,7 +36,7 @@ module Protobuf
36
36
  #
37
37
  ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :service_name, 1)
38
38
  ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :method_name, 2)
39
- ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::BytesField, :request_proto, 3)
39
+ ::Protobuf::Socketrpc::Request.optional(::Protobuf::Field::BytesField, :request_proto, 3)
40
40
 
41
41
  ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::BytesField, :response_proto, 1)
42
42
  ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::StringField, :error, 2)
@@ -33,7 +33,7 @@ message Request {
33
33
  required string method_name = 2;
34
34
 
35
35
  // RPC request proto
36
- required bytes request_proto = 3;
36
+ optional bytes request_proto = 3;
37
37
  }
38
38
 
39
39
  message Response {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.7
4
+ version: 2.4.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-18 00:00:00.000000000 Z
13
+ date: 2012-11-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -498,7 +498,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
498
498
  version: '0'
499
499
  segments:
500
500
  - 0
501
- hash: 1379767212789735468
501
+ hash: -3822315942507757741
502
502
  required_rubygems_version: !ruby/object:Gem::Requirement
503
503
  none: false
504
504
  requirements:
@@ -507,7 +507,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
507
507
  version: '0'
508
508
  segments:
509
509
  - 0
510
- hash: 1379767212789735468
510
+ hash: -3822315942507757741
511
511
  requirements: []
512
512
  rubyforge_project:
513
513
  rubygems_version: 1.8.24