xero-ruby 1.1.0 → 1.2.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.
Files changed (212) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +68 -0
  3. data/docs/accounting/AccountingApi.md +1497 -785
  4. data/docs/accounting/Allocation.md +11 -1
  5. data/docs/accounting/BankTransfer.md +1 -1
  6. data/docs/accounting/BatchPayment.md +1 -1
  7. data/docs/accounting/Contact.md +2 -2
  8. data/docs/accounting/CreditNote.md +2 -2
  9. data/docs/accounting/Invoice.md +2 -2
  10. data/docs/accounting/Organisation.md +2 -0
  11. data/docs/accounting/Payment.md +4 -4
  12. data/docs/accounting/Quote.md +5 -1
  13. data/docs/assets/AssetApi.md +40 -16
  14. data/docs/assets/AssetType.md +1 -1
  15. data/docs/projects/Amount.md +19 -0
  16. data/docs/projects/ChargeType.md +16 -0
  17. data/docs/projects/CurrencyCode.md +16 -0
  18. data/docs/projects/Error.md +19 -0
  19. data/docs/projects/Pagination.md +23 -0
  20. data/docs/projects/Project.md +59 -0
  21. data/docs/projects/ProjectApi.md +979 -0
  22. data/docs/projects/ProjectCreateOrUpdate.md +23 -0
  23. data/docs/projects/ProjectPatch.md +17 -0
  24. data/docs/projects/ProjectStatus.md +16 -0
  25. data/docs/projects/ProjectUser.md +21 -0
  26. data/docs/projects/ProjectUsers.md +19 -0
  27. data/docs/projects/Projects.md +19 -0
  28. data/docs/projects/Task.md +45 -0
  29. data/docs/projects/TaskCreateOrUpdate.md +23 -0
  30. data/docs/projects/Tasks.md +19 -0
  31. data/docs/projects/TimeEntries.md +19 -0
  32. data/docs/projects/TimeEntry.md +33 -0
  33. data/docs/projects/TimeEntryCreateOrUpdate.md +25 -0
  34. data/lib/xero-ruby.rb +21 -2
  35. data/lib/xero-ruby/api/accounting_api.rb +77 -85
  36. data/lib/xero-ruby/api/asset_api.rb +3 -3
  37. data/lib/xero-ruby/api/project_api.rb +1035 -0
  38. data/lib/xero-ruby/api_client.rb +33 -7
  39. data/lib/xero-ruby/api_error.rb +2 -2
  40. data/lib/xero-ruby/configuration.rb +4 -2
  41. data/lib/xero-ruby/models/accounting/account.rb +56 -20
  42. data/lib/xero-ruby/models/accounting/account_type.rb +2 -2
  43. data/lib/xero-ruby/models/accounting/accounts.rb +4 -3
  44. data/lib/xero-ruby/models/accounting/accounts_payable.rb +5 -3
  45. data/lib/xero-ruby/models/accounting/accounts_receivable.rb +5 -3
  46. data/lib/xero-ruby/models/accounting/address.rb +15 -12
  47. data/lib/xero-ruby/models/accounting/allocation.rb +61 -8
  48. data/lib/xero-ruby/models/accounting/allocations.rb +4 -3
  49. data/lib/xero-ruby/models/accounting/attachment.rb +8 -8
  50. data/lib/xero-ruby/models/accounting/attachments.rb +4 -3
  51. data/lib/xero-ruby/models/accounting/balances.rb +5 -3
  52. data/lib/xero-ruby/models/accounting/bank_transaction.rb +35 -20
  53. data/lib/xero-ruby/models/accounting/bank_transactions.rb +4 -3
  54. data/lib/xero-ruby/models/accounting/bank_transfer.rb +15 -13
  55. data/lib/xero-ruby/models/accounting/bank_transfers.rb +4 -3
  56. data/lib/xero-ruby/models/accounting/batch_payment.rb +24 -18
  57. data/lib/xero-ruby/models/accounting/batch_payment_details.rb +7 -7
  58. data/lib/xero-ruby/models/accounting/batch_payments.rb +4 -3
  59. data/lib/xero-ruby/models/accounting/bill.rb +4 -3
  60. data/lib/xero-ruby/models/accounting/branding_theme.rb +9 -8
  61. data/lib/xero-ruby/models/accounting/branding_themes.rb +4 -3
  62. data/lib/xero-ruby/models/accounting/cis_org_setting.rb +5 -5
  63. data/lib/xero-ruby/models/accounting/cis_setting.rb +4 -4
  64. data/lib/xero-ruby/models/accounting/cis_settings.rb +4 -3
  65. data/lib/xero-ruby/models/accounting/contact.rb +46 -36
  66. data/lib/xero-ruby/models/accounting/contact_group.rb +8 -6
  67. data/lib/xero-ruby/models/accounting/contact_groups.rb +4 -3
  68. data/lib/xero-ruby/models/accounting/contact_person.rb +6 -6
  69. data/lib/xero-ruby/models/accounting/contacts.rb +4 -3
  70. data/lib/xero-ruby/models/accounting/country_code.rb +2 -2
  71. data/lib/xero-ruby/models/accounting/credit_note.rb +38 -25
  72. data/lib/xero-ruby/models/accounting/credit_notes.rb +4 -3
  73. data/lib/xero-ruby/models/accounting/currencies.rb +4 -3
  74. data/lib/xero-ruby/models/accounting/currency.rb +5 -4
  75. data/lib/xero-ruby/models/accounting/currency_code.rb +2 -2
  76. data/lib/xero-ruby/models/accounting/element.rb +10 -4
  77. data/lib/xero-ruby/models/accounting/employee.rb +13 -8
  78. data/lib/xero-ruby/models/accounting/employees.rb +4 -3
  79. data/lib/xero-ruby/models/accounting/error.rb +6 -6
  80. data/lib/xero-ruby/models/accounting/expense_claim.rb +19 -12
  81. data/lib/xero-ruby/models/accounting/expense_claims.rb +4 -3
  82. data/lib/xero-ruby/models/accounting/external_link.rb +10 -4
  83. data/lib/xero-ruby/models/accounting/history_record.rb +6 -6
  84. data/lib/xero-ruby/models/accounting/history_records.rb +4 -3
  85. data/lib/xero-ruby/models/accounting/invoice.rb +56 -37
  86. data/lib/xero-ruby/models/accounting/invoice_reminder.rb +3 -3
  87. data/lib/xero-ruby/models/accounting/invoice_reminders.rb +4 -3
  88. data/lib/xero-ruby/models/accounting/invoices.rb +4 -3
  89. data/lib/xero-ruby/models/accounting/item.rb +18 -16
  90. data/lib/xero-ruby/models/accounting/items.rb +4 -3
  91. data/lib/xero-ruby/models/accounting/journal.rb +35 -10
  92. data/lib/xero-ruby/models/accounting/journal_line.rb +14 -13
  93. data/lib/xero-ruby/models/accounting/journals.rb +4 -3
  94. data/lib/xero-ruby/models/accounting/line_amount_types.rb +2 -2
  95. data/lib/xero-ruby/models/accounting/line_item.rb +15 -15
  96. data/lib/xero-ruby/models/accounting/line_item_tracking.rb +6 -6
  97. data/lib/xero-ruby/models/accounting/linked_transaction.rb +21 -13
  98. data/lib/xero-ruby/models/accounting/linked_transactions.rb +4 -3
  99. data/lib/xero-ruby/models/accounting/manual_journal.rb +21 -15
  100. data/lib/xero-ruby/models/accounting/manual_journal_line.rb +9 -9
  101. data/lib/xero-ruby/models/accounting/manual_journals.rb +4 -3
  102. data/lib/xero-ruby/models/accounting/online_invoice.rb +3 -3
  103. data/lib/xero-ruby/models/accounting/online_invoices.rb +4 -3
  104. data/lib/xero-ruby/models/accounting/organisation.rb +103 -43
  105. data/lib/xero-ruby/models/accounting/organisations.rb +4 -3
  106. data/lib/xero-ruby/models/accounting/overpayment.rb +27 -18
  107. data/lib/xero-ruby/models/accounting/overpayments.rb +4 -3
  108. data/lib/xero-ruby/models/accounting/payment.rb +41 -22
  109. data/lib/xero-ruby/models/accounting/payment_delete.rb +3 -3
  110. data/lib/xero-ruby/models/accounting/payment_service.rb +8 -8
  111. data/lib/xero-ruby/models/accounting/payment_services.rb +4 -3
  112. data/lib/xero-ruby/models/accounting/payment_term.rb +5 -3
  113. data/lib/xero-ruby/models/accounting/payment_term_type.rb +2 -2
  114. data/lib/xero-ruby/models/accounting/payments.rb +4 -3
  115. data/lib/xero-ruby/models/accounting/phone.rb +12 -6
  116. data/lib/xero-ruby/models/accounting/prepayment.rb +28 -18
  117. data/lib/xero-ruby/models/accounting/prepayments.rb +4 -3
  118. data/lib/xero-ruby/models/accounting/purchase.rb +6 -6
  119. data/lib/xero-ruby/models/accounting/purchase_order.rb +36 -28
  120. data/lib/xero-ruby/models/accounting/purchase_orders.rb +4 -3
  121. data/lib/xero-ruby/models/accounting/quote.rb +50 -24
  122. data/lib/xero-ruby/models/accounting/quote_line_amount_types.rb +2 -2
  123. data/lib/xero-ruby/models/accounting/quote_status_codes.rb +2 -2
  124. data/lib/xero-ruby/models/accounting/quotes.rb +4 -3
  125. data/lib/xero-ruby/models/accounting/receipt.rb +25 -16
  126. data/lib/xero-ruby/models/accounting/receipts.rb +4 -3
  127. data/lib/xero-ruby/models/accounting/repeating_invoice.rb +23 -14
  128. data/lib/xero-ruby/models/accounting/repeating_invoices.rb +4 -3
  129. data/lib/xero-ruby/models/accounting/report.rb +10 -8
  130. data/lib/xero-ruby/models/accounting/report_attribute.rb +5 -3
  131. data/lib/xero-ruby/models/accounting/report_cell.rb +5 -3
  132. data/lib/xero-ruby/models/accounting/report_fields.rb +6 -3
  133. data/lib/xero-ruby/models/accounting/report_row.rb +6 -3
  134. data/lib/xero-ruby/models/accounting/report_rows.rb +7 -3
  135. data/lib/xero-ruby/models/accounting/report_with_row.rb +11 -9
  136. data/lib/xero-ruby/models/accounting/report_with_rows.rb +4 -3
  137. data/lib/xero-ruby/models/accounting/reports.rb +4 -3
  138. data/lib/xero-ruby/models/accounting/request_empty.rb +3 -3
  139. data/lib/xero-ruby/models/accounting/row_type.rb +2 -2
  140. data/lib/xero-ruby/models/accounting/sales_tracking_category.rb +4 -4
  141. data/lib/xero-ruby/models/accounting/schedule.rb +19 -11
  142. data/lib/xero-ruby/models/accounting/tax_component.rb +6 -6
  143. data/lib/xero-ruby/models/accounting/tax_rate.rb +94 -16
  144. data/lib/xero-ruby/models/accounting/tax_rates.rb +4 -3
  145. data/lib/xero-ruby/models/accounting/tax_type.rb +2 -2
  146. data/lib/xero-ruby/models/accounting/ten_nintey_nine_contact.rb +24 -24
  147. data/lib/xero-ruby/models/accounting/time_zone.rb +2 -2
  148. data/lib/xero-ruby/models/accounting/tracking_categories.rb +4 -3
  149. data/lib/xero-ruby/models/accounting/tracking_category.rb +11 -8
  150. data/lib/xero-ruby/models/accounting/tracking_option.rb +9 -6
  151. data/lib/xero-ruby/models/accounting/tracking_options.rb +4 -3
  152. data/lib/xero-ruby/models/accounting/user.rb +16 -9
  153. data/lib/xero-ruby/models/accounting/users.rb +4 -3
  154. data/lib/xero-ruby/models/accounting/validation_error.rb +3 -3
  155. data/lib/xero-ruby/models/assets/asset.rb +17 -14
  156. data/lib/xero-ruby/models/assets/asset_status.rb +2 -2
  157. data/lib/xero-ruby/models/assets/asset_status_query_param.rb +2 -2
  158. data/lib/xero-ruby/models/assets/asset_type.rb +9 -13
  159. data/lib/xero-ruby/models/assets/assets.rb +5 -3
  160. data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +9 -9
  161. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +21 -10
  162. data/lib/xero-ruby/models/assets/error.rb +7 -7
  163. data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +8 -8
  164. data/lib/xero-ruby/models/assets/pagination.rb +7 -3
  165. data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +7 -7
  166. data/lib/xero-ruby/models/assets/setting.rb +10 -10
  167. data/lib/xero-ruby/models/projects/amount.rb +214 -0
  168. data/lib/xero-ruby/models/projects/charge_type.rb +38 -0
  169. data/lib/xero-ruby/models/projects/currency_code.rb +199 -0
  170. data/lib/xero-ruby/models/projects/error.rb +214 -0
  171. data/lib/xero-ruby/models/projects/pagination.rb +234 -0
  172. data/lib/xero-ruby/models/projects/project.rb +419 -0
  173. data/lib/xero-ruby/models/projects/project_create_or_update.rb +239 -0
  174. data/lib/xero-ruby/models/projects/project_patch.rb +209 -0
  175. data/lib/xero-ruby/models/projects/project_status.rb +37 -0
  176. data/lib/xero-ruby/models/projects/project_user.rb +224 -0
  177. data/lib/xero-ruby/models/projects/project_users.rb +216 -0
  178. data/lib/xero-ruby/models/projects/projects.rb +216 -0
  179. data/lib/xero-ruby/models/projects/task.rb +381 -0
  180. data/lib/xero-ruby/models/projects/task_create_or_update.rb +249 -0
  181. data/lib/xero-ruby/models/projects/tasks.rb +216 -0
  182. data/lib/xero-ruby/models/projects/time_entries.rb +216 -0
  183. data/lib/xero-ruby/models/projects/time_entry.rb +320 -0
  184. data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +264 -0
  185. data/lib/xero-ruby/version.rb +3 -3
  186. data/spec/accounting/api/accounting_api_spec.rb +3 -3
  187. data/spec/api_client_spec.rb +23 -23
  188. data/spec/assets/api/asset_api_spec.rb +3 -3
  189. data/spec/configuration_spec.rb +7 -23
  190. data/spec/projects/api/project_api_spec.rb +229 -0
  191. data/spec/projects/models/amount_spec.rb +47 -0
  192. data/spec/projects/models/charge_type_spec.rb +35 -0
  193. data/spec/projects/models/currency_code_spec.rb +35 -0
  194. data/spec/projects/models/error_spec.rb +47 -0
  195. data/spec/projects/models/pagination_spec.rb +59 -0
  196. data/spec/projects/models/project_create_or_update_spec.rb +59 -0
  197. data/spec/projects/models/project_patch_spec.rb +41 -0
  198. data/spec/projects/models/project_spec.rb +167 -0
  199. data/spec/projects/models/project_status_spec.rb +35 -0
  200. data/spec/projects/models/project_user_spec.rb +53 -0
  201. data/spec/projects/models/project_users_spec.rb +47 -0
  202. data/spec/projects/models/projects_spec.rb +47 -0
  203. data/spec/projects/models/task_create_or_update_spec.rb +59 -0
  204. data/spec/projects/models/task_spec.rb +129 -0
  205. data/spec/projects/models/tasks_spec.rb +47 -0
  206. data/spec/projects/models/time_entries_spec.rb +47 -0
  207. data/spec/projects/models/time_entry_create_or_update_spec.rb +65 -0
  208. data/spec/projects/models/time_entry_spec.rb +93 -0
  209. data/xero-ruby.gem +0 -0
  210. data/xero-ruby.gemspec +3 -3
  211. metadata +83 -7
  212. data/xero-ruby-1.0.gem +0 -0
