xero-ruby 7.0.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,274 @@
1
+ =begin
2
+ #Xero Accounting API
3
+
4
+ #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
+
6
+ Contact: api@xero.com
7
+ Generated by: https://openapi-generator.tech
8
+ OpenAPI Generator version: 4.3.1
9
+
10
+ =end
11
+
12
+ require 'time'
13
+ require 'date'
14
+
15
+ module XeroRuby::Accounting
16
+ require 'bigdecimal'
17
+
18
+ class GetContactsResponse
19
+
20
+ attr_accessor :id
21
+
22
+
23
+ attr_accessor :status
24
+
25
+
26
+ attr_accessor :provider_name
27
+
28
+
29
+ attr_accessor :date_time_utc
30
+
31
+
32
+ attr_accessor :page_info
33
+
34
+
35
+ attr_accessor :contacts
36
+
37
+ # Attribute mapping from ruby-style variable name to JSON key.
38
+ def self.attribute_map
39
+ {
40
+ :'id' => :'Id',
41
+ :'status' => :'Status',
42
+ :'provider_name' => :'ProviderName',
43
+ :'date_time_utc' => :'DateTimeUTC',
44
+ :'page_info' => :'PageInfo',
45
+ :'contacts' => :'Contacts'
46
+ }
47
+ end
48
+
49
+ # Attribute type mapping.
50
+ def self.openapi_types
51
+ {
52
+ :'id' => :'String',
53
+ :'status' => :'String',
54
+ :'provider_name' => :'String',
55
+ :'date_time_utc' => :'String',
56
+ :'page_info' => :'PageInfo',
57
+ :'contacts' => :'Array<Contact>'
58
+ }
59
+ end
60
+
61
+ # Initializes the object
62
+ # @param [Hash] attributes Model attributes in the form of hash
63
+ def initialize(attributes = {})
64
+ if (!attributes.is_a?(Hash))
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Accounting::GetContactsResponse` initialize method"
66
+ end
67
+
68
+ # check to see if the attribute exists and convert string to symbol for hash key
69
+ attributes = attributes.each_with_object({}) { |(k, v), h|
70
+ if (!self.class.attribute_map.key?(k.to_sym))
71
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Accounting::GetContactsResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
72
+ end
73
+ h[k.to_sym] = v
74
+ }
75
+
76
+ if attributes.key?(:'id')
77
+ self.id = attributes[:'id']
78
+ end
79
+
80
+ if attributes.key?(:'status')
81
+ self.status = attributes[:'status']
82
+ end
83
+
84
+ if attributes.key?(:'provider_name')
85
+ self.provider_name = attributes[:'provider_name']
86
+ end
87
+
88
+ if attributes.key?(:'date_time_utc')
89
+ self.date_time_utc = attributes[:'date_time_utc']
90
+ end
91
+
92
+ if attributes.key?(:'page_info')
93
+ self.page_info = attributes[:'page_info']
94
+ end
95
+
96
+ if attributes.key?(:'contacts')
97
+ if (value = attributes[:'contacts']).is_a?(Array)
98
+ self.contacts = value
99
+ end
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ invalid_properties = Array.new
107
+ invalid_properties
108
+ end
109
+
110
+ # Check to see if the all the properties in the model are valid
111
+ # @return true if the model is valid
112
+ def valid?
113
+ true
114
+ end
115
+
116
+ # Checks equality by comparing each attribute.
117
+ # @param [Object] Object to be compared
118
+ def ==(o)
119
+ return true if self.equal?(o)
120
+ self.class == o.class &&
121
+ id == o.id &&
122
+ status == o.status &&
123
+ provider_name == o.provider_name &&
124
+ date_time_utc == o.date_time_utc &&
125
+ page_info == o.page_info &&
126
+ contacts == o.contacts
127
+ end
128
+
129
+ # @see the `==` method
130
+ # @param [Object] Object to be compared
131
+ def eql?(o)
132
+ self == o
133
+ end
134
+
135
+ # Calculates hash code according to all attributes.
136
+ # @return [Integer] Hash code
137
+ def hash
138
+ [id, status, provider_name, date_time_utc, page_info, contacts].hash
139
+ end
140
+
141
+ # Builds the object from hash
142
+ # @param [Hash] attributes Model attributes in the form of hash
143
+ # @return [Object] Returns the model itself
144
+ def self.build_from_hash(attributes)
145
+ new.build_from_hash(attributes)
146
+ end
147
+
148
+ # Builds the object from hash
149
+ # @param [Hash] attributes Model attributes in the form of hash
150
+ # @return [Object] Returns the model itself
151
+ def build_from_hash(attributes)
152
+ return nil unless attributes.is_a?(Hash)
153
+ self.class.openapi_types.each_pair do |key, type|
154
+ if type =~ /\AArray<(.*)>/i
155
+ # check to ensure the input is an array given that the attribute
156
+ # is documented as an array but the input is not
157
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
158
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
159
+ end
160
+ elsif !attributes[self.class.attribute_map[key]].nil?
161
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
162
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
163
+ end
164
+
165
+ self
166
+ end
167
+
168
+ # Deserializes the data based on type
169
+ # @param string type Data type
170
+ # @param string value Value to be deserialized
171
+ # @return [Object] Deserialized data
172
+ def _deserialize(type, value)
173
+ case type.to_sym
174
+ when :DateTime
175
+ DateTime.parse(parse_date(value))
176
+ when :Date
177
+ Date.parse(parse_date(value))
178
+ when :String
179
+ value.to_s
180
+ when :Integer
181
+ value.to_i
182
+ when :Float
183
+ value.to_f
184
+ when :BigDecimal
185
+ BigDecimal(value.to_s)
186
+ when :Boolean
187
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
188
+ true
189
+ else
190
+ false
191
+ end
192
+ when :Object
193
+ # generic object (usually a Hash), return directly
194
+ value
195
+ when /\AArray<(?<inner_type>.+)>\z/
196
+ inner_type = Regexp.last_match[:inner_type]
197
+ value.map { |v| _deserialize(inner_type, v) }
198
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
199
+ k_type = Regexp.last_match[:k_type]
200
+ v_type = Regexp.last_match[:v_type]
201
+ {}.tap do |hash|
202
+ value.each do |k, v|
203
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
204
+ end
205
+ end
206
+ else # model
207
+ XeroRuby::Accounting.const_get(type).build_from_hash(value)
208
+ end
209
+ end
210
+
211
+ # Returns the string representation of the object
212
+ # @return [String] String presentation of the object
213
+ def to_s
214
+ to_hash.to_s
215
+ end
216
+
217
+ # to_body is an alias to to_hash (backward compatibility)
218
+ # @return [Hash] Returns the object in the form of hash
219
+ def to_body
220
+ to_hash
221
+ end
222
+
223
+ # Returns the object in the form of hash
224
+ # @return [Hash] Returns the object in the form of hash
225
+ def to_hash(downcase: false)
226
+ hash = {}
227
+ self.class.attribute_map.each_pair do |attr, param|
228
+ value = self.send(attr)
229
+ next if value.nil?
230
+ key = downcase ? attr : param
231
+ hash[key] = _to_hash(value, downcase: downcase)
232
+ end
233
+ hash
234
+ end
235
+
236
+ # Returns the object in the form of hash with snake_case
237
+ def to_attributes
238
+ to_hash(downcase: true)
239
+ end
240
+
241
+ # Outputs non-array value in the form of hash
242
+ # For object, use to_hash. Otherwise, just return the value
243
+ # @param [Object] value Any valid value
244
+ # @return [Hash] Returns the value in the form of hash
245
+ def _to_hash(value, downcase: false)
246
+ if value.is_a?(Array)
247
+ value.map do |v|
248
+ v.to_hash(downcase: downcase)
249
+ end
250
+ elsif value.is_a?(Hash)
251
+ {}.tap do |hash|
252
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
253
+ end
254
+ elsif value.respond_to? :to_hash
255
+ value.to_hash(downcase: downcase)
256
+ else
257
+ value
258
+ end
259
+ end
260
+
261
+ def parse_date(datestring)
262
+ if datestring.include?('Date')
263
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
264
+ original, date, timezone = *date_pattern.match(datestring)
265
+ date = (date.to_i / 1000)
266
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
267
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
268
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
269
+ else # handle date 'types' for small subset of payroll API's
270
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
271
+ end
272
+ end
273
+ end
274
+ end
@@ -0,0 +1,274 @@
1
+ =begin
2
+ #Xero Accounting API
3
+
4
+ #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
+
6
+ Contact: api@xero.com
7
+ Generated by: https://openapi-generator.tech
8
+ OpenAPI Generator version: 4.3.1
9
+
10
+ =end
11
+
12
+ require 'time'
13
+ require 'date'
14
+
15
+ module XeroRuby::Accounting
16
+ require 'bigdecimal'
17
+
18
+ class GetCreditNotesResponse
19
+
20
+ attr_accessor :id
21
+
22
+
23
+ attr_accessor :status
24
+
25
+
26
+ attr_accessor :provider_name
27
+
28
+
29
+ attr_accessor :date_time_utc
30
+
31
+
32
+ attr_accessor :page_info
33
+
34
+
35
+ attr_accessor :credit_notes
36
+
37
+ # Attribute mapping from ruby-style variable name to JSON key.
38
+ def self.attribute_map
39
+ {
40
+ :'id' => :'Id',
41
+ :'status' => :'Status',
42
+ :'provider_name' => :'ProviderName',
43
+ :'date_time_utc' => :'DateTimeUTC',
44
+ :'page_info' => :'PageInfo',
45
+ :'credit_notes' => :'CreditNotes'
46
+ }
47
+ end
48
+
49
+ # Attribute type mapping.
50
+ def self.openapi_types
51
+ {
52
+ :'id' => :'String',
53
+ :'status' => :'String',
54
+ :'provider_name' => :'String',
55
+ :'date_time_utc' => :'String',
56
+ :'page_info' => :'PageInfo',
57
+ :'credit_notes' => :'Array<CreditNote>'
58
+ }
59
+ end
60
+
61
+ # Initializes the object
62
+ # @param [Hash] attributes Model attributes in the form of hash
63
+ def initialize(attributes = {})
64
+ if (!attributes.is_a?(Hash))
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Accounting::GetCreditNotesResponse` initialize method"
66
+ end
67
+
68
+ # check to see if the attribute exists and convert string to symbol for hash key
69
+ attributes = attributes.each_with_object({}) { |(k, v), h|
70
+ if (!self.class.attribute_map.key?(k.to_sym))
71
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Accounting::GetCreditNotesResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
72
+ end
73
+ h[k.to_sym] = v
74
+ }
75
+
76
+ if attributes.key?(:'id')
77
+ self.id = attributes[:'id']
78
+ end
79
+
80
+ if attributes.key?(:'status')
81
+ self.status = attributes[:'status']
82
+ end
83
+
84
+ if attributes.key?(:'provider_name')
85
+ self.provider_name = attributes[:'provider_name']
86
+ end
87
+
88
+ if attributes.key?(:'date_time_utc')
89
+ self.date_time_utc = attributes[:'date_time_utc']
90
+ end
91
+
92
+ if attributes.key?(:'page_info')
93
+ self.page_info = attributes[:'page_info']
94
+ end
95
+
96
+ if attributes.key?(:'credit_notes')
97
+ if (value = attributes[:'credit_notes']).is_a?(Array)
98
+ self.credit_notes = value
99
+ end
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ invalid_properties = Array.new
107
+ invalid_properties
108
+ end
109
+
110
+ # Check to see if the all the properties in the model are valid
111
+ # @return true if the model is valid
112
+ def valid?
113
+ true
114
+ end
115
+
116
+ # Checks equality by comparing each attribute.
117
+ # @param [Object] Object to be compared
118
+ def ==(o)
119
+ return true if self.equal?(o)
120
+ self.class == o.class &&
121
+ id == o.id &&
122
+ status == o.status &&
123
+ provider_name == o.provider_name &&
124
+ date_time_utc == o.date_time_utc &&
125
+ page_info == o.page_info &&
126
+ credit_notes == o.credit_notes
127
+ end
128
+
129
+ # @see the `==` method
130
+ # @param [Object] Object to be compared
131
+ def eql?(o)
132
+ self == o
133
+ end
134
+
135
+ # Calculates hash code according to all attributes.
136
+ # @return [Integer] Hash code
137
+ def hash
138
+ [id, status, provider_name, date_time_utc, page_info, credit_notes].hash
139
+ end
140
+
141
+ # Builds the object from hash
142
+ # @param [Hash] attributes Model attributes in the form of hash
143
+ # @return [Object] Returns the model itself
144
+ def self.build_from_hash(attributes)
145
+ new.build_from_hash(attributes)
146
+ end
147
+
148
+ # Builds the object from hash
149
+ # @param [Hash] attributes Model attributes in the form of hash
150
+ # @return [Object] Returns the model itself
151
+ def build_from_hash(attributes)
152
+ return nil unless attributes.is_a?(Hash)
153
+ self.class.openapi_types.each_pair do |key, type|
154
+ if type =~ /\AArray<(.*)>/i
155
+ # check to ensure the input is an array given that the attribute
156
+ # is documented as an array but the input is not
157
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
158
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
159
+ end
160
+ elsif !attributes[self.class.attribute_map[key]].nil?
161
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
162
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
163
+ end
164
+
165
+ self
166
+ end
167
+
168
+ # Deserializes the data based on type
169
+ # @param string type Data type
170
+ # @param string value Value to be deserialized
171
+ # @return [Object] Deserialized data
172
+ def _deserialize(type, value)
173
+ case type.to_sym
174
+ when :DateTime
175
+ DateTime.parse(parse_date(value))
176
+ when :Date
177
+ Date.parse(parse_date(value))
178
+ when :String
179
+ value.to_s
180
+ when :Integer
181
+ value.to_i
182
+ when :Float
183
+ value.to_f
184
+ when :BigDecimal
185
+ BigDecimal(value.to_s)
186
+ when :Boolean
187
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
188
+ true
189
+ else
190
+ false
191
+ end
192
+ when :Object
193
+ # generic object (usually a Hash), return directly
194
+ value
195
+ when /\AArray<(?<inner_type>.+)>\z/
196
+ inner_type = Regexp.last_match[:inner_type]
197
+ value.map { |v| _deserialize(inner_type, v) }
198
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
199
+ k_type = Regexp.last_match[:k_type]
200
+ v_type = Regexp.last_match[:v_type]
201
+ {}.tap do |hash|
202
+ value.each do |k, v|
203
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
204
+ end
205
+ end
206
+ else # model
207
+ XeroRuby::Accounting.const_get(type).build_from_hash(value)
208
+ end
209
+ end
210
+
211
+ # Returns the string representation of the object
212
+ # @return [String] String presentation of the object
213
+ def to_s
214
+ to_hash.to_s
215
+ end
216
+
217
+ # to_body is an alias to to_hash (backward compatibility)
218
+ # @return [Hash] Returns the object in the form of hash
219
+ def to_body
220
+ to_hash
221
+ end
222
+
223
+ # Returns the object in the form of hash
224
+ # @return [Hash] Returns the object in the form of hash
225
+ def to_hash(downcase: false)
226
+ hash = {}
227
+ self.class.attribute_map.each_pair do |attr, param|
228
+ value = self.send(attr)
229
+ next if value.nil?
230
+ key = downcase ? attr : param
231
+ hash[key] = _to_hash(value, downcase: downcase)
232
+ end
233
+ hash
234
+ end
235
+
236
+ # Returns the object in the form of hash with snake_case
237
+ def to_attributes
238
+ to_hash(downcase: true)
239
+ end
240
+
241
+ # Outputs non-array value in the form of hash
242
+ # For object, use to_hash. Otherwise, just return the value
243
+ # @param [Object] value Any valid value
244
+ # @return [Hash] Returns the value in the form of hash
245
+ def _to_hash(value, downcase: false)
246
+ if value.is_a?(Array)
247
+ value.map do |v|
248
+ v.to_hash(downcase: downcase)
249
+ end
250
+ elsif value.is_a?(Hash)
251
+ {}.tap do |hash|
252
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
253
+ end
254
+ elsif value.respond_to? :to_hash
255
+ value.to_hash(downcase: downcase)
256
+ else
257
+ value
258
+ end
259
+ end
260
+
261
+ def parse_date(datestring)
262
+ if datestring.include?('Date')
263
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
264
+ original, date, timezone = *date_pattern.match(datestring)
265
+ date = (date.to_i / 1000)
266
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
267
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
268
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
269
+ else # handle date 'types' for small subset of payroll API's
270
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
271
+ end
272
+ end
273
+ end
274
+ end