protip 0.33.0 → 0.35.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/protip.rb +1 -0
- data/lib/protip/client.rb +1 -19
- data/lib/protip/decorator.rb +1 -1
- data/lib/protip/messages/active_support/time_with_zone_pb.rb +5 -3
- data/lib/protip/messages/array_pb.rb +4 -2
- data/lib/protip/messages/big_decimal_value_pb.rb +6 -4
- data/lib/protip/messages/currency_pb.rb +179 -177
- data/lib/protip/messages/errors_pb.rb +9 -7
- data/lib/protip/messages/money_pb.rb +5 -3
- data/lib/protip/messages/range_pb.rb +5 -3
- data/lib/protip/messages/repeated_wrappers_pb.rb +31 -29
- data/lib/protip/messages/test_pb.rb +9 -7
- data/lib/protip/messages/types_pb.rb +6 -4
- data/lib/protip/messages/wrappers_pb.rb +4 -2
- data/lib/protip/messages_pb.rb +2 -0
- data/lib/protip/resource.rb +14 -3
- data/lib/protip/tasks/compile.rake +3 -1
- data/lib/protip/transformers/active_support/time_with_zone_transformer.rb +2 -2
- data/lib/protip/transformers/big_decimal_transformer.rb +2 -2
- data/lib/protip/transformers/decorating_transformer.rb +1 -1
- data/lib/protip/transformers/deprecated_transformer.rb +2 -2
- data/lib/protip/version.rb +3 -0
- data/test/test_helper.rb +3 -2
- data/test/unit/protip/resource/associations/belongs_to_polymorphic_association_test.rb +4 -4
- data/test/unit/protip/resource_test.rb +1 -1
- data/test/unit/protip/transformers/big_decimal_transformer_test.rb +6 -6
- data/test/unit/protip/transformers/default_transformer_test.rb +2 -2
- metadata +54 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e4f44a0af07ee5f3839ebb17387a687388f9829629017b84d73797d2f2e98bbe
|
4
|
+
data.tar.gz: 5495fdb816a03f86b227f67a5b5a2c9f87849bc702c8de9382d887b7eafbbb71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ced23785cbd438817f3c07a2cb8e68d2eebcf7deeb126235ca12bbcbcc25432a1e6373985650d8814d27a50ec717b2c7fd403aca77f510089d8be6947ff3748
|
7
|
+
data.tar.gz: 87a05ad4ec2e849cdc84ab197e613a04fdcdae609393b4fde5f7d121c1b503670749e8233f65f3bc1a40bc75fb3d31f2652c31f22e88da03af5ab5c877b061aa
|
data/lib/protip.rb
CHANGED
data/lib/protip/client.rb
CHANGED
@@ -69,27 +69,9 @@ module Protip
|
|
69
69
|
# @param request [Net::HTTPGenericRequest] the raw request object to send
|
70
70
|
# @return [Net::HTTPResponse] the response for the given request
|
71
71
|
def execute_request(request)
|
72
|
-
http = nil
|
73
72
|
uri = request.uri
|
74
|
-
|
75
|
-
max_retries = 3
|
76
|
-
|
77
|
-
begin
|
78
|
-
unless http
|
79
|
-
http = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', read_timeout: 120)
|
80
|
-
end
|
73
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', read_timeout: 600) do |http|
|
81
74
|
http.request request
|
82
|
-
rescue Net::OpenTimeout, Net::ReadTimeout
|
83
|
-
if (retries += 1) <= max_retries
|
84
|
-
sleep(retries)
|
85
|
-
retry
|
86
|
-
else
|
87
|
-
raise
|
88
|
-
end
|
89
|
-
ensure
|
90
|
-
if http
|
91
|
-
http.finish
|
92
|
-
end
|
93
75
|
end
|
94
76
|
end
|
95
77
|
end
|
data/lib/protip/decorator.rb
CHANGED
@@ -281,7 +281,7 @@ module Protip
|
|
281
281
|
|
282
282
|
def method_missing_query(name, *args)
|
283
283
|
field = message.class.descriptor.lookup(name[0, name.length - 1])
|
284
|
-
raise NoMethodError unless field
|
284
|
+
raise NoMethodError.new("No query method found for: #{name}") unless field
|
285
285
|
|
286
286
|
if nil != Protip::Decorator.enum_for_field(field) && args.length == 1
|
287
287
|
matches?(field, args[0])
|
@@ -4,9 +4,11 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
add_file("protip/messages/active_support/time_with_zone.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.ActiveSupport.TimeWithZone" do
|
9
|
+
optional :utc_timestamp, :int64, 1
|
10
|
+
optional :time_zone_name, :string, 2
|
11
|
+
end
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
@@ -4,8 +4,10 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
7
|
+
add_file("protip/messages/array.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.Array" do
|
9
|
+
repeated :messages, :bytes, 1
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
@@ -4,10 +4,12 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
add_file("protip/messages/big_decimal_value.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.BigDecimalValue" do
|
9
|
+
optional :numerator, :int64, 1
|
10
|
+
optional :denominator, :uint64, 2
|
11
|
+
optional :precision, :uint32, 3
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
@@ -4,183 +4,185 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
7
|
+
add_file("protip/messages/currency.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.Currency" do
|
9
|
+
optional :currency_code, :enum, 1, "protip.messages.Currency.CurrencyCode"
|
10
|
+
end
|
11
|
+
add_enum "protip.messages.Currency.CurrencyCode" do
|
12
|
+
value :AED, 0
|
13
|
+
value :AFN, 1
|
14
|
+
value :ALL, 2
|
15
|
+
value :AMD, 3
|
16
|
+
value :ANG, 4
|
17
|
+
value :AOA, 5
|
18
|
+
value :ARS, 6
|
19
|
+
value :AUD, 7
|
20
|
+
value :AWG, 8
|
21
|
+
value :AZN, 9
|
22
|
+
value :BAM, 10
|
23
|
+
value :BBD, 11
|
24
|
+
value :BDT, 12
|
25
|
+
value :BGN, 13
|
26
|
+
value :BHD, 14
|
27
|
+
value :BIF, 15
|
28
|
+
value :BMD, 16
|
29
|
+
value :BND, 17
|
30
|
+
value :BOB, 18
|
31
|
+
value :BRL, 19
|
32
|
+
value :BSD, 20
|
33
|
+
value :BTN, 21
|
34
|
+
value :BWP, 22
|
35
|
+
value :BYR, 23
|
36
|
+
value :BZD, 24
|
37
|
+
value :CAD, 25
|
38
|
+
value :CDF, 26
|
39
|
+
value :CHF, 27
|
40
|
+
value :CLF, 28
|
41
|
+
value :CLP, 29
|
42
|
+
value :CNY, 30
|
43
|
+
value :COP, 31
|
44
|
+
value :CRC, 32
|
45
|
+
value :CUC, 33
|
46
|
+
value :CUP, 34
|
47
|
+
value :CVE, 35
|
48
|
+
value :CZK, 36
|
49
|
+
value :DJF, 37
|
50
|
+
value :DKK, 38
|
51
|
+
value :DOP, 39
|
52
|
+
value :DZD, 40
|
53
|
+
value :EGP, 41
|
54
|
+
value :ERN, 42
|
55
|
+
value :ETB, 43
|
56
|
+
value :EUR, 44
|
57
|
+
value :FJD, 45
|
58
|
+
value :FKP, 46
|
59
|
+
value :GBP, 47
|
60
|
+
value :GEL, 48
|
61
|
+
value :GHS, 49
|
62
|
+
value :GIP, 50
|
63
|
+
value :GMD, 51
|
64
|
+
value :GNF, 52
|
65
|
+
value :GTQ, 53
|
66
|
+
value :GYD, 54
|
67
|
+
value :HKD, 55
|
68
|
+
value :HNL, 56
|
69
|
+
value :HRK, 57
|
70
|
+
value :HTG, 58
|
71
|
+
value :HUF, 59
|
72
|
+
value :IDR, 60
|
73
|
+
value :ILS, 61
|
74
|
+
value :INR, 62
|
75
|
+
value :IQD, 63
|
76
|
+
value :IRR, 64
|
77
|
+
value :ISK, 65
|
78
|
+
value :JMD, 66
|
79
|
+
value :JOD, 67
|
80
|
+
value :JPY, 68
|
81
|
+
value :KES, 69
|
82
|
+
value :KGS, 70
|
83
|
+
value :KHR, 71
|
84
|
+
value :KMF, 72
|
85
|
+
value :KPW, 73
|
86
|
+
value :KRW, 74
|
87
|
+
value :KWD, 75
|
88
|
+
value :KYD, 76
|
89
|
+
value :KZT, 77
|
90
|
+
value :LAK, 78
|
91
|
+
value :LBP, 79
|
92
|
+
value :LKR, 80
|
93
|
+
value :LRD, 81
|
94
|
+
value :LSL, 82
|
95
|
+
value :LTL, 83
|
96
|
+
value :LVL, 84
|
97
|
+
value :LYD, 85
|
98
|
+
value :MAD, 86
|
99
|
+
value :MDL, 87
|
100
|
+
value :MGA, 88
|
101
|
+
value :MKD, 89
|
102
|
+
value :MMK, 90
|
103
|
+
value :MNT, 91
|
104
|
+
value :MOP, 92
|
105
|
+
value :MRO, 93
|
106
|
+
value :MUR, 94
|
107
|
+
value :MVR, 95
|
108
|
+
value :MWK, 96
|
109
|
+
value :MXN, 97
|
110
|
+
value :MYR, 98
|
111
|
+
value :MZN, 99
|
112
|
+
value :NAD, 100
|
113
|
+
value :NGN, 101
|
114
|
+
value :NIO, 102
|
115
|
+
value :NOK, 103
|
116
|
+
value :NPR, 104
|
117
|
+
value :NZD, 105
|
118
|
+
value :OMR, 106
|
119
|
+
value :PAB, 107
|
120
|
+
value :PEN, 108
|
121
|
+
value :PGK, 109
|
122
|
+
value :PHP, 110
|
123
|
+
value :PKR, 111
|
124
|
+
value :PLN, 112
|
125
|
+
value :PYG, 113
|
126
|
+
value :QAR, 114
|
127
|
+
value :RON, 115
|
128
|
+
value :RSD, 116
|
129
|
+
value :RUB, 117
|
130
|
+
value :RWF, 118
|
131
|
+
value :SAR, 119
|
132
|
+
value :SBD, 120
|
133
|
+
value :SCR, 121
|
134
|
+
value :SDG, 122
|
135
|
+
value :SEK, 123
|
136
|
+
value :SGD, 124
|
137
|
+
value :SHP, 125
|
138
|
+
value :SKK, 126
|
139
|
+
value :SLL, 127
|
140
|
+
value :SOS, 128
|
141
|
+
value :SRD, 129
|
142
|
+
value :SSP, 130
|
143
|
+
value :STD, 131
|
144
|
+
value :SVC, 132
|
145
|
+
value :SYP, 133
|
146
|
+
value :SZL, 134
|
147
|
+
value :THB, 135
|
148
|
+
value :TJS, 136
|
149
|
+
value :TMT, 137
|
150
|
+
value :TND, 138
|
151
|
+
value :TOP, 139
|
152
|
+
value :TRY, 140
|
153
|
+
value :TTD, 141
|
154
|
+
value :TWD, 142
|
155
|
+
value :TZS, 143
|
156
|
+
value :UAH, 144
|
157
|
+
value :UGX, 145
|
158
|
+
value :USD, 146
|
159
|
+
value :UYU, 147
|
160
|
+
value :UZS, 148
|
161
|
+
value :VEF, 149
|
162
|
+
value :VND, 150
|
163
|
+
value :VUV, 151
|
164
|
+
value :WST, 152
|
165
|
+
value :XAF, 153
|
166
|
+
value :XAG, 154
|
167
|
+
value :XAU, 155
|
168
|
+
value :XCD, 156
|
169
|
+
value :XDR, 157
|
170
|
+
value :XOF, 158
|
171
|
+
value :XPF, 159
|
172
|
+
value :YER, 160
|
173
|
+
value :ZAR, 161
|
174
|
+
value :ZMK, 162
|
175
|
+
value :ZMW, 163
|
176
|
+
value :BTC, 164
|
177
|
+
value :JEP, 165
|
178
|
+
value :EEK, 166
|
179
|
+
value :MTL, 167
|
180
|
+
value :TMM, 168
|
181
|
+
value :ZWD, 169
|
182
|
+
value :ZWL, 170
|
183
|
+
value :ZWN, 171
|
184
|
+
value :ZWR, 172
|
185
|
+
end
|
184
186
|
end
|
185
187
|
end
|
186
188
|
|
@@ -4,13 +4,15 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
add_file("protip/messages/errors.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.Errors" do
|
9
|
+
repeated :messages, :string, 1
|
10
|
+
repeated :field_errors, :message, 2, "protip.messages.FieldError"
|
11
|
+
end
|
12
|
+
add_message "protip.messages.FieldError" do
|
13
|
+
optional :field, :string, 1
|
14
|
+
optional :message, :string, 2
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
@@ -5,9 +5,11 @@ require 'google/protobuf'
|
|
5
5
|
|
6
6
|
require 'protip/messages/currency_pb'
|
7
7
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
add_file("protip/messages/money.proto", :syntax => :proto3) do
|
9
|
+
add_message "protip.messages.Money" do
|
10
|
+
optional :amount_cents, :int64, 1
|
11
|
+
optional :currency, :message, 2, "protip.messages.Currency"
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
@@ -4,9 +4,11 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
add_file("protip/messages/range.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.Range" do
|
9
|
+
optional :begin, :int64, 1
|
10
|
+
optional :end, :int64, 2
|
11
|
+
end
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
@@ -5,35 +5,37 @@ require 'google/protobuf'
|
|
5
5
|
|
6
6
|
require 'protip/extensions_pb'
|
7
7
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
8
|
+
add_file("protip/messages/repeated_wrappers.proto", :syntax => :proto3) do
|
9
|
+
add_message "protip.messages.RepeatedDouble" do
|
10
|
+
repeated :values, :double, 1
|
11
|
+
end
|
12
|
+
add_message "protip.messages.RepeatedFloat" do
|
13
|
+
repeated :values, :float, 1
|
14
|
+
end
|
15
|
+
add_message "protip.messages.RepeatedInt64" do
|
16
|
+
repeated :values, :int64, 1
|
17
|
+
end
|
18
|
+
add_message "protip.messages.RepeatedUInt64" do
|
19
|
+
repeated :values, :uint64, 1
|
20
|
+
end
|
21
|
+
add_message "protip.messages.RepeatedInt32" do
|
22
|
+
repeated :values, :int32, 1
|
23
|
+
end
|
24
|
+
add_message "protip.messages.RepeatedUInt32" do
|
25
|
+
repeated :values, :uint32, 1
|
26
|
+
end
|
27
|
+
add_message "protip.messages.RepeatedBool" do
|
28
|
+
repeated :values, :bool, 1
|
29
|
+
end
|
30
|
+
add_message "protip.messages.RepeatedString" do
|
31
|
+
repeated :values, :string, 1
|
32
|
+
end
|
33
|
+
add_message "protip.messages.RepeatedBytes" do
|
34
|
+
repeated :values, :bytes, 1
|
35
|
+
end
|
36
|
+
add_message "protip.messages.RepeatedEnum" do
|
37
|
+
repeated :values, :int32, 1
|
38
|
+
end
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -6,13 +6,15 @@ require 'google/protobuf'
|
|
6
6
|
require 'protip/messages/repeated_wrappers_pb'
|
7
7
|
require 'protip/messages/wrappers_pb'
|
8
8
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
add_file("protip/messages/test.proto", :syntax => :proto3) do
|
10
|
+
add_message "protip.messages.EnumTest" do
|
11
|
+
optional :enum, :message, 1, "protip.messages.EnumValue"
|
12
|
+
optional :repeated_enums, :message, 2, "protip.messages.RepeatedEnum"
|
13
|
+
end
|
14
|
+
add_enum "protip.messages.EnumTest.Enum" do
|
15
|
+
value :ZERO, 0
|
16
|
+
value :ONE, 1
|
17
|
+
end
|
16
18
|
end
|
17
19
|
end
|
18
20
|
|
@@ -4,10 +4,12 @@
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
6
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
add_file("protip/messages/types.proto", :syntax => :proto3) do
|
8
|
+
add_message "protip.messages.Date" do
|
9
|
+
optional :year, :int64, 1
|
10
|
+
optional :month, :uint32, 2
|
11
|
+
optional :day, :uint32, 3
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
@@ -5,8 +5,10 @@ require 'google/protobuf'
|
|
5
5
|
|
6
6
|
require 'protip/extensions_pb'
|
7
7
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
8
|
-
|
9
|
-
|
8
|
+
add_file("protip/messages/wrappers.proto", :syntax => :proto3) do
|
9
|
+
add_message "protip.messages.EnumValue" do
|
10
|
+
optional :value, :int32, 1
|
11
|
+
end
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
data/lib/protip/messages_pb.rb
CHANGED
@@ -14,5 +14,7 @@ require 'protip/messages/types_pb'
|
|
14
14
|
require 'protip/messages/wrappers_pb'
|
15
15
|
require 'protip/messages/active_support/time_with_zone_pb'
|
16
16
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
17
|
+
add_file("protip/messages.proto", :syntax => :proto3) do
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
data/lib/protip/resource.rb
CHANGED
@@ -19,7 +19,6 @@ require 'active_model/dirty'
|
|
19
19
|
|
20
20
|
require 'forwardable'
|
21
21
|
|
22
|
-
require 'protip'
|
23
22
|
require 'protip/client'
|
24
23
|
require 'protip/error'
|
25
24
|
require 'protip/decorator'
|
@@ -78,14 +77,14 @@ module Protip
|
|
78
77
|
end
|
79
78
|
|
80
79
|
def transformer
|
81
|
-
@transformer
|
80
|
+
defined?(@transformer) ? @transformer : ::Protip.default_transformer
|
82
81
|
end
|
83
82
|
|
84
83
|
private
|
85
84
|
|
86
85
|
# Primary entry point for defining resourceful behavior.
|
87
86
|
def resource(actions:, message:, query: nil, nested_resources: {})
|
88
|
-
raise RuntimeError.new('Only one call to `resource` is allowed') if @message
|
87
|
+
raise RuntimeError.new('Only one call to `resource` is allowed') if defined?(@message) && @message
|
89
88
|
validate_actions!(actions)
|
90
89
|
validate_nested_resources!(nested_resources)
|
91
90
|
|
@@ -338,6 +337,18 @@ module Protip
|
|
338
337
|
success
|
339
338
|
end
|
340
339
|
|
340
|
+
class RecordInvalid < StandardError
|
341
|
+
end
|
342
|
+
|
343
|
+
def save!
|
344
|
+
success = save
|
345
|
+
if !success
|
346
|
+
error_messages = errors.full_messages.join(", ")
|
347
|
+
raise RecordInvalid.new("Validation failed: #{error_messages}")
|
348
|
+
end
|
349
|
+
success
|
350
|
+
end
|
351
|
+
|
341
352
|
def persisted?
|
342
353
|
id != nil
|
343
354
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'shellwords'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
2
4
|
namespace :protip do
|
3
5
|
desc 'compile a single .proto file to Ruby'
|
4
6
|
task :compile, [:filename, :proto_path, :ruby_path] do |t, args|
|
@@ -9,7 +11,7 @@ namespace :protip do
|
|
9
11
|
|
10
12
|
filename = args[:filename] || raise(ArgumentError.new 'filename argument is required')
|
11
13
|
|
12
|
-
command = "grpc_tools_ruby_protoc #{proto_path.map{|p| "--proto_path=#{Shellwords.escape p}"}.join ' '} --ruby_out=#{Shellwords.escape ruby_path} #{Shellwords.escape filename}"
|
14
|
+
command = "bundle exec grpc_tools_ruby_protoc #{proto_path.map{|p| "--proto_path=#{Shellwords.escape p}"}.join ' '} --ruby_out=#{Shellwords.escape ruby_path} #{Shellwords.escape filename}"
|
13
15
|
puts command
|
14
16
|
system command
|
15
17
|
|
@@ -22,7 +22,7 @@ module Protip
|
|
22
22
|
if !value.is_a?(::ActiveSupport::TimeWithZone) && (value.is_a?(Time) || value.is_a?(DateTime))
|
23
23
|
value = ::ActiveSupport::TimeWithZone.new(value.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
|
24
24
|
end
|
25
|
-
raise ArgumentError unless value.is_a?(::ActiveSupport::TimeWithZone)
|
25
|
+
raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{value.class.name}") unless value.is_a?(::ActiveSupport::TimeWithZone)
|
26
26
|
|
27
27
|
message_class.new(
|
28
28
|
utc_timestamp: value.to_i,
|
@@ -32,4 +32,4 @@ module Protip
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
|
-
end
|
35
|
+
end
|
@@ -16,7 +16,7 @@ module Protip
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def to_message(object, field)
|
19
|
-
object = BigDecimal
|
19
|
+
object = BigDecimal(object)
|
20
20
|
rational = object.to_r
|
21
21
|
field.subtype.msgclass.new(
|
22
22
|
numerator: rational.numerator,
|
@@ -28,4 +28,4 @@ module Protip
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
@@ -25,7 +25,7 @@ module Protip
|
|
25
25
|
decorator.assign_attributes(object)
|
26
26
|
decorator.message
|
27
27
|
else
|
28
|
-
raise ArgumentError
|
28
|
+
raise ArgumentError.new("#to_message expected a Hash or an already decorated object, received #{object.class.name} for #{field.type} #{field.name}")
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -50,7 +50,7 @@ module Protip
|
|
50
50
|
::Date.new(message.year, message.month, message.day)
|
51
51
|
end
|
52
52
|
def to_message(object, field)
|
53
|
-
raise ArgumentError unless object.is_a?(::Date)
|
53
|
+
raise ArgumentError.new("Field #{field.name} expected a date, #{object.class.name} given") unless object.is_a?(::Date)
|
54
54
|
field.subtype.msgclass.new(year: object.year, month: object.month, day: object.day)
|
55
55
|
end
|
56
56
|
end
|
@@ -77,7 +77,7 @@ module Protip
|
|
77
77
|
if !object.is_a?(::ActiveSupport::TimeWithZone) && (object.is_a?(Time) || object.is_a?(DateTime))
|
78
78
|
object = ::ActiveSupport::TimeWithZone.new(object.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
|
79
79
|
end
|
80
|
-
raise ArgumentError unless object.is_a?(::ActiveSupport::TimeWithZone)
|
80
|
+
raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{object.class.name}") unless object.is_a?(::ActiveSupport::TimeWithZone)
|
81
81
|
|
82
82
|
field.subtype.msgclass.new(
|
83
83
|
utc_timestamp: object.to_i,
|
data/test/test_helper.rb
CHANGED
@@ -46,7 +46,7 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
|
|
46
46
|
Protip::Resource::Associations::BelongsToPolymorphicAssociation.new resource_class,
|
47
47
|
:reference, [rick_ross_association]
|
48
48
|
end
|
49
|
-
assert_match
|
49
|
+
assert_match(/requires an association to be defined/, error.message)
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'raises an error if a belongs-to association is provided for a field outside the oneof' do
|
@@ -54,7 +54,7 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
|
|
54
54
|
Protip::Resource::Associations::BelongsToPolymorphicAssociation.new resource_class,
|
55
55
|
:reference, [rick_ross_association, other_association]
|
56
56
|
end
|
57
|
-
assert_match
|
57
|
+
assert_match(/requires an association to be defined/, error.message)
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'raises an error if a duplicate belongs-to association is provided' do
|
@@ -62,7 +62,7 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
|
|
62
62
|
Protip::Resource::Associations::BelongsToPolymorphicAssociation.new resource_class,
|
63
63
|
:reference, [rick_ross_association, rick_ross_association, fetty_wap_association]
|
64
64
|
end
|
65
|
-
assert_match
|
65
|
+
assert_match(/Duplicate association/, error.message)
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'allows the oneof ID field to be specified' do
|
@@ -147,4 +147,4 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
|
|
147
147
|
end
|
148
148
|
end
|
149
149
|
end
|
150
|
-
end
|
150
|
+
end
|
@@ -1043,7 +1043,7 @@ module Protip::ResourceTest # Namespace for internal constants
|
|
1043
1043
|
send method, :association_name, bad_option: 'bad', &block
|
1044
1044
|
end
|
1045
1045
|
end
|
1046
|
-
assert_match
|
1046
|
+
assert_match(/bad_option/, error.message)
|
1047
1047
|
end
|
1048
1048
|
end
|
1049
1049
|
end
|
@@ -27,14 +27,14 @@ describe Protip::Transformers::BigDecimalTransformer do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
describe 'for BigDecimal arguments' do
|
30
|
-
it_transforms 'integer', BigDecimal
|
31
|
-
it_transforms 'fractions', BigDecimal
|
32
|
-
it_transforms 'rational numbers', BigDecimal
|
30
|
+
it_transforms 'integer', BigDecimal(104, 1)
|
31
|
+
it_transforms 'fractions', BigDecimal(100.5, 5)
|
32
|
+
it_transforms 'rational numbers', BigDecimal(Rational(2, 3), 3)
|
33
33
|
end
|
34
34
|
|
35
35
|
describe 'for non-BigDecimal arguments' do
|
36
|
-
it_transforms 'integer', 3, BigDecimal
|
37
|
-
it_transforms 'string', '3.3', BigDecimal
|
36
|
+
it_transforms 'integer', 3, BigDecimal(3, 1)
|
37
|
+
it_transforms 'string', '3.3', BigDecimal(3.3, 2)
|
38
38
|
|
39
39
|
# Match standard BigDecimal behavior for floats
|
40
40
|
it 'raises an argument error for floats' do
|
@@ -45,4 +45,4 @@ describe Protip::Transformers::BigDecimalTransformer do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
end
|
48
|
+
end
|
@@ -5,7 +5,7 @@ require 'protip/transformers/default_transformer'
|
|
5
5
|
describe Protip::Transformers::DefaultTransformer do
|
6
6
|
describe '#initialize' do
|
7
7
|
it 'initializes without errors' do
|
8
|
-
|
8
|
+
Protip::Transformers::DefaultTransformer.new
|
9
9
|
end
|
10
10
|
end
|
11
|
-
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AngelList
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -16,42 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.2.10
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
29
|
+
version: 4.2.10
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: activesupport
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
39
|
+
version: 4.2.10
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '6.0'
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - ">="
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
-
|
42
|
-
name: google-protobuf
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
49
|
+
version: 4.2.10
|
50
|
+
- - "<"
|
53
51
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
52
|
+
version: '6.0'
|
55
53
|
- !ruby/object:Gem::Dependency
|
56
54
|
name: money
|
57
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,20 +70,34 @@ dependencies:
|
|
72
70
|
- - "<"
|
73
71
|
- !ruby/object:Gem::Version
|
74
72
|
version: '7.0'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: google-protobuf
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - '='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 3.9.1
|
80
|
+
type: :runtime
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - '='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 3.9.1
|
75
87
|
- !ruby/object:Gem::Dependency
|
76
88
|
name: grpc-tools
|
77
89
|
requirement: !ruby/object:Gem::Requirement
|
78
90
|
requirements:
|
79
|
-
- -
|
91
|
+
- - '='
|
80
92
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
93
|
+
version: 1.23.0
|
82
94
|
type: :development
|
83
95
|
prerelease: false
|
84
96
|
version_requirements: !ruby/object:Gem::Requirement
|
85
97
|
requirements:
|
86
|
-
- -
|
98
|
+
- - '='
|
87
99
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
100
|
+
version: 1.23.0
|
89
101
|
- !ruby/object:Gem::Dependency
|
90
102
|
name: minitest
|
91
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,84 +118,84 @@ dependencies:
|
|
106
118
|
requirements:
|
107
119
|
- - "~>"
|
108
120
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0.
|
121
|
+
version: '0.6'
|
110
122
|
type: :development
|
111
123
|
prerelease: false
|
112
124
|
version_requirements: !ruby/object:Gem::Requirement
|
113
125
|
requirements:
|
114
126
|
- - "~>"
|
115
127
|
- !ruby/object:Gem::Version
|
116
|
-
version: '0.
|
128
|
+
version: '0.6'
|
117
129
|
- !ruby/object:Gem::Dependency
|
118
130
|
name: mocha
|
119
131
|
requirement: !ruby/object:Gem::Requirement
|
120
132
|
requirements:
|
121
133
|
- - "~>"
|
122
134
|
- !ruby/object:Gem::Version
|
123
|
-
version: '1.
|
135
|
+
version: '1.11'
|
124
136
|
type: :development
|
125
137
|
prerelease: false
|
126
138
|
version_requirements: !ruby/object:Gem::Requirement
|
127
139
|
requirements:
|
128
140
|
- - "~>"
|
129
141
|
- !ruby/object:Gem::Version
|
130
|
-
version: '1.
|
142
|
+
version: '1.11'
|
131
143
|
- !ruby/object:Gem::Dependency
|
132
144
|
name: rake
|
133
145
|
requirement: !ruby/object:Gem::Requirement
|
134
146
|
requirements:
|
135
|
-
- - "
|
147
|
+
- - ">="
|
136
148
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
149
|
+
version: 12.3.3
|
138
150
|
type: :development
|
139
151
|
prerelease: false
|
140
152
|
version_requirements: !ruby/object:Gem::Requirement
|
141
153
|
requirements:
|
142
|
-
- - "
|
154
|
+
- - ">="
|
143
155
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
156
|
+
version: 12.3.3
|
145
157
|
- !ruby/object:Gem::Dependency
|
146
158
|
name: simplecov
|
147
159
|
requirement: !ruby/object:Gem::Requirement
|
148
160
|
requirements:
|
149
161
|
- - "~>"
|
150
162
|
- !ruby/object:Gem::Version
|
151
|
-
version: '0.
|
163
|
+
version: '0.18'
|
152
164
|
type: :development
|
153
165
|
prerelease: false
|
154
166
|
version_requirements: !ruby/object:Gem::Requirement
|
155
167
|
requirements:
|
156
168
|
- - "~>"
|
157
169
|
- !ruby/object:Gem::Version
|
158
|
-
version: '0.
|
170
|
+
version: '0.18'
|
159
171
|
- !ruby/object:Gem::Dependency
|
160
|
-
name: pry
|
172
|
+
name: pry-byebug
|
161
173
|
requirement: !ruby/object:Gem::Requirement
|
162
174
|
requirements:
|
163
|
-
- - "
|
175
|
+
- - ">="
|
164
176
|
- !ruby/object:Gem::Version
|
165
|
-
version: '0
|
177
|
+
version: '0'
|
166
178
|
type: :development
|
167
179
|
prerelease: false
|
168
180
|
version_requirements: !ruby/object:Gem::Requirement
|
169
181
|
requirements:
|
170
|
-
- - "
|
182
|
+
- - ">="
|
171
183
|
- !ruby/object:Gem::Version
|
172
|
-
version: '0
|
184
|
+
version: '0'
|
173
185
|
- !ruby/object:Gem::Dependency
|
174
186
|
name: webmock
|
175
187
|
requirement: !ruby/object:Gem::Requirement
|
176
188
|
requirements:
|
177
189
|
- - "~>"
|
178
190
|
- !ruby/object:Gem::Version
|
179
|
-
version: 3
|
191
|
+
version: '3'
|
180
192
|
type: :development
|
181
193
|
prerelease: false
|
182
194
|
version_requirements: !ruby/object:Gem::Requirement
|
183
195
|
requirements:
|
184
196
|
- - "~>"
|
185
197
|
- !ruby/object:Gem::Version
|
186
|
-
version: 3
|
198
|
+
version: '3'
|
187
199
|
description:
|
188
200
|
email:
|
189
201
|
- team@angel.co
|
@@ -243,6 +255,7 @@ files:
|
|
243
255
|
- lib/protip/transformers/enum_transformer.rb
|
244
256
|
- lib/protip/transformers/primitives_transformer.rb
|
245
257
|
- lib/protip/transformers/timestamp_transformer.rb
|
258
|
+
- lib/protip/version.rb
|
246
259
|
- test/functional/protip/decorator_test.rb
|
247
260
|
- test/functional/protip/resource_test.rb
|
248
261
|
- test/test_helper.rb
|
@@ -279,8 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
292
|
- !ruby/object:Gem::Version
|
280
293
|
version: '0'
|
281
294
|
requirements: []
|
282
|
-
|
283
|
-
rubygems_version: 2.5.2.3
|
295
|
+
rubygems_version: 3.0.3
|
284
296
|
signing_key:
|
285
297
|
specification_version: 4
|
286
298
|
summary: Resources backed by protobuf messages
|