patch_ruby 1.22.0 → 1.24.1

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.
@@ -0,0 +1,404 @@
1
+ =begin
2
+ #Patch API V1
3
+
4
+ #The core API used to integrate with Patch's service
5
+
6
+ The version of the OpenAPI document: v1
7
+ Contact: engineering@usepatch.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Patch
17
+ class CreateRailShippingEstimateRequest
18
+ attr_accessor :destination_country_code
19
+
20
+ attr_accessor :destination_locode
21
+
22
+ attr_accessor :destination_postal_code
23
+
24
+ attr_accessor :origin_country_code
25
+
26
+ attr_accessor :origin_locode
27
+
28
+ attr_accessor :origin_postal_code
29
+
30
+ attr_accessor :fuel_type
31
+
32
+ attr_accessor :freight_mass_g
33
+
34
+ attr_accessor :emissions_scope
35
+
36
+ attr_accessor :project_id
37
+
38
+ attr_accessor :create_order
39
+
40
+ class EnumAttributeValidator
41
+ attr_reader :datatype
42
+ attr_reader :allowable_values
43
+
44
+ def initialize(datatype, allowable_values)
45
+ @allowable_values = allowable_values.map do |value|
46
+ case datatype.to_s
47
+ when /Integer/i
48
+ value.to_i
49
+ when /Float/i
50
+ value.to_f
51
+ else
52
+ value
53
+ end
54
+ end
55
+ end
56
+
57
+ def valid?(value)
58
+ !value || allowable_values.include?(value)
59
+ end
60
+ end
61
+
62
+ # Attribute mapping from ruby-style variable name to JSON key.
63
+ def self.attribute_map
64
+ {
65
+ :'destination_country_code' => :'destination_country_code',
66
+ :'destination_locode' => :'destination_locode',
67
+ :'destination_postal_code' => :'destination_postal_code',
68
+ :'origin_country_code' => :'origin_country_code',
69
+ :'origin_locode' => :'origin_locode',
70
+ :'origin_postal_code' => :'origin_postal_code',
71
+ :'fuel_type' => :'fuel_type',
72
+ :'freight_mass_g' => :'freight_mass_g',
73
+ :'emissions_scope' => :'emissions_scope',
74
+ :'project_id' => :'project_id',
75
+ :'create_order' => :'create_order'
76
+ }
77
+ end
78
+
79
+ # Returns all the JSON keys this model knows about
80
+ def self.acceptable_attributes
81
+ attribute_map.values
82
+ end
83
+
84
+ # Attribute type mapping.
85
+ def self.openapi_types
86
+ {
87
+ :'destination_country_code' => :'String',
88
+ :'destination_locode' => :'String',
89
+ :'destination_postal_code' => :'String',
90
+ :'origin_country_code' => :'String',
91
+ :'origin_locode' => :'String',
92
+ :'origin_postal_code' => :'String',
93
+ :'fuel_type' => :'String',
94
+ :'freight_mass_g' => :'Integer',
95
+ :'emissions_scope' => :'String',
96
+ :'project_id' => :'String',
97
+ :'create_order' => :'Boolean'
98
+ }
99
+ end
100
+
101
+ # List of attributes with nullable: true
102
+ def self.openapi_nullable
103
+ Set.new([
104
+ :'destination_country_code',
105
+ :'destination_locode',
106
+ :'destination_postal_code',
107
+ :'origin_country_code',
108
+ :'origin_locode',
109
+ :'origin_postal_code',
110
+ :'fuel_type',
111
+ :'emissions_scope',
112
+ :'project_id',
113
+ :'create_order'
114
+ ])
115
+ end
116
+
117
+
118
+ # Allows models with corresponding API classes to delegate API operations to those API classes
119
+ # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
120
+ # Eg. Order.create_order delegates to OrdersApi.new.create_order
121
+ def self.method_missing(message, *args, &block)
122
+ if Object.const_defined?('Patch::CreateRailShippingEstimateRequestsApi::OPERATIONS') && Patch::CreateRailShippingEstimateRequestsApi::OPERATIONS.include?(message)
123
+ Patch::CreateRailShippingEstimateRequestsApi.new.send(message, *args)
124
+ else
125
+ super
126
+ end
127
+ end
128
+
129
+ # Initializes the object
130
+ # @param [Hash] attributes Model attributes in the form of hash
131
+ def initialize(attributes = {})
132
+ if (!attributes.is_a?(Hash))
133
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Patch::CreateRailShippingEstimateRequest` initialize method"
134
+ end
135
+
136
+ # check to see if the attribute exists and convert string to symbol for hash key
137
+ attributes = attributes.each_with_object({}) { |(k, v), h|
138
+ if (!self.class.attribute_map.key?(k.to_sym))
139
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Patch::CreateRailShippingEstimateRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
140
+ end
141
+ h[k.to_sym] = v
142
+ }
143
+
144
+ if attributes.key?(:'destination_country_code')
145
+ self.destination_country_code = attributes[:'destination_country_code']
146
+ end
147
+
148
+ if attributes.key?(:'destination_locode')
149
+ self.destination_locode = attributes[:'destination_locode']
150
+ end
151
+
152
+ if attributes.key?(:'destination_postal_code')
153
+ self.destination_postal_code = attributes[:'destination_postal_code']
154
+ end
155
+
156
+ if attributes.key?(:'origin_country_code')
157
+ self.origin_country_code = attributes[:'origin_country_code']
158
+ end
159
+
160
+ if attributes.key?(:'origin_locode')
161
+ self.origin_locode = attributes[:'origin_locode']
162
+ end
163
+
164
+ if attributes.key?(:'origin_postal_code')
165
+ self.origin_postal_code = attributes[:'origin_postal_code']
166
+ end
167
+
168
+ if attributes.key?(:'fuel_type')
169
+ self.fuel_type = attributes[:'fuel_type']
170
+ else
171
+ self.fuel_type = 'default'
172
+ end
173
+
174
+ if attributes.key?(:'freight_mass_g')
175
+ self.freight_mass_g = attributes[:'freight_mass_g']
176
+ end
177
+
178
+ if attributes.key?(:'emissions_scope')
179
+ self.emissions_scope = attributes[:'emissions_scope']
180
+ else
181
+ self.emissions_scope = 'wtw'
182
+ end
183
+
184
+ if attributes.key?(:'project_id')
185
+ self.project_id = attributes[:'project_id']
186
+ end
187
+
188
+ if attributes.key?(:'create_order')
189
+ self.create_order = attributes[:'create_order']
190
+ else
191
+ self.create_order = false
192
+ end
193
+ end
194
+
195
+ # Show invalid properties with the reasons. Usually used together with valid?
196
+ # @return Array for valid properties with the reasons
197
+ def list_invalid_properties
198
+ invalid_properties = Array.new
199
+ if !@freight_mass_g.nil? && @freight_mass_g > 2000000000
200
+ invalid_properties.push('invalid value for "freight_mass_g", must be smaller than or equal to 2000000000.')
201
+ end
202
+
203
+ if !@freight_mass_g.nil? && @freight_mass_g < 0
204
+ invalid_properties.push('invalid value for "freight_mass_g", must be greater than or equal to 0.')
205
+ end
206
+
207
+ invalid_properties
208
+ end
209
+
210
+ # Check to see if the all the properties in the model are valid
211
+ # @return true if the model is valid
212
+ def valid?
213
+ fuel_type_validator = EnumAttributeValidator.new('String', ["default", "diesel", "elec"])
214
+ return false unless fuel_type_validator.valid?(@fuel_type)
215
+ return false if !@freight_mass_g.nil? && @freight_mass_g > 2000000000
216
+ return false if !@freight_mass_g.nil? && @freight_mass_g < 0
217
+ emissions_scope_validator = EnumAttributeValidator.new('String', ["wtt", "ttw", "wtw"])
218
+ return false unless emissions_scope_validator.valid?(@emissions_scope)
219
+ true
220
+ end
221
+
222
+ # Custom attribute writer method checking allowed values (enum).
223
+ # @param [Object] fuel_type Object to be assigned
224
+ def fuel_type=(fuel_type)
225
+ validator = EnumAttributeValidator.new('String', ["default", "diesel", "elec"])
226
+ unless validator.valid?(fuel_type)
227
+ fail ArgumentError, "invalid value for \"fuel_type\", must be one of #{validator.allowable_values}."
228
+ end
229
+ @fuel_type = fuel_type
230
+ end
231
+
232
+ # Custom attribute writer method with validation
233
+ # @param [Object] freight_mass_g Value to be assigned
234
+ def freight_mass_g=(freight_mass_g)
235
+ if !freight_mass_g.nil? && freight_mass_g > 2000000000
236
+ fail ArgumentError, 'invalid value for "freight_mass_g", must be smaller than or equal to 2000000000.'
237
+ end
238
+
239
+ if !freight_mass_g.nil? && freight_mass_g < 0
240
+ fail ArgumentError, 'invalid value for "freight_mass_g", must be greater than or equal to 0.'
241
+ end
242
+
243
+ @freight_mass_g = freight_mass_g
244
+ end
245
+
246
+ # Custom attribute writer method checking allowed values (enum).
247
+ # @param [Object] emissions_scope Object to be assigned
248
+ def emissions_scope=(emissions_scope)
249
+ validator = EnumAttributeValidator.new('String', ["wtt", "ttw", "wtw"])
250
+ unless validator.valid?(emissions_scope)
251
+ fail ArgumentError, "invalid value for \"emissions_scope\", must be one of #{validator.allowable_values}."
252
+ end
253
+ @emissions_scope = emissions_scope
254
+ end
255
+
256
+ # Checks equality by comparing each attribute.
257
+ # @param [Object] Object to be compared
258
+ def ==(o)
259
+ return true if self.equal?(o)
260
+ self.class == o.class &&
261
+ destination_country_code == o.destination_country_code &&
262
+ destination_locode == o.destination_locode &&
263
+ destination_postal_code == o.destination_postal_code &&
264
+ origin_country_code == o.origin_country_code &&
265
+ origin_locode == o.origin_locode &&
266
+ origin_postal_code == o.origin_postal_code &&
267
+ fuel_type == o.fuel_type &&
268
+ freight_mass_g == o.freight_mass_g &&
269
+ emissions_scope == o.emissions_scope &&
270
+ project_id == o.project_id &&
271
+ create_order == o.create_order
272
+ end
273
+
274
+ # @see the `==` method
275
+ # @param [Object] Object to be compared
276
+ def eql?(o)
277
+ self == o
278
+ end
279
+
280
+ # Calculates hash code according to all attributes.
281
+ # @return [Integer] Hash code
282
+ def hash
283
+ [destination_country_code, destination_locode, destination_postal_code, origin_country_code, origin_locode, origin_postal_code, fuel_type, freight_mass_g, emissions_scope, project_id, create_order].hash
284
+ end
285
+
286
+ # Builds the object from hash
287
+ # @param [Hash] attributes Model attributes in the form of hash
288
+ # @return [Object] Returns the model itself
289
+ def self.build_from_hash(attributes)
290
+ new.build_from_hash(attributes)
291
+ end
292
+
293
+ # Builds the object from hash
294
+ # @param [Hash] attributes Model attributes in the form of hash
295
+ # @return [Object] Returns the model itself
296
+ def build_from_hash(attributes)
297
+ return nil unless attributes.is_a?(Hash)
298
+ self.class.openapi_types.each_pair do |key, type|
299
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
300
+ self.send("#{key}=", nil)
301
+ elsif type =~ /\AArray<(.*)>/i
302
+ # check to ensure the input is an array given that the attribute
303
+ # is documented as an array but the input is not
304
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
305
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
306
+ end
307
+ elsif !attributes[self.class.attribute_map[key]].nil?
308
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
309
+ end
310
+ end
311
+
312
+ self
313
+ end
314
+
315
+ # Deserializes the data based on type
316
+ # @param string type Data type
317
+ # @param string value Value to be deserialized
318
+ # @return [Object] Deserialized data
319
+ def _deserialize(type, value)
320
+ case type.to_sym
321
+ when :Time
322
+ Time.parse(value)
323
+ when :Date
324
+ Date.parse(value)
325
+ when :String
326
+ value.to_s
327
+ when :Integer
328
+ value.to_i
329
+ when :Float
330
+ value.to_f
331
+ when :Boolean
332
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
333
+ true
334
+ else
335
+ false
336
+ end
337
+ when :Object
338
+ # generic object (usually a Hash), return directly
339
+ value
340
+ when /\AArray<(?<inner_type>.+)>\z/
341
+ inner_type = Regexp.last_match[:inner_type]
342
+ value.map { |v| _deserialize(inner_type, v) }
343
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
344
+ k_type = Regexp.last_match[:k_type]
345
+ v_type = Regexp.last_match[:v_type]
346
+ {}.tap do |hash|
347
+ value.each do |k, v|
348
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
349
+ end
350
+ end
351
+ else # model
352
+ # models (e.g. Pet) or oneOf
353
+ klass = Patch.const_get(type)
354
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
355
+ end
356
+ end
357
+
358
+ # Returns the string representation of the object
359
+ # @return [String] String presentation of the object
360
+ def to_s
361
+ to_hash.to_s
362
+ end
363
+
364
+ # to_body is an alias to to_hash (backward compatibility)
365
+ # @return [Hash] Returns the object in the form of hash
366
+ def to_body
367
+ to_hash
368
+ end
369
+
370
+ # Returns the object in the form of hash
371
+ # @return [Hash] Returns the object in the form of hash
372
+ def to_hash
373
+ hash = {}
374
+ self.class.attribute_map.each_pair do |attr, param|
375
+ value = self.send(attr)
376
+ if value.nil?
377
+ is_nullable = self.class.openapi_nullable.include?(attr)
378
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
379
+ end
380
+
381
+ hash[param] = _to_hash(value)
382
+ end
383
+ hash
384
+ end
385
+
386
+ # Outputs non-array value in the form of hash
387
+ # For object, use to_hash. Otherwise, just return the value
388
+ # @param [Object] value Any valid value
389
+ # @return [Hash] Returns the value in the form of hash
390
+ def _to_hash(value)
391
+ if value.is_a?(Array)
392
+ value.compact.map { |v| _to_hash(v) }
393
+ elsif value.is_a?(Hash)
394
+ {}.tap do |hash|
395
+ value.each { |k, v| hash[k] = _to_hash(v) }
396
+ end
397
+ elsif value.respond_to? :to_hash
398
+ value.to_hash
399
+ else
400
+ value
401
+ end
402
+ end
403
+ end
404
+ end