figo 1.2.5 → 1.3.3

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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/config.yml +4 -0
  4. data/console_demo.rb +1 -1
  5. data/figo.gemspec +3 -3
  6. data/lib/account/api_call.rb +55 -0
  7. data/lib/account/model.rb +122 -0
  8. data/lib/account_balance/api_call.rb +18 -0
  9. data/lib/account_balance/model.rb +31 -0
  10. data/lib/authentification/api_call.rb +88 -0
  11. data/lib/bank/api_call.rb +49 -0
  12. data/lib/bank/model.rb +23 -0
  13. data/lib/base.rb +56 -0
  14. data/lib/cacert.pem +0 -0
  15. data/lib/figo.rb +54 -380
  16. data/lib/helpers/error.rb +20 -0
  17. data/lib/helpers/https.rb +52 -0
  18. data/lib/notification/api_call.rb +40 -0
  19. data/lib/notification/model.rb +27 -0
  20. data/lib/payment/api_call.rb +71 -0
  21. data/lib/payment/model.rb +75 -0
  22. data/lib/process/api_call.rb +17 -0
  23. data/lib/process/model.rb +34 -0
  24. data/lib/security/api_call.rb +59 -0
  25. data/lib/security/model.rb +83 -0
  26. data/lib/standing_order/api_call.rb +24 -0
  27. data/lib/standing_order/model.rb +75 -0
  28. data/lib/synchronization_status/api_call.rb +27 -0
  29. data/lib/synchronization_status/model.rb +23 -0
  30. data/lib/task/api_call.rb +37 -0
  31. data/lib/task/model.rb +43 -0
  32. data/lib/transaction/api_call.rb +57 -0
  33. data/lib/transaction/model.rb +75 -0
  34. data/lib/user/api_call.rb +46 -0
  35. data/lib/user/model.rb +55 -0
  36. data/test/config.yml +7 -0
  37. data/test/test_account_sync_and_setup.rb +67 -0
  38. data/test/test_accounts.rb +106 -0
  39. data/test/test_authentififcation.rb +68 -0
  40. data/test/test_business_processes.rb +43 -0
  41. data/test/test_figo.rb +5 -86
  42. data/test/test_notifications.rb +83 -0
  43. data/test/test_payments.rb +106 -0
  44. data/test/test_securities.rb +70 -0
  45. data/test/test_standing_orders.rb +49 -0
  46. data/test/test_transactions.rb +87 -0
  47. data/test/test_user_management.rb +91 -0
  48. metadata +64 -14
  49. data/lib/models.rb +0 -466
