protip 0.33.0 → 0.35.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
- SHA1:
3
- metadata.gz: b00d08f38111e8b0182e50c6f4e452787d0f9168
4
- data.tar.gz: 963dc1bde387ed8308925a2185a4f9b5d5494631
2
+ SHA256:
3
+ metadata.gz: e4f44a0af07ee5f3839ebb17387a687388f9829629017b84d73797d2f2e98bbe
4
+ data.tar.gz: 5495fdb816a03f86b227f67a5b5a2c9f87849bc702c8de9382d887b7eafbbb71
5
5
  SHA512:
6
- metadata.gz: 736fe9fc7445f0fa83b608a142cd74001ef30b96304be7297f1653016fa795668cfc7685f0f4e2ca01047ab14fc033b41425e2f5e2ea0c5db8e9454cf850be31
7
- data.tar.gz: 0ad6ab1ff91ff83179093f5dbdc71a776632c0147687e88819894525a90aaea5cfcf08637663d3927aa46681b89c62f3ae06545b19a96eda5b77da712dc699b8
6
+ metadata.gz: 2ced23785cbd438817f3c07a2cb8e68d2eebcf7deeb126235ca12bbcbcc25432a1e6373985650d8814d27a50ec717b2c7fd403aca77f510089d8be6947ff3748
7
+ data.tar.gz: 87a05ad4ec2e849cdc84ab197e613a04fdcdae609393b4fde5f7d121c1b503670749e8233f65f3bc1a40bc75fb3d31f2652c31f22e88da03af5ab5c877b061aa
data/lib/protip.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'protip/version'
1
2
  require 'protip/client'
2
3
  require 'protip/resource'
