snaptrade 2.0.31 → 2.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +31 -29
  3. data/README.md +4 -2
  4. data/lib/snaptrade/api/account_information_api.rb +6 -2
  5. data/lib/snaptrade/models/account.rb +2 -1
  6. data/lib/snaptrade/models/account_holdings_account.rb +2 -2
  7. data/lib/snaptrade/models/account_order_record.rb +25 -19
  8. data/lib/snaptrade/models/{brokerage_symbol_option_symbol.rb → account_order_record_option_symbol.rb} +15 -26
  9. data/lib/snaptrade/models/{brokerage_symbol_symbol.rb → account_order_record_universal_symbol.rb} +12 -5
  10. data/lib/snaptrade/models/brokerage_authorization_type_read_only.rb +1 -1
  11. data/lib/snaptrade/models/exchange.rb +9 -1
  12. data/lib/snaptrade/models/figi_instrument.rb +3 -1
  13. data/lib/snaptrade/models/monthly_dividends.rb +1 -1
  14. data/lib/snaptrade/models/net_contributions.rb +1 -1
  15. data/lib/snaptrade/models/option_brokerage_symbol.rb +3 -1
  16. data/lib/snaptrade/models/options_position.rb +1 -1
  17. data/lib/snaptrade/models/options_position_currency.rb +1 -0
  18. data/lib/snaptrade/models/options_symbol.rb +12 -24
  19. data/lib/snaptrade/models/order_type_strict.rb +2 -2
  20. data/lib/snaptrade/models/past_value.rb +1 -1
  21. data/lib/snaptrade/models/position_symbol.rb +6 -1
  22. data/lib/snaptrade/models/security_type.rb +5 -1
  23. data/lib/snaptrade/models/snap_trade_holdings_account_account_id.rb +1 -1
  24. data/lib/snaptrade/models/strategy_order_record.rb +1 -1
  25. data/lib/snaptrade/models/sub_period_return_rate.rb +2 -2
  26. data/lib/snaptrade/models/symbol_figi_instrument.rb +2 -0
  27. data/lib/snaptrade/models/type.rb +3 -3
  28. data/lib/snaptrade/models/underlying_symbol.rb +20 -5
  29. data/lib/snaptrade/models/{model_portfolio.rb → underlying_symbol_exchange.rb} +73 -12
  30. data/lib/snaptrade/models/{brokerage_symbol.rb → underlying_symbol_type.rb} +28 -38
  31. data/lib/snaptrade/models/universal_symbol.rb +9 -3
  32. data/lib/snaptrade/models/{portfolio_group.rb → universal_symbol_currency.rb} +24 -4
  33. data/lib/snaptrade/models/{model_asset_class.rb → universal_symbol_exchange.rb} +78 -7
  34. data/lib/snaptrade/version.rb +1 -1
  35. data/lib/snaptrade.rb +6 -38
  36. data/spec/api/account_information_api_spec.rb +1 -1
  37. data/spec/models/{strategy_impact_legs_inner_spec.rb → account_order_record_option_symbol_spec.rb} +13 -13
  38. data/spec/models/{brokerage_symbol_symbol_spec.rb → account_order_record_universal_symbol_spec.rb} +6 -6
  39. data/spec/models/options_symbol_spec.rb +0 -12
  40. data/spec/models/{brokerage_symbol_option_symbol_spec.rb → underlying_symbol_exchange_spec.rb} +14 -14
  41. data/spec/models/underlying_symbol_spec.rb +6 -0
  42. data/spec/models/{cash_restriction_spec.rb → underlying_symbol_type_spec.rb} +9 -15
  43. data/spec/models/{model_portfolio_spec.rb → universal_symbol_currency_spec.rb} +8 -8
  44. data/spec/models/{trade_spec.rb → universal_symbol_exchange_spec.rb} +13 -13
  45. metadata +117 -213
  46. data/lib/snaptrade/models/brokerage_authorization_type.rb +0 -216
  47. data/lib/snaptrade/models/brokerage_authorization_type_read_only_type.rb +0 -37
  48. data/lib/snaptrade/models/brokerage_authorization_type_type.rb +0 -37
  49. data/lib/snaptrade/models/calculated_trade.rb +0 -228
  50. data/lib/snaptrade/models/cash_restriction.rb +0 -253
  51. data/lib/snaptrade/models/excluded_asset.rb +0 -217
  52. data/lib/snaptrade/models/jwt.rb +0 -217
  53. data/lib/snaptrade/models/model_asset_class_details.rb +0 -227
  54. data/lib/snaptrade/models/model_asset_class_target.rb +0 -216
  55. data/lib/snaptrade/models/model_portfolio_asset_class.rb +0 -249
  56. data/lib/snaptrade/models/model_portfolio_details.rb +0 -238
  57. data/lib/snaptrade/models/model_portfolio_security.rb +0 -249
  58. data/lib/snaptrade/models/model_type.rb +0 -38
  59. data/lib/snaptrade/models/portfolio_group_info.rb +0 -325
  60. data/lib/snaptrade/models/portfolio_group_position.rb +0 -237
  61. data/lib/snaptrade/models/portfolio_group_settings.rb +0 -276
  62. data/lib/snaptrade/models/redirect_tokenand_pin.rb +0 -226
  63. data/lib/snaptrade/models/snap_trade_api_disclaimer_accept_status.rb +0 -226
  64. data/lib/snaptrade/models/state.rb +0 -40
  65. data/lib/snaptrade/models/strategy_impact.rb +0 -309
  66. data/lib/snaptrade/models/strategy_impact_legs_inner.rb +0 -270
  67. data/lib/snaptrade/models/strategy_order_place.rb +0 -228
  68. data/lib/snaptrade/models/strategy_order_place_orders_inner.rb +0 -596
  69. data/lib/snaptrade/models/strategy_order_place_orders_inner_legs_inner.rb +0 -270
  70. data/lib/snaptrade/models/target_asset.rb +0 -289
  71. data/lib/snaptrade/models/trade.rb +0 -280
  72. data/lib/snaptrade/models/trade_action.rb +0 -37
  73. data/lib/snaptrade/models/trade_execution_status.rb +0 -297
  74. data/lib/snaptrade/models/trade_execution_status_action.rb +0 -37
  75. data/lib/snaptrade/models/trade_impact.rb +0 -256
  76. data/lib/snaptrade/models/user_error_log.rb +0 -262
  77. data/lib/snaptrade/models/user_settings.rb +0 -298
  78. data/spec/models/brokerage_authorization_type_read_only_type_spec.rb +0 -23
  79. data/spec/models/brokerage_authorization_type_spec.rb +0 -29
  80. data/spec/models/brokerage_authorization_type_type_spec.rb +0 -23
  81. data/spec/models/brokerage_symbol_spec.rb +0 -59
  82. data/spec/models/calculated_trade_spec.rb +0 -35
  83. data/spec/models/excluded_asset_spec.rb +0 -29
  84. data/spec/models/jwt_spec.rb +0 -29
  85. data/spec/models/model_asset_class_details_spec.rb +0 -35
  86. data/spec/models/model_asset_class_spec.rb +0 -35
  87. data/spec/models/model_asset_class_target_spec.rb +0 -29
  88. data/spec/models/model_portfolio_asset_class_spec.rb +0 -35
  89. data/spec/models/model_portfolio_details_spec.rb +0 -41
  90. data/spec/models/model_portfolio_security_spec.rb +0 -35
  91. data/spec/models/model_type_spec.rb +0 -23
  92. data/spec/models/portfolio_group_info_spec.rb +0 -89
  93. data/spec/models/portfolio_group_position_spec.rb +0 -41
  94. data/spec/models/portfolio_group_settings_spec.rb +0 -53
  95. data/spec/models/portfolio_group_spec.rb +0 -35
  96. data/spec/models/redirect_tokenand_pin_spec.rb +0 -35
  97. data/spec/models/snap_trade_api_disclaimer_accept_status_spec.rb +0 -35
  98. data/spec/models/state_spec.rb +0 -23
  99. data/spec/models/strategy_impact_spec.rb +0 -89
  100. data/spec/models/strategy_order_place_orders_inner_legs_inner_spec.rb +0 -65
  101. data/spec/models/strategy_order_place_orders_inner_spec.rb +0 -281
  102. data/spec/models/strategy_order_place_spec.rb +0 -35
  103. data/spec/models/target_asset_spec.rb +0 -59
  104. data/spec/models/trade_action_spec.rb +0 -23
  105. data/spec/models/trade_execution_status_action_spec.rb +0 -23
  106. data/spec/models/trade_execution_status_spec.rb +0 -77
  107. data/spec/models/trade_impact_spec.rb +0 -53
  108. data/spec/models/user_error_log_spec.rb +0 -59
  109. data/spec/models/user_settings_spec.rb +0 -83