@@ -0,0 +1,249 @@
1
+ =begin
2
+ #Xero Projects API
3
+
4
+ #This is the Xero Projects API
5
+
6
+ The version of the OpenAPI document: 2.2.6
7
+ Contact: api@xero.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'time'
14
+ require 'date'
15
+
16
+ module XeroRuby::Projects
17
+ class TaskCreateOrUpdate
18
+ # Name of the task. Max length 100 characters.
19
+ attr_accessor :name
20
+
21
+
22
+ attr_accessor :rate
23
+
24
+
25
+ attr_accessor :charge_type
26
+
27
+ # Estimated time to perform the task. EstimateMinutes has to be greater than 0 if provided.
28
+ attr_accessor :estimate_minutes
29
+
30
+ # Attribute mapping from ruby-style variable name to JSON key.
31
+ def self.attribute_map
32
+ {
33
+ :'name' => :'name',
34
+ :'rate' => :'rate',
35
+ :'charge_type' => :'chargeType',
36
+ :'estimate_minutes' => :'estimateMinutes'
37
+ }
38
+ end
39
+
40
+ # Attribute type mapping.
41
+ def self.openapi_types
42
+ {
43
+ :'name' => :'String',
44
+ :'rate' => :'Amount',
45
+ :'charge_type' => :'ChargeType',
46
+ :'estimate_minutes' => :'Integer'
47
+ }
48
+ end
49
+
50
+ # Initializes the object
51
+ # @param [Hash] attributes Model attributes in the form of hash
52
+ def initialize(attributes = {})
53
+ if (!attributes.is_a?(Hash))
54
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Projects::TaskCreateOrUpdate` initialize method"
55
+ end
56
+
57
+ # check to see if the attribute exists and convert string to symbol for hash key
58
+ attributes = attributes.each_with_object({}) { |(k, v), h|
59
+ if (!self.class.attribute_map.key?(k.to_sym))
60
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Projects::TaskCreateOrUpdate`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
61
+ end
62
+ h[k.to_sym] = v
63
+ }
64
+
65
+ if attributes.key?(:'name')
66
+ self.name = attributes[:'name']
67
+ end
68
+
69
+ if attributes.key?(:'rate')
70
+ self.rate = attributes[:'rate']
71
+ end
72
+
73
+ if attributes.key?(:'charge_type')
74
+ self.charge_type = attributes[:'charge_type']
75
+ end
76
+
77
+ if attributes.key?(:'estimate_minutes')
78
+ self.estimate_minutes = attributes[:'estimate_minutes']
79
+ end
80
+ end
81
+
82
+ # Show invalid properties with the reasons. Usually used together with valid?
83
+ # @return Array for valid properties with the reasons
84
+ def list_invalid_properties
85
+ invalid_properties = Array.new
86
+ if @name.nil?
87
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
88
+ end
89
+
90
+ if @rate.nil?
91
+ invalid_properties.push('invalid value for "rate", rate cannot be nil.')
92
+ end
93
+
94
+ if @charge_type.nil?
95
+ invalid_properties.push('invalid value for "charge_type", charge_type cannot be nil.')
96
+ end
97
+
98
+ invalid_properties
99
+ end
100
+
101
+ # Check to see if the all the properties in the model are valid
102
+ # @return true if the model is valid
103
+ def valid?
104
+ return false if @name.nil?
105
+ return false if @rate.nil?
106
+ return false if @charge_type.nil?
107
+ true
108
+ end
109
+
110
+ # Checks equality by comparing each attribute.
111
+ # @param [Object] Object to be compared
112
+ def ==(o)
113
+ return true if self.equal?(o)
114
+ self.class == o.class &&
115
+ name == o.name &&
116
+ rate == o.rate &&
117
+ charge_type == o.charge_type &&
118
+ estimate_minutes == o.estimate_minutes
119
+ end
120
+
121
+ # @see the `==` method
122
+ # @param [Object] Object to be compared
123
+ def eql?(o)
124
+ self == o
125
+ end
126
+
127
+ # Calculates hash code according to all attributes.
128
+ # @return [Integer] Hash code
129
+ def hash
130
+ [name, rate, charge_type, estimate_minutes].hash
131
+ end
132
+
133
+ # Builds the object from hash
134
+ # @param [Hash] attributes Model attributes in the form of hash
135
+ # @return [Object] Returns the model itself
136
+ def self.build_from_hash(attributes)
137
+ new.build_from_hash(attributes)
138
+ end
139
+
140
+ # Builds the object from hash
141
+ # @param [Hash] attributes Model attributes in the form of hash
142
+ # @return [Object] Returns the model itself
143
+ def build_from_hash(attributes)
144
+ return nil unless attributes.is_a?(Hash)
145
+ self.class.openapi_types.each_pair do |key, type|
146
+ if type =~ /\AArray<(.*)>/i
147
+ # check to ensure the input is an array given that the attribute
148
+ # is documented as an array but the input is not
149
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
150
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
151
+ end
152
+ elsif !attributes[self.class.attribute_map[key]].nil?
153
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
154
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
155
+ end
156
+
157
+ self
158
+ end
159
+
160
+ # Deserializes the data based on type
161
+ # @param string type Data type
162
+ # @param string value Value to be deserialized
163
+ # @return [Object] Deserialized data
164
+ def _deserialize(type, value)
165
+ case type.to_sym
166
+ when :DateTime
167
+ DateTime.parse(parse_date(value))
168
+ when :Date
169
+ Date.parse(parse_date(value))
170
+ when :String
171
+ value.to_s
172
+ when :Integer
173
+ value.to_i
174
+ when :Float
175
+ value.to_f
176
+ when :Boolean
177
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
178
+ true
179
+ else
180
+ false
181
+ end
182
+ when :Object
183
+ # generic object (usually a Hash), return directly
184
+ value
185
+ when /\AArray<(?<inner_type>.+)>\z/
186
+ inner_type = Regexp.last_match[:inner_type]
187
+ value.map { |v| _deserialize(inner_type, v) }
188
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
189
+ k_type = Regexp.last_match[:k_type]
190
+ v_type = Regexp.last_match[:v_type]
191
+ {}.tap do |hash|
192
+ value.each do |k, v|
193
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
194
+ end
195
+ end
196
+ else # model
197
+ XeroRuby::Projects.const_get(type).build_from_hash(value)
198
+ end
199
+ end
200
+
201
+ # Returns the string representation of the object
202
+ # @return [String] String presentation of the object
203
+ def to_s
204
+ to_hash.to_s
205
+ end
206
+
207
+ # to_body is an alias to to_hash (backward compatibility)
208
+ # @return [Hash] Returns the object in the form of hash
209
+ def to_body
210
+ to_hash
211
+ end
212
+
213
+ # Returns the object in the form of hash
214
+ # @return [Hash] Returns the object in the form of hash
215
+ def to_hash
216
+ hash = {}
217
+ self.class.attribute_map.each_pair do |attr, param|
218
+ value = self.send(attr)
219
+ next if value.nil?
220
+ hash[param] = _to_hash(value)
221
+ end
222
+ hash
223
+ end
224
+
225
+ # Outputs non-array value in the form of hash
226
+ # For object, use to_hash. Otherwise, just return the value
227
+ # @param [Object] value Any valid value
228
+ # @return [Hash] Returns the value in the form of hash
229
+ def _to_hash(value)
230
+ if value.is_a?(Array)
231
+ value.compact.map { |v| _to_hash(v) }
232
+ elsif value.is_a?(Hash)
233
+ {}.tap do |hash|
234
+ value.each { |k, v| hash[k] = _to_hash(v) }
235
+ end
236
+ elsif value.respond_to? :to_hash
237
+ value.to_hash
238
+ else
239
+ value
240
+ end
241
+ end
242
+
243
+ # customized data_parser
244
+ def parse_date(datestring)
245
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
246
+ return Time.at(seconds_since_epoch).to_s
247
+ end
248
+ end
249
+ end
@@ -0,0 +1,216 @@
1
+ =begin
2
+ #Xero Projects API
3
+
4
+ #This is the Xero Projects API
5
+
6
+ The version of the OpenAPI document: 2.2.6
7
+ Contact: api@xero.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'time'
14
+ require 'date'
15
+
16
+ module XeroRuby::Projects
17
+ class Tasks
18
+
19
+ attr_accessor :pagination
20
+
21
+
22
+ attr_accessor :items
23
+
24
+ # Attribute mapping from ruby-style variable name to JSON key.
25
+ def self.attribute_map
26
+ {
27
+ :'pagination' => :'pagination',
28
+ :'items' => :'items'
29
+ }
30
+ end
31
+
32
+ # Attribute type mapping.
33
+ def self.openapi_types
34
+ {
35
+ :'pagination' => :'Pagination',
36
+ :'items' => :'Array<Task>'
37
+ }
38
+ end
39
+
40
+ # Initializes the object
41
+ # @param [Hash] attributes Model attributes in the form of hash
42
+ def initialize(attributes = {})
43
+ if (!attributes.is_a?(Hash))
44
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Projects::Tasks` initialize method"
45
+ end
46
+
47
+ # check to see if the attribute exists and convert string to symbol for hash key
48
+ attributes = attributes.each_with_object({}) { |(k, v), h|
49
+ if (!self.class.attribute_map.key?(k.to_sym))
50
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Projects::Tasks`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
51
+ end
52
+ h[k.to_sym] = v
53
+ }
54
+
55
+ if attributes.key?(:'pagination')
56
+ self.pagination = attributes[:'pagination']
57
+ end
58
+
59
+ if attributes.key?(:'items')
60
+ if (value = attributes[:'items']).is_a?(Array)
61
+ self.items = value
62
+ end
63
+ end
64
+ end
65
+
66
+ # Show invalid properties with the reasons. Usually used together with valid?
67
+ # @return Array for valid properties with the reasons
68
+ def list_invalid_properties
69
+ invalid_properties = Array.new
70
+ invalid_properties
71
+ end
72
+
73
+ # Check to see if the all the properties in the model are valid
74
+ # @return true if the model is valid
75
+ def valid?
76
+ true
77
+ end
78
+
79
+ # Checks equality by comparing each attribute.
80
+ # @param [Object] Object to be compared
81
+ def ==(o)
82
+ return true if self.equal?(o)
83
+ self.class == o.class &&
84
+ pagination == o.pagination &&
85
+ items == o.items
86
+ end
87
+
88
+ # @see the `==` method
89
+ # @param [Object] Object to be compared
90
+ def eql?(o)
91
+ self == o
92
+ end
93
+
94
+ # Calculates hash code according to all attributes.
95
+ # @return [Integer] Hash code
96
+ def hash
97
+ [pagination, items].hash
98
+ end
99
+
100
+ # Builds the object from hash
101
+ # @param [Hash] attributes Model attributes in the form of hash
102
+ # @return [Object] Returns the model itself
103
+ def self.build_from_hash(attributes)
104
+ new.build_from_hash(attributes)
105
+ end
106
+
107
+ # Builds the object from hash
108
+ # @param [Hash] attributes Model attributes in the form of hash
109
+ # @return [Object] Returns the model itself
110
+ def build_from_hash(attributes)
111
+ return nil unless attributes.is_a?(Hash)
112
+ self.class.openapi_types.each_pair do |key, type|
113
+ if type =~ /\AArray<(.*)>/i
114
+ # check to ensure the input is an array given that the attribute
115
+ # is documented as an array but the input is not
116
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
117
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
118
+ end
119
+ elsif !attributes[self.class.attribute_map[key]].nil?
120
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
121
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
122
+ end
123
+
124
+ self
125
+ end
126
+
127
+ # Deserializes the data based on type
128
+ # @param string type Data type
129
+ # @param string value Value to be deserialized
130
+ # @return [Object] Deserialized data
131
+ def _deserialize(type, value)
132
+ case type.to_sym
133
+ when :DateTime
134
+ DateTime.parse(parse_date(value))
135
+ when :Date
136
+ Date.parse(parse_date(value))
137
+ when :String
138
+ value.to_s
139
+ when :Integer
140
+ value.to_i
141
+ when :Float
142
+ value.to_f
143
+ when :Boolean
144
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
145
+ true
146
+ else
147
+ false
148
+ end
149
+ when :Object
150
+ # generic object (usually a Hash), return directly
151
+ value
152
+ when /\AArray<(?<inner_type>.+)>\z/
153
+ inner_type = Regexp.last_match[:inner_type]
154
+ value.map { |v| _deserialize(inner_type, v) }
155
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
156
+ k_type = Regexp.last_match[:k_type]
157
+ v_type = Regexp.last_match[:v_type]
158
+ {}.tap do |hash|
159
+ value.each do |k, v|
160
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
161
+ end
162
+ end
163
+ else # model
164
+ XeroRuby::Projects.const_get(type).build_from_hash(value)
165
+ end
166
+ end
167
+
168
+ # Returns the string representation of the object
169
+ # @return [String] String presentation of the object
170
+ def to_s
171
+ to_hash.to_s
172
+ end
173
+
174
+ # to_body is an alias to to_hash (backward compatibility)
175
+ # @return [Hash] Returns the object in the form of hash
176
+ def to_body
177
+ to_hash
178
+ end
179
+
180
+ # Returns the object in the form of hash
181
+ # @return [Hash] Returns the object in the form of hash
182
+ def to_hash
183
+ hash = {}
184
+ self.class.attribute_map.each_pair do |attr, param|
185
+ value = self.send(attr)
186
+ next if value.nil?
187
+ hash[param] = _to_hash(value)
188
+ end
189
+ hash
190
+ end
191
+
192
+ # Outputs non-array value in the form of hash
193
+ # For object, use to_hash. Otherwise, just return the value
194
+ # @param [Object] value Any valid value
195
+ # @return [Hash] Returns the value in the form of hash
196
+ def _to_hash(value)
197
+ if value.is_a?(Array)
198
+ value.compact.map { |v| _to_hash(v) }
199
+ elsif value.is_a?(Hash)
200
+ {}.tap do |hash|
201
+ value.each { |k, v| hash[k] = _to_hash(v) }
202
+ end
203
+ elsif value.respond_to? :to_hash
204
+ value.to_hash
205
+ else
206
+ value
207
+ end
208
+ end
209
+
210
+ # customized data_parser
211
+ def parse_date(datestring)
212
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
213
+ return Time.at(seconds_since_epoch).to_s
214
+ end
215
+ end
216
+ end