@@ -1,466 +0,0 @@
1
- #
2
- # Copyright (c) 2013 figo GmbH
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy
5
- # of this software and associated documentation files (the "Software"), to deal
6
- # in the Software without restriction, including without limitation the rights
7
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- # copies of the Software, and to permit persons to whom the Software is
9
- # furnished to do so, subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in
12
- # all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- # THE SOFTWARE.
21
- #
22
-
23
- require "date"
24
- require "flt"
25
-
26
-
27
- module Figo
28
- # Set decimal precision to two digits.
29
- Flt::DecNum.context.precision = 2
30
-
31
- # Abstract base class for model objects.
32
- class Base
33
- # Attributes to be dumped (called by modify and create)
34
- @dump_attributes = []
35
- def self.dump_attributes
36
- @dump_attributes
37
- end
38
-
39
- # Instantiate model object from hash.
40
- #
41
- # @param session [Session] figo `Session` object
42
- # @param hash [Hash] use keys of this hash for model object creation
43
- def initialize(session, hash)
44
- @session = session
45
-
46
- hash.each do |key, value|
47
- key = key.to_s if key.is_a? Symbol
48
- next unless respond_to? "#{key}="
49
- next if value.nil?
50
-
51
- if key == "status" and value.is_a? Hash
52
- value = SynchronizationStatus.new(session, value)
53
- elsif key == "balance" and value.is_a? Hash
54
- value = AccountBalance.new(session, value)
55
- elsif key == "amount" or key == "balance" or key == "credit_line" or key == "monthly_spending_limit"
56
- value = Flt::DecNum(value.to_s)
57
- elsif key.end_with?("_date")
58
- value = DateTime.iso8601(value)
59
- elsif key.end_with?("_timestamp")
60
- value = DateTime.iso8601(value)
61
- end
62
- send("#{key}=", value)
63
- end
64
- end
65
-
66
- # Dump committable attributes to a hash
67
- def dump
68
- result = {}
69
- self.class.dump_attributes.each do |attribute|
70
- value = send attribute
71
- next if value.nil?
72
- value = value.to_f if value.is_a? Flt::DecNum
73
-
74
- result[attribute] = value
75
- end
76
- return result
77
- end
78
- end
79
-
80
- # Object representing an User
81
- class User < Base
82
- @dump_attributes = [:name, :address, :send_newsletter, :language]
83
-
84
- # Internal figo Connect User ID
85
- # @return [String]
86
- attr_accessor :User_id
87
-
88
- # First and last name
89
- # @return [String]
90
- attr_accessor :name
91
-
92
- # Email address
93
- # @return [String]
94
- attr_accessor :email
95
-
96
- #Postal address for bills, etc.
97
- # @return [Dict]
98
- attr_accessor :address
99
-
100
- # This flag indicates whether the email address has been verified
101
- # @return [Boolean]
102
- attr_accessor :verified_email
103
-
104
- # This flag indicates whether the User has agreed to be contacted by email
105
- # @return [Boolean]
106
- attr_accessor :send_newsletter
107
-
108
- # Two-letter code of preferred language
109
- # @return [String]
110
- attr_accessor :language
111
-
112
- # This flag indicates whether the figo Account plan is free or premium
113
- # @return [Boolean]
114
- attr_accessor :premium
115
-
116
- # Timestamp of premium figo Account expiry
117
- # @return [DateTime]
118
- attr_accessor :premium_expires_on
119
-
120
- # Provider for premium subscription or Null of no subscription is active
121
- # @return [String]
122
- attr_accessor :premium_subscription
123
-
124
- # Timestamp of figo Account registration
125
- # @return [DateTime]
126
- attr_accessor :join_date
127
- end
128
-
129
- # Object representing one bank account of the User
130
- class Account < Base
131
- @dump_attributes = [:name, :owner, :auto_sync]
132
-
133
- # Internal figo Connect account ID
134
- # @return [String]
135
- attr_accessor :account_id
136
-
137
- # Internal figo Connect bank ID
138
- # @return [String]
139
- attr_accessor :bank_id
140
-
141
- # Account name
142
- # @return [String]
143
- attr_accessor :name
144
-
145
- # Account owner
146
- # @return [String]
147
- attr_accessor :owner
148
-
149
- # This flag indicates whether the account will be automatically synchronized
150
- # @return [Boolean]
151
- attr_accessor :auto_sync
152
-
153
- # Account number
154
- # @return [String]
155
- attr_accessor :account_number
156
-
157
- # Bank code
158
- # @return [String]
159
- attr_accessor :bank_code
160
-
161
- # Bank name
162
- # @return [String]
163
- attr_accessor :bank_name
164
-
165
- # Three-character currency code
166
- # @return [String]
167
- attr_accessor :currency
168
-
169
- # IBAN
170
- # @return [String]
171
- attr_accessor :iban
172
-
173
- # BIC
174
- # @return [String]
175
- attr_accessor :bic
176
-
177
- # Account type
178
- # @return [String]
179
- attr_accessor :type
180
-
181
- # Account icon URL
182
- # @return [String]
183
- attr_accessor :icon
184
-
185
- # Account icon URLs for other resolutions
186
- # @return [Hash]
187
- attr_accessor :additional_icons
188
-
189
- # This flag indicates whether the balance of this account is added to the total balance of accounts
190
- # @return [Boolean]
191
- attr_accessor :in_total_balance
192
-
193
- # Synchronization status object
194
- # @return [SynchronizationStatus]
195
- attr_accessor :status
196
-
197
- # AccountBalance object
198
- # @return [AccountBalance]
199
- attr_accessor :balance
200
-
201
- # Request list of transactions of this account
202
- #
203
- # @param since [String, Date] this parameter can either be a transaction ID or a date
204
- # @param count [Integer] limit the number of returned transactions
205
- # @param offset [Integer] which offset into the result set should be used to determin the first transaction to return (useful in combination with count)
206
- # @param include_pending [Boolean] this flag indicates whether pending transactions should be included
207
- # in the response; pending transactions are always included as a complete set, regardless of
208
- # the `since` parameter
209
- # @return [Array] an array of `Transaction` objects, one for each transaction of this account
210
- def transactions(since = nil, count = 1000, offset = 0, include_pending = false)
211
- @session.transactions @account_id, since, count, offset, include_pending
212
- end
213
-
214
- # Request specific transaction.
215
- #
216
- # @param transaction_id [String] ID of the transaction to be retrieved
217
- # @return [Transaction] transaction object
218
- def get_transaction(transaction_id)
219
- @session.get_transaction @acount_id, transaction_id
220
- end
221
-
222
- # Retrieve list of payments on this account
223
- #
224
- # @return [Payment] an array of `Payment` objects, one for each payment
225
- def payments
226
- @session.payments @account_id
227
- end
228
-
229
- # Retrieve specific payment on this account
230
- #
231
- # @param payment_id [String] ID of the notification to be retrieved
232
- # @return [Payment] `Payment` object for the respective payment
233
- def get_payment(payment_id)
234
- @session.get_payment @account_id, payment_id
235
- end
236
-
237
- # Retrieve bank of this account
238
- #
239
- # @return [Bank] `Bank` object for the respective bank
240
- def bank
241
- @session.get_bank @bank_id
242
- end
243
- end
244
-
245
- # Object representing the balance of a certain bank account of the User
246
- class AccountBalance < Base
247
- @dump_attributes = [:credit_line, :monthly_spending_limit]
248
-
249
- # Account balance or `nil` if the balance is not yet known
250
- # @return [DecNum]
251
- attr_accessor :balance
252
-
253
- # Bank server timestamp of balance or `nil` if the balance is not yet known
254
- # @return [Date]
255
- attr_accessor :balance_date
256
-
257
- # Credit line.
258
- # @return [DecNum]
259
- attr_accessor :credit_line
260
-
261
- # User-defined spending limit
262
- # @return [DecNum]
263
- attr_accessor :monthly_spending_limit
264
-
265
- # Synchronization status object
266
- # @return [SynchronizationStatus]
267
- attr_accessor :status
268
- end
269
-
270
- # Object representing a bank, i.e. an connection to a bank
271
- class Bank < Base
272
- @dump_attributes = [:sepa_creditor_id]
273
-
274
- # Internal figo Connect bank ID
275
- # @return [String]
276
- attr_accessor :bank_id
277
-
278
- # SEPA direct debit creditor ID
279
- # @return [String]
280
- attr_accessor :sepa_creditor_id
281
-
282
- # This flag indicates whether the user has chosen to save the PIN on the figo Connect server
283
- # @return [Boolean]
284
- attr_accessor :save_pin
285
- end
286
-
287
- # Object representing one bank transaction on a certain bank account of the User
288
- class Transaction < Base
289
- @dump_attributes = []
290
-
291
- # Internal figo Connect transaction ID
292
- # @return [String]
293
- attr_accessor :transaction_id
294
-
295
- # Internal figo Connect account ID
296
- # @return [String]
297
- attr_accessor :account_id
298
-
299
- # Name of originator or recipient
300
- # @return [String]
301
- attr_accessor :name
302
-
303
- # Account number of originator or recipient
304
- # @return [String]
305
- attr_accessor :account_number
306
-
307
- # Bank code of originator or recipient
308
- # @return [String]
309
- attr_accessor :bank_code
310
-
311
- # Bank name of originator or recipient
312
- # @return [String]
313
- attr_accessor :bank_name
314
-
315
- # Transaction amount
316
- # @return [DecNum]
317
- attr_accessor :amount
318
-
319
- # Three-character currency code
320
- # @return [String]
321
- attr_accessor :currency
322
-
323
- # Booking date
324
- # @return [Date]
325
- attr_accessor :booking_date
326
-
327
- # Value date
328
- # @return [Date]
329
- attr_accessor :value_date
330
-
331
- # Purpose text
332
- # @return [String]
333
- attr_accessor :purpose
334
-
335
- # Transaction type
336
- # @return [String]
337
- attr_accessor :type
338
-
339
- # Booking text
340
- # @return [String]
341
- attr_accessor :booking_text
342
-
343
- # This flag indicates whether the transaction is booked or pending
344
- # @return [Boolean]
345
- attr_accessor :booked
346
-
347
- # Internal creation timestamp on the figo Connect server
348
- # @return [DateTime]
349
- attr_accessor :creation_timestamp
350
-
351
- # Internal modification timestamp on the figo Connect server
352
- # @return [DateTime]
353
- attr_accessor :modification_timestamp
354
- end
355
-
356
- # Object representing the bank server synchronization status
357
- class SynchronizationStatus < Base
358
- @dump_attributes = []
359
-
360
- # Internal figo Connect status code
361
- # @return [Integer]
362
- attr_accessor :code
363
-
364
- # Human-readable error message
365
- # @return [String]
366
- attr_accessor :message
367
-
368
- # Timestamp of last synchronization
369
- # @return [DateTime]
370
- attr_accessor :sync_timestamp
371
-
372
- # Timestamp of last successful synchronization
373
- # @return [DateTime]
374
- attr_accessor :success_timestamp
375
- end
376
-
377
- # Object representing a configured notification, e.g. a webhook or email hook
378
- class Notification < Base
379
- @dump_attributes = [:observe_key, :notify_uri, :state]
380
-
381
- # Internal figo Connect notification ID from the notification registration response
382
- # @return [String]
383
- attr_accessor :notification_id
384
-
385
- # One of the notification keys specified in the figo Connect API specification
386
- # @return [String]
387
- attr_accessor :observe_key
388
-
389
- # Notification messages will be sent to this URL
390
- # @return [String]
391
- attr_accessor :notify_uri
392
-
393
- # State similiar to sync and logon process. It will passed as POST payload for webhooks
394
- # @return [String]
395
- attr_accessor :state
396
- end
397
-
398
- # Object representing a Payment
399
- class Payment < Base
400
- @dump_attributes = [:type, :name, :account_number, :bank_code, :amount, :currency, :purpose]
401
-
402
- # Internal figo Connect payment ID
403
- # @return [String]
404
- attr_accessor :payment_id
405
-
406
- # Internal figo Connect account ID
407
- # @return [String]
408
- attr_accessor :account_id
409
-
410
- # Payment type
411
- # @return [String]
412
- attr_accessor :type
413
-
414
- # Name of creditor or debtor
415
- # @return [String]
416
- attr_accessor :name
417
-
418
- # Account number of creditor or debtor
419
- # @return [String]
420
- attr_accessor :account_number
421
-
422
- # Bank code of creditor or debtor
423
- # @return [String]
424
- attr_accessor :bank_code
425
-
426
- # Bank name of creditor or debtor
427
- # @return [String]
428
- attr_accessor :bank_name
429
-
430
- # Icon of creditor or debtor bank
431
- # @return [String]
432
- attr_accessor :bank_icon
433
-
434
- # Icon of the creditor or debtor bank in other resolutions
435
- # @return [Hash]
436
- attr_accessor :bank_additional_icons
437
-
438
- # Order amount
439
- # @return [DecNum]
440
- attr_accessor :amount
441
-
442
- # Three-character currency code
443
- # @return [String]
444
- attr_accessor :currency
445
-
446
- # Purpose text
447
- # @return [String]
448
- attr_accessor :purpose
449
-
450
- # Timestamp of submission to the bank server
451
- # @return [DateTime]
452
- attr_accessor :submission_timestamp
453
-
454
- # Internal creation timestamp on the figo Connect server
455
- # @return [DateTime]
456
- attr_accessor :creation_timestamp
457
-
458
- # Internal modification timestamp on the figo Connect server
459
- # @return [DateTime]
460
- attr_accessor :modification_timestamp
461
-
462
- # ID of the transaction corresponding to this payment. This field is only set if the payment has been matched to a transaction
463
- # @return [String]
464
- attr_accessor :transaction_id
465
- end
466
- end