@@ -1,226 +0,0 @@
1
- =begin
2
- #SnapTrade
3
-
4
- #Connect brokerage accounts to your app for live positions and trading
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: api@snaptrade.com
8
- =end
9
-
10
- require 'date'
11
- require 'time'
12
-
13
- module SnapTrade
14
- # Status of user acceptance of SnapTrade API disclaimer
15
- class SnapTradeAPIDisclaimerAcceptStatus
16
- attr_accessor :accepted
17
-
18
- attr_accessor :timestamp
19
-
20
- # Attribute mapping from ruby-style variable name to JSON key.
21
- def self.attribute_map
22
- {
23
- :'accepted' => :'accepted',
24
- :'timestamp' => :'timestamp'
25
- }
26
- end
27
-
28
- # Returns all the JSON keys this model knows about
29
- def self.acceptable_attributes
30
- attribute_map.values
31
- end
32
-
33
- # Attribute type mapping.
34
- def self.openapi_types
35
- {
36
- :'accepted' => :'Boolean',
37
- :'timestamp' => :'String'
38
- }
39
- end
40
-
41
- # List of attributes with nullable: true
42
- def self.openapi_nullable
43
- Set.new([
44
- ])
45
- end
46
-
47
- # Initializes the object
48
- # @param [Hash] attributes Model attributes in the form of hash
49
- def initialize(attributes = {})
50
- if (!attributes.is_a?(Hash))
51
- fail ArgumentError, "The input argument (attributes) must be a hash in `SnapTrade::SnapTradeAPIDisclaimerAcceptStatus` initialize method"
52
- end
53
-
54
- # check to see if the attribute exists and convert string to symbol for hash key
55
- attributes = attributes.each_with_object({}) { |(k, v), h|
56
- if (!self.class.attribute_map.key?(k.to_sym))
57
- fail ArgumentError, "`#{k}` is not a valid attribute in `SnapTrade::SnapTradeAPIDisclaimerAcceptStatus`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
58
- end
59
- h[k.to_sym] = v
60
- }
61
-
62
- if attributes.key?(:'accepted')
63
- self.accepted = attributes[:'accepted']
64
- end
65
-
66
- if attributes.key?(:'timestamp')
67
- self.timestamp = attributes[:'timestamp']
68
- end
69
- end
70
-
71
- # Show invalid properties with the reasons. Usually used together with valid?
72
- # @return Array for valid properties with the reasons
73
- def list_invalid_properties
74
- invalid_properties = Array.new
75
- invalid_properties
76
- end
77
-
78
- # Check to see if the all the properties in the model are valid
79
- # @return true if the model is valid
80
- def valid?
81
- true
82
- end
83
-
84
- # Checks equality by comparing each attribute.
85
- # @param [Object] Object to be compared
86
- def ==(o)
87
- return true if self.equal?(o)
88
- self.class == o.class &&
89
- accepted == o.accepted &&
90
- timestamp == o.timestamp
91
- end
92
-
93
- # @see the `==` method
94
- # @param [Object] Object to be compared
95
- def eql?(o)
96
- self == o
97
- end
98
-
99
- # Calculates hash code according to all attributes.
100
- # @return [Integer] Hash code
101
- def hash
102
- [accepted, timestamp].hash
103
- end
104
-
105
- # Builds the object from hash
106
- # @param [Hash] attributes Model attributes in the form of hash
107
- # @return [Object] Returns the model itself
108
- def self.build_from_hash(attributes)
109
- new.build_from_hash(attributes)
110
- end
111
-
112
- # Builds the object from hash
113
- # @param [Hash] attributes Model attributes in the form of hash
114
- # @return [Object] Returns the model itself
115
- def build_from_hash(attributes)
116
- return nil unless attributes.is_a?(Hash)
117
- attributes = attributes.transform_keys(&:to_sym)
118
- self.class.openapi_types.each_pair do |key, type|
119
- if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
120
- self.send("#{key}=", nil)
121
- elsif type =~ /\AArray<(.*)>/i
122
- # check to ensure the input is an array given that the attribute
123
- # is documented as an array but the input is not
124
- if attributes[self.class.attribute_map[key]].is_a?(Array)
125
- self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
126
- end
127
- elsif !attributes[self.class.attribute_map[key]].nil?
128
- self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
129
- end
130
- end
131
-
132
- self
133
- end
134
-
135
- # Deserializes the data based on type
136
- # @param string type Data type
137
- # @param string value Value to be deserialized
138
- # @return [Object] Deserialized data
139
- def _deserialize(type, value)
140
- case type.to_sym
141
- when :Time
142
- Time.parse(value)
143
- when :Date
144
- Date.parse(value)
145
- when :String
146
- value.to_s
147
- when :Integer
148
- value.to_i
149
- when :Float
150
- value.to_f
151
- when :Boolean
152
- if value.to_s =~ /\A(true|t|yes|y|1)\z/i
153
- true
154
- else
155
- false
156
- end
157
- when :Object
158
- # generic object (usually a Hash), return directly
159
- value
160
- when /\AArray<(?<inner_type>.+)>\z/
161
- inner_type = Regexp.last_match[:inner_type]
162
- value.map { |v| _deserialize(inner_type, v) }
163
- when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
164
- k_type = Regexp.last_match[:k_type]
165
- v_type = Regexp.last_match[:v_type]
166
- {}.tap do |hash|
167
- value.each do |k, v|
168
- hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
169
- end
170
- end
171
- else # model
172
- # models (e.g. Pet) or oneOf
173
- klass = SnapTrade.const_get(type)
174
- klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
175
- end
176
- end
177
-
178
- # Returns the string representation of the object
179
- # @return [String] String presentation of the object
180
- def to_s
181
- to_hash.to_s
182
- end
183
-
184
- # to_body is an alias to to_hash (backward compatibility)
185
- # @return [Hash] Returns the object in the form of hash
186
- def to_body
187
- to_hash
188
- end
189
-
190
- # Returns the object in the form of hash
191
- # @return [Hash] Returns the object in the form of hash
192
- def to_hash
193
- hash = {}
194
- self.class.attribute_map.each_pair do |attr, param|
195
- value = self.send(attr)
196
- if value.nil?
197
- is_nullable = self.class.openapi_nullable.include?(attr)
198
- next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
199
- end
200
-
201
- hash[param] = _to_hash(value)
202
- end
203
- hash
204
- end
205
-
206
- # Outputs non-array value in the form of hash
207
- # For object, use to_hash. Otherwise, just return the value
208
- # @param [Object] value Any valid value
209
- # @return [Hash] Returns the value in the form of hash
210
- def _to_hash(value)
211
- if value.is_a?(Array)
212
- value.compact.map { |v| _to_hash(v) }
213
- elsif value.is_a?(Hash)
214
- {}.tap do |hash|
215
- value.each { |k, v| hash[k] = _to_hash(v) }
216
- end
217
- elsif value.respond_to? :to_hash
218
- value.to_hash
219
- else
220
- value
221
- end
222
- end
223
-
224
- end
225
-
226
- end
@@ -1,40 +0,0 @@
1
- =begin
2
- #SnapTrade
3
-
4
- #Connect brokerage accounts to your app for live positions and trading
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: api@snaptrade.com
8
- =end
9
-
10
- require 'date'
11
- require 'time'
12
-
13
- module SnapTrade
14
- class State
15
- EXECUTED = "Executed".freeze
16
- CANCELED = "Canceled".freeze
17
- REJECTED = "Rejected".freeze
18
- FAILED = "Failed".freeze
19
- NOT_EXECUTED = "Not Executed".freeze
20
-
21
- def self.all_vars
22
- @all_vars ||= [EXECUTED, CANCELED, REJECTED, FAILED, NOT_EXECUTED].freeze
23
- end
24
-
25
- # Builds the enum from string
26
- # @param [String] The enum value in the form of the string
27
- # @return [String] The enum value
28
- def self.build_from_hash(value)
29
- new.build_from_hash(value)
30
- end
31
-
32
- # Builds the enum from string
33
- # @param [String] The enum value in the form of the string
34
- # @return [String] The enum value
35
- def build_from_hash(value)
36
- return value if State.all_vars.include?(value)
37
- raise "Invalid ENUM value #{value} for class #State"
38
- end
39
- end
40
- end
@@ -1,309 +0,0 @@
1
- =begin
2
- #SnapTrade
3
-
4
- #Connect brokerage accounts to your app for live positions and trading
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: api@snaptrade.com
8
- =end
9
-
10
- require 'date'
11
- require 'time'
12
-
13
- module SnapTrade
14
- # The strategy impact
15
- class StrategyImpact
16
- attr_accessor :estimated_commissions
17
-
18
- attr_accessor :buying_power_effect
19
-
20
- attr_accessor :buying_power_result
21
-
22
- attr_accessor :maint_excess_effect
23
-
24
- attr_accessor :maint_excess_result
25
-
26
- attr_accessor :trade_value_calculation
27
-
28
- attr_accessor :legs
29
-
30
- attr_accessor :side
31
-
32
- attr_accessor :effect
33
-
34
- attr_accessor :price
35
-
36
- attr_accessor :strategy
37
-
38
- # Attribute mapping from ruby-style variable name to JSON key.
39
- def self.attribute_map
40
- {
41
- :'estimated_commissions' => :'estimatedCommissions',
42
- :'buying_power_effect' => :'buyingPowerEffect',
43
- :'buying_power_result' => :'buyingPowerResult',
44
- :'maint_excess_effect' => :'maintExcessEffect',
45
- :'maint_excess_result' => :'maintExcessResult',
46
- :'trade_value_calculation' => :'tradeValueCalculation',
47
- :'legs' => :'legs',
48
- :'side' => :'side',
49
- :'effect' => :'effect',
50
- :'price' => :'price',
51
- :'strategy' => :'strategy'
52
- }
53
- end
54
-
55
- # Returns all the JSON keys this model knows about
56
- def self.acceptable_attributes
57
- attribute_map.values
58
- end
59
-
60
- # Attribute type mapping.
61
- def self.openapi_types
62
- {
63
- :'estimated_commissions' => :'Float',
64
- :'buying_power_effect' => :'Float',
65
- :'buying_power_result' => :'Float',
66
- :'maint_excess_effect' => :'Float',
67
- :'maint_excess_result' => :'Float',
68
- :'trade_value_calculation' => :'String',
69
- :'legs' => :'Array<StrategyImpactLegsInner>',
70
- :'side' => :'String',
71
- :'effect' => :'String',
72
- :'price' => :'Float',
73
- :'strategy' => :'String'
74
- }
75
- end
76
-
77
- # List of attributes with nullable: true
78
- def self.openapi_nullable
79
- Set.new([
80
- ])
81
- end
82
-
83
- # Initializes the object
84
- # @param [Hash] attributes Model attributes in the form of hash
85
- def initialize(attributes = {})
86
- if (!attributes.is_a?(Hash))
87
- fail ArgumentError, "The input argument (attributes) must be a hash in `SnapTrade::StrategyImpact` initialize method"
88
- end
89
-
90
- # check to see if the attribute exists and convert string to symbol for hash key
91
- attributes = attributes.each_with_object({}) { |(k, v), h|
92
- if (!self.class.attribute_map.key?(k.to_sym))
93
- fail ArgumentError, "`#{k}` is not a valid attribute in `SnapTrade::StrategyImpact`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
94
- end
95
- h[k.to_sym] = v
96
- }
97
-
98
- if attributes.key?(:'estimated_commissions')
99
- self.estimated_commissions = attributes[:'estimated_commissions']
100
- end
101
-
102
- if attributes.key?(:'buying_power_effect')
103
- self.buying_power_effect = attributes[:'buying_power_effect']
104
- end
105
-
106
- if attributes.key?(:'buying_power_result')
107
- self.buying_power_result = attributes[:'buying_power_result']
108
- end
109
-
110
- if attributes.key?(:'maint_excess_effect')
111
- self.maint_excess_effect = attributes[:'maint_excess_effect']
112
- end
113
-
114
- if attributes.key?(:'maint_excess_result')
115
- self.maint_excess_result = attributes[:'maint_excess_result']
116
- end
117
-
118
- if attributes.key?(:'trade_value_calculation')
119
- self.trade_value_calculation = attributes[:'trade_value_calculation']
120
- end
121
-
122
- if attributes.key?(:'legs')
123
- if (value = attributes[:'legs']).is_a?(Array)
124
- self.legs = value
125
- end
126
- end
127
-
128
- if attributes.key?(:'side')
129
- self.side = attributes[:'side']
130
- end
131
-
132
- if attributes.key?(:'effect')
133
- self.effect = attributes[:'effect']
134
- end
135
-
136
- if attributes.key?(:'price')
137
- self.price = attributes[:'price']
138
- end
139
-
140
- if attributes.key?(:'strategy')
141
- self.strategy = attributes[:'strategy']
142
- end
143
- end
144
-
145
- # Show invalid properties with the reasons. Usually used together with valid?
146
- # @return Array for valid properties with the reasons
147
- def list_invalid_properties
148
- invalid_properties = Array.new
149
- invalid_properties
150
- end
151
-
152
- # Check to see if the all the properties in the model are valid
153
- # @return true if the model is valid
154
- def valid?
155
- true
156
- end
157
-
158
- # Checks equality by comparing each attribute.
159
- # @param [Object] Object to be compared
160
- def ==(o)
161
- return true if self.equal?(o)
162
- self.class == o.class &&
163
- estimated_commissions == o.estimated_commissions &&
164
- buying_power_effect == o.buying_power_effect &&
165
- buying_power_result == o.buying_power_result &&
166
- maint_excess_effect == o.maint_excess_effect &&
167
- maint_excess_result == o.maint_excess_result &&
168
- trade_value_calculation == o.trade_value_calculation &&
169
- legs == o.legs &&
170
- side == o.side &&
171
- effect == o.effect &&
172
- price == o.price &&
173
- strategy == o.strategy
174
- end
175
-
176
- # @see the `==` method
177
- # @param [Object] Object to be compared
178
- def eql?(o)
179
- self == o
180
- end
181
-
182
- # Calculates hash code according to all attributes.
183
- # @return [Integer] Hash code
184
- def hash
185
- [estimated_commissions, buying_power_effect, buying_power_result, maint_excess_effect, maint_excess_result, trade_value_calculation, legs, side, effect, price, strategy].hash
186
- end
187
-
188
- # Builds the object from hash
189
- # @param [Hash] attributes Model attributes in the form of hash
190
- # @return [Object] Returns the model itself
191
- def self.build_from_hash(attributes)
192
- new.build_from_hash(attributes)
193
- end
194
-
195
- # Builds the object from hash
196
- # @param [Hash] attributes Model attributes in the form of hash
197
- # @return [Object] Returns the model itself
198
- def build_from_hash(attributes)
199
- return nil unless attributes.is_a?(Hash)
200
- attributes = attributes.transform_keys(&:to_sym)
201
- self.class.openapi_types.each_pair do |key, type|
202
- if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
203
- self.send("#{key}=", nil)
204
- elsif type =~ /\AArray<(.*)>/i
205
- # check to ensure the input is an array given that the attribute
206
- # is documented as an array but the input is not
207
- if attributes[self.class.attribute_map[key]].is_a?(Array)
208
- self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
209
- end
210
- elsif !attributes[self.class.attribute_map[key]].nil?
211
- self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
212
- end
213
- end
214
-
215
- self
216
- end
217
-
218
- # Deserializes the data based on type
219
- # @param string type Data type
220
- # @param string value Value to be deserialized
221
- # @return [Object] Deserialized data
222
- def _deserialize(type, value)
223
- case type.to_sym
224
- when :Time
225
- Time.parse(value)
226
- when :Date
227
- Date.parse(value)
228
- when :String
229
- value.to_s
230
- when :Integer
231
- value.to_i
232
- when :Float
233
- value.to_f
234
- when :Boolean
235
- if value.to_s =~ /\A(true|t|yes|y|1)\z/i
236
- true
237
- else
238
- false
239
- end
240
- when :Object
241
- # generic object (usually a Hash), return directly
242
- value
243
- when /\AArray<(?<inner_type>.+)>\z/
244
- inner_type = Regexp.last_match[:inner_type]
245
- value.map { |v| _deserialize(inner_type, v) }
246
- when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
247
- k_type = Regexp.last_match[:k_type]
248
- v_type = Regexp.last_match[:v_type]
249
- {}.tap do |hash|
250
- value.each do |k, v|
251
- hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
252
- end
253
- end
254
- else # model
255
- # models (e.g. Pet) or oneOf
256
- klass = SnapTrade.const_get(type)
257
- klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
258
- end
259
- end
260
-
261
- # Returns the string representation of the object
262
- # @return [String] String presentation of the object
263
- def to_s
264
- to_hash.to_s
265
- end
266
-
267
- # to_body is an alias to to_hash (backward compatibility)
268
- # @return [Hash] Returns the object in the form of hash
269
- def to_body
270
- to_hash
271
- end
272
-
273
- # Returns the object in the form of hash
274
- # @return [Hash] Returns the object in the form of hash
275
- def to_hash
276
- hash = {}
277
- self.class.attribute_map.each_pair do |attr, param|
278
- value = self.send(attr)
279
- if value.nil?
280
- is_nullable = self.class.openapi_nullable.include?(attr)
281
- next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
282
- end
283
-
284
- hash[param] = _to_hash(value)
285
- end
286
- hash
287
- end
288
-
289
- # Outputs non-array value in the form of hash
290
- # For object, use to_hash. Otherwise, just return the value
291
- # @param [Object] value Any valid value
292
- # @return [Hash] Returns the value in the form of hash
293
- def _to_hash(value)
294
- if value.is_a?(Array)
295
- value.compact.map { |v| _to_hash(v) }
296
- elsif value.is_a?(Hash)
297
- {}.tap do |hash|
298
- value.each { |k, v| hash[k] = _to_hash(v) }
299
- end
300
- elsif value.respond_to? :to_hash
301
- value.to_hash
302
- else
303
- value
304
- end
305
- end
306
-
307
- end
308
-
309
- end