3
4
 
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
- retries = 0
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
@@ -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
- add_message "protip.messages.ActiveSupport.TimeWithZone" do
8
- optional :utc_timestamp, :int64, 1
9
- optional :time_zone_name, :string, 2
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
- add_message "protip.messages.Array" do
8
- repeated :messages, :bytes, 1
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
- add_message "protip.messages.BigDecimalValue" do
8
- optional :numerator, :int64, 1
9
- optional :denominator, :uint64, 2
10
- optional :precision, :uint32, 3
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
- add_message "protip.messages.Currency" do
8
- optional :currency_code, :enum, 1, "protip.messages.Currency.CurrencyCode"
9
- end
10
- add_enum "protip.messages.Currency.CurrencyCode" do
11
- value :AED, 0
12
- value :AFN, 1
13
- value :ALL, 2
14
- value :AMD, 3
15
- value :ANG, 4
16
- value :AOA, 5
17
- value :ARS, 6
18
- value :AUD, 7
19
- value :AWG, 8
20
- value :AZN, 9
21
- value :BAM, 10
22
- value :BBD, 11
23
- value :BDT, 12
24
- value :BGN, 13
25
- value :BHD, 14
26
- value :BIF, 15
27
- value :BMD, 16
28
- value :BND, 17
29
- value :BOB, 18
30
- value :BRL, 19
31
- value :BSD, 20
32
- value :BTN, 21
33
- value :BWP, 22
34
- value :BYR, 23
35
- value :BZD, 24
36
- value :CAD, 25
37
- value :CDF, 26
38
- value :CHF, 27
39
- value :CLF, 28
40
- value :CLP, 29
41
- value :CNY, 30
42
- value :COP, 31
43
- value :CRC, 32
44
- value :CUC, 33
45
- value :CUP, 34
46
- value :CVE, 35
47
- value :CZK, 36
48
- value :DJF, 37
49
- value :DKK, 38
50
- value :DOP, 39
51
- value :DZD, 40
52
- value :EGP, 41
53
- value :ERN, 42
54
- value :ETB, 43
55
- value :EUR, 44
56
- value :FJD, 45
57
- value :FKP, 46
58
- value :GBP, 47
59
- value :GEL, 48
60
- value :GHS, 49
61
- value :GIP, 50
62
- value :GMD, 51
63
- value :GNF, 52
64
- value :GTQ, 53
65
- value :GYD, 54
66
- value :HKD, 55
67
- value :HNL, 56
68
- value :HRK, 57
69
- value :HTG, 58
70
- value :HUF, 59
71
- value :IDR, 60
72
- value :ILS, 61
73
- value :INR, 62
74
- value :IQD, 63
75
- value :IRR, 64
76
- value :ISK, 65
77
- value :JMD, 66
78
- value :JOD, 67
79
- value :JPY, 68
80
- value :KES, 69
81
- value :KGS, 70
82
- value :KHR, 71
83
- value :KMF, 72
84
- value :KPW, 73
85
- value :KRW, 74
86
- value :KWD, 75
87
- value :KYD, 76
88
- value :KZT, 77
89
- value :LAK, 78
90
- value :LBP, 79
91
- value :LKR, 80
92
- value :LRD, 81
93
- value :LSL, 82
94
- value :LTL, 83
95
- value :LVL, 84
96
- value :LYD, 85
97
- value :MAD, 86
98
- value :MDL, 87
99
- value :MGA, 88
100
- value :MKD, 89
101
- value :MMK, 90
102
- value :MNT, 91
103
- value :MOP, 92
104
- value :MRO, 93
105
- value :MUR, 94
106
- value :MVR, 95
107
- value :MWK, 96
108
- value :MXN, 97
109
- value :MYR, 98
110
- value :MZN, 99
111
- value :NAD, 100
112
- value :NGN, 101
113
- value :NIO, 102
114
- value :NOK, 103
115
- value :NPR, 104
116
- value :NZD, 105
117
- value :OMR, 106
118
- value :PAB, 107
119
- value :PEN, 108
120
- value :PGK, 109
121
- value :PHP, 110
122
- value :PKR, 111
123
- value :PLN, 112
124
- value :PYG, 113
125
- value :QAR, 114
126
- value :RON, 115
127
- value :RSD, 116
128
- value :RUB, 117
129
- value :RWF, 118
130
- value :SAR, 119
131
- value :SBD, 120
132
- value :SCR, 121
133
- value :SDG, 122
134
- value :SEK, 123
135
- value :SGD, 124
136
- value :SHP, 125
137
- value :SKK, 126
138
- value :SLL, 127
139
- value :SOS, 128
140
- value :SRD, 129
141
- value :SSP, 130
142
- value :STD, 131
143
- value :SVC, 132
144
- value :SYP, 133
145
- value :SZL, 134
146
- value :THB, 135
147
- value :TJS, 136
148
- value :TMT, 137
149
- value :TND, 138
150
- value :TOP, 139
151
- value :TRY, 140
152
- value :TTD, 141
153
- value :TWD, 142
154
- value :TZS, 143
155
- value :UAH, 144
156
- value :UGX, 145
157
- value :USD, 146
158
- value :UYU, 147
159
- value :UZS, 148
160
- value :VEF, 149
161
- value :VND, 150
162
- value :VUV, 151
163
- value :WST, 152
164
- value :XAF, 153
165
- value :XAG, 154
166
- value :XAU, 155
167
- value :XCD, 156
168
- value :XDR, 157
169
- value :XOF, 158
170
- value :XPF, 159
171
- value :YER, 160
172
- value :ZAR, 161
173
- value :ZMK, 162
174
- value :ZMW, 163
175
- value :BTC, 164
176
- value :JEP, 165
177
- value :EEK, 166
178
- value :MTL, 167
179
- value :TMM, 168
180
- value :ZWD, 169
181
- value :ZWL, 170
182
- value :ZWN, 171
183
- value :ZWR, 172
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
- add_message "protip.messages.Errors" do
8
- repeated :messages, :string, 1
9
- repeated :field_errors, :message, 2, "protip.messages.FieldError"
10
- end
11
- add_message "protip.messages.FieldError" do
12
- optional :field, :string, 1
13
- optional :message, :string, 2
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
- add_message "protip.messages.Money" do
9
- optional :amount_cents, :int64, 1
10
- optional :currency, :message, 2, "protip.messages.Currency"
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
- add_message "protip.messages.Range" do
8
- optional :begin, :int64, 1
9
- optional :end, :int64, 2
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
- add_message "protip.messages.RepeatedDouble" do
9
- repeated :values, :double, 1
10
- end
11
- add_message "protip.messages.RepeatedFloat" do
12
- repeated :values, :float, 1
13
- end
14
- add_message "protip.messages.RepeatedInt64" do
15
- repeated :values, :int64, 1
16
- end
17
- add_message "protip.messages.RepeatedUInt64" do
18
- repeated :values, :uint64, 1
19
- end
20
- add_message "protip.messages.RepeatedInt32" do
21
- repeated :values, :int32, 1
22
- end
23
- add_message "protip.messages.RepeatedUInt32" do
24
- repeated :values, :uint32, 1
25
- end
26
- add_message "protip.messages.RepeatedBool" do
27
- repeated :values, :bool, 1
28
- end
29
- add_message "protip.messages.RepeatedString" do
30
- repeated :values, :string, 1
31
- end
32
- add_message "protip.messages.RepeatedBytes" do
33
- repeated :values, :bytes, 1
34
- end
35
- add_message "protip.messages.RepeatedEnum" do
36
- repeated :values, :int32, 1
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
- add_message "protip.messages.EnumTest" do
10
- optional :enum, :message, 1, "protip.messages.EnumValue"
11
- optional :repeated_enums, :message, 2, "protip.messages.RepeatedEnum"
12
- end
13
- add_enum "protip.messages.EnumTest.Enum" do
14
- value :ZERO, 0
15
- value :ONE, 1
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
- add_message "protip.messages.Date" do
8
- optional :year, :int64, 1
9
- optional :month, :uint32, 2
10
- optional :day, :uint32, 3
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
- add_message "protip.messages.EnumValue" do
9
- optional :value, :int32, 1
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
 
@@ -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
 
@@ -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 || ::Protip.default_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.new(object)
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,
@@ -0,0 +1,3 @@
1
+ module Protip
2
+ VERSION = '0.35.0'
3
+ end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'minitest/autorun'
2
- require 'mocha/mini_test'
2
+ require 'mocha/minitest'
3
3
  require 'webmock/minitest'
4
4
  require 'minitest/stub/const'
5
-
6
5
  require 'minitest/pride'
6
+ require 'pry-byebug'
7
+ require 'protip'
@@ -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 /requires an association to be defined/, error.message
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 /requires an association to be defined/, error.message
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 /Duplicate association/, error.message
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 /bad_option/, error.message
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.new(104, 1)
31
- it_transforms 'fractions', BigDecimal.new(100.5, 5)
32
- it_transforms 'rational numbers', BigDecimal.new(Rational(2, 3), 3)
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.new(3, 1)
37
- it_transforms 'string', '3.3', BigDecimal.new(3.3, 2)
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
- transformer = Protip::Transformers::DefaultTransformer.new
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.33.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: 2019-09-11 00:00:00.000000000 Z
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: 5.2.0
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: 5.2.0
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: 5.2.0
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: 5.2.0
41
- - !ruby/object:Gem::Dependency
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: '3.0'
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: '1.0'
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: '1.0'
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.5'
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.5'
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.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.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: '10.0'
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: '10.0'
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.10'
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.10'
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.10'
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.10'
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.3.0
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.3.0
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
- rubyforge_project:
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