corepro_fvr 1.0.9

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 (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +15 -0
  4. data/LICENSE +21 -0
  5. data/README.md +47 -0
  6. data/Rakefile +2 -0
  7. data/config-sample.yml +5 -0
  8. data/corepro_fvr.gemspec +25 -0
  9. data/lib/corepro.rb +15 -0
  10. data/lib/corepro/account.rb +111 -0
  11. data/lib/corepro/account_close.rb +21 -0
  12. data/lib/corepro/bank_document.rb +42 -0
  13. data/lib/corepro/card.rb +90 -0
  14. data/lib/corepro/connection.rb +90 -0
  15. data/lib/corepro/core_pro_api_exception.rb +26 -0
  16. data/lib/corepro/customer.rb +140 -0
  17. data/lib/corepro/customer_beneficiary.rb +42 -0
  18. data/lib/corepro/customer_document.rb +22 -0
  19. data/lib/corepro/external_account.rb +84 -0
  20. data/lib/corepro/external_account_document.rb +34 -0
  21. data/lib/corepro/models/account_access.rb +25 -0
  22. data/lib/corepro/models/account_id_only.rb +9 -0
  23. data/lib/corepro/models/api_error.rb +14 -0
  24. data/lib/corepro/models/customer_address.rb +17 -0
  25. data/lib/corepro/models/customer_answer.rb +9 -0
  26. data/lib/corepro/models/customer_beneficiary_id_only.rb +8 -0
  27. data/lib/corepro/models/customer_id_only.rb +8 -0
  28. data/lib/corepro/models/customer_message.rb +10 -0
  29. data/lib/corepro/models/customer_phone.rb +11 -0
  30. data/lib/corepro/models/customer_question.rb +21 -0
  31. data/lib/corepro/models/customer_response.rb +28 -0
  32. data/lib/corepro/models/customer_verify_request.rb +28 -0
  33. data/lib/corepro/models/envelope.rb +37 -0
  34. data/lib/corepro/models/external_account_id_only.rb +8 -0
  35. data/lib/corepro/models/external_account_verify.rb +13 -0
  36. data/lib/corepro/models/file_content.rb +10 -0
  37. data/lib/corepro/models/json_base.rb +93 -0
  38. data/lib/corepro/models/model_base.rb +26 -0
  39. data/lib/corepro/models/program_account.rb +20 -0
  40. data/lib/corepro/models/program_checking.rb +38 -0
  41. data/lib/corepro/models/program_e_code.rb +31 -0
  42. data/lib/corepro/models/program_external_account.rb +21 -0
  43. data/lib/corepro/models/program_interest_rate.rb +18 -0
  44. data/lib/corepro/models/program_limit.rb +12 -0
  45. data/lib/corepro/models/program_prepaid.rb +37 -0
  46. data/lib/corepro/models/program_savings.rb +36 -0
  47. data/lib/corepro/program.rb +74 -0
  48. data/lib/corepro/statement.rb +25 -0
  49. data/lib/corepro/transaction.rb +53 -0
  50. data/lib/corepro/transfer.rb +42 -0
  51. data/lib/corepro/utils/logger.rb +9 -0
  52. data/lib/corepro/utils/requestor.rb +120 -0
  53. data/lib/corepro/version.rb +4 -0
  54. data/q2labs_public.pem +9 -0
  55. data/test.pdf +0 -0
  56. data/test/a_program_test.rb +12 -0
  57. data/test/aa_customer_test.rb +78 -0
  58. data/test/ab_account_test.rb +45 -0
  59. data/test/ac_external_account_test.rb +39 -0
  60. data/test/ad_customer_beneficiary_test.rb +43 -0
  61. data/test/ae_customer_document_test.rb +16 -0
  62. data/test/af_bankdocument_test.rb +20 -0
  63. data/test/ag_external_account_document_test.rb +18 -0
  64. data/test/ai_statement_test.rb +23 -0
  65. data/test/aj_transfer_test.rb +53 -0
  66. data/test/ak_transaction_test.rb +19 -0
  67. data/test/al_card_test.rb +51 -0
  68. data/test/core_pro_test_base.rb +30 -0
  69. metadata +170 -0
@@ -0,0 +1,26 @@
1
+ module CorePro
2
+ class CoreProApiException < StandardError
3
+ def initialize(errors)
4
+ @errors = errors
5
+ end
6
+
7
+ attr_accessor :errors
8
+
9
+ def firstMessage
10
+ @errors[0].message
11
+ end
12
+
13
+ def firstCode
14
+ @errors[0].code
15
+ end
16
+
17
+ def to_s
18
+ msg = ''
19
+ @errors.each do |e|
20
+ msg += e.to_s + ' '
21
+ end
22
+ msg
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,140 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'models/customer_verify_request'
3
+ require_relative 'models/customer_response'
4
+ require_relative 'models/customer_id_only'
5
+ require_relative 'models/customer_phone'
6
+ require_relative 'models/customer_address'
7
+ require_relative 'account'
8
+ require_relative 'card'
9
+ require_relative 'external_account'
10
+
11
+ module CorePro
12
+ class Customer < Models::ModelBase
13
+
14
+ attr_accessor :customerCount
15
+ attr_accessor :customerId
16
+ attr_accessor :firstName
17
+ attr_accessor :middleName
18
+ attr_accessor :lastName
19
+ attr_accessor :suffix
20
+ attr_accessor :birthDate
21
+ attr_accessor :gender
22
+ attr_accessor :culture
23
+ attr_accessor :tag
24
+ attr_accessor :status
25
+ attr_accessor :createdDate
26
+ attr_accessor :taxId
27
+ attr_accessor :taxIdMasked
28
+ attr_accessor :driversLicenseNumber
29
+ attr_accessor :driversLicenseNumberMasked
30
+ attr_accessor :driversLicenseState
31
+ attr_accessor :driversLicenseIssueDate
32
+ attr_accessor :driversLicenseExpireDate
33
+ attr_accessor :passportNumber
34
+ attr_accessor :passportNumberMasked
35
+ attr_accessor :passportCountry
36
+ attr_accessor :passportIssueDate
37
+ attr_accessor :passportExpireDate
38
+ attr_accessor :emailAddress
39
+ attr_accessor :isActive
40
+ attr_accessor :isLocked
41
+ attr_accessor :lockedDate
42
+ attr_accessor :lockedReason
43
+ attr_accessor :deceasedDate
44
+ attr_accessor :isSubjectToBackupWithholding
45
+ attr_accessor :isOptedInToBankCommunication
46
+ attr_accessor :isDocumentsAccepted
47
+ attr_accessor :customField1
48
+ attr_accessor :customField2
49
+ attr_accessor :customField3
50
+ attr_accessor :customField4
51
+ attr_accessor :customField5
52
+ attr_accessor :accessTypeCode
53
+ attr_accessor :lastModifiedDate
54
+ attr_accessor :lastActivityDate
55
+ attr_accessor :phones
56
+ attr_accessor :addresses
57
+ attr_accessor :accounts
58
+ attr_accessor :externalAccounts
59
+ attr_accessor :cards
60
+
61
+ def from_json! json, classDefs
62
+ classDefs = classDefs || {}
63
+ classDefs['phones'] = CorePro::Models::CustomerPhone
64
+ classDefs['addresses'] = CorePro::Models::CustomerAddress
65
+ classDefs['accounts'] = CorePro::Account
66
+ classDefs['externalAccounts'] = CorePro::ExternalAccount
67
+ classDefs['cards'] = CorePro::Card
68
+ super json, classDefs
69
+ end
70
+
71
+ def initialize()
72
+ super
73
+ @phones = []
74
+ @addresses = []
75
+ @accounts = []
76
+ @externalAccounts = []
77
+ @cards = []
78
+ end
79
+
80
+ def self.list(pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
81
+ CorePro::Utils::Requestor.get("/customer/list?pageNumber=#{pageNumber}&pageSize=#{pageSize}", Customer, connection, loggingObject)
82
+ end
83
+
84
+ def self.get(customerId, connection = nil, loggingObject = nil)
85
+ CorePro::Utils::Requestor.get("/customer/get/#{customerId}", Customer, connection, loggingObject)
86
+ end
87
+
88
+ def self.getByTag(tag, connection = nil, loggingObject = nil)
89
+ CorePro::Utils::Requestor.get("/customer/getByTag/?tag=#{escape(tag)}", Customer, connection, loggingObject)
90
+ end
91
+
92
+ def self.getByEmail(emailAddress, connection = nil, loggingObject = nil)
93
+ CorePro::Utils::Requestor.get("/customer/getByEmail/?emailAddress=#{escape(emailAddress)}", Customer, connection, loggingObject)
94
+ end
95
+
96
+ def self.search(tag = nil, taxId = nil, passportNumber = nil, driversLicenseNumber = nil, birthDate = nil, emailAddress = nil, lastName = nil, firstName = nil, pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
97
+ c = Customer.new
98
+ c.tag = tag
99
+ c.taxId = taxId
100
+ c.passportNumber = passportNumber
101
+ c.driversLicenseNumber = driversLicenseNumber
102
+ c.birthDate = birthDate
103
+ c.emailAddress = emailAddress
104
+ c.lastName = lastName
105
+ c.firstName = firstName
106
+ c.search(pageNumber, pageSize, connection, loggingObject)
107
+ end
108
+
109
+ def search(pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
110
+ CorePro::Utils::Requestor.post("/customer/search?pageNumber=#{pageNumber}&pageSize=#{pageSize}", Customer, self, connection, loggingObject)
111
+ end
112
+
113
+ def create(connection = nil, loggingObject = nil)
114
+ cid = CorePro::Utils::Requestor.post('/customer/create', CorePro::Models::CustomerIdOnly, self, connection, loggingObject)
115
+ cid.customerId
116
+ end
117
+
118
+ def update(connection = nil, loggingObject = nil)
119
+ cid = CorePro::Utils::Requestor.post('/customer/update', CorePro::Models::CustomerIdOnly, self, connection, loggingObject)
120
+ cid.customerId
121
+ end
122
+
123
+ def archive(connection = nil, loggingObject = nil)
124
+ cid = CorePro::Utils::Requestor.post('/customer/archive', CorePro::Models::CustomerIdOnly, self, connection, loggingObject)
125
+ cid.customerId
126
+ end
127
+
128
+ def initiate(connection = nil, loggingObject = nil)
129
+ CorePro::Utils::Requestor.post('/customer/initiate', CorePro::Models::CustomerResponse, self, connection, loggingObject)
130
+ end
131
+
132
+ def verify(verificationId, customerId, answers, connection = nil, loggingObject = nil)
133
+ cvr = CorePro::Models::CustomerVerifyRequest.new
134
+ cvr.customerId = customerId
135
+ cvr.verificationId = verificationId
136
+ cvr.answers = answers
137
+ cvr.verify connection, loggingObject
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,42 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'models/customer_beneficiary_id_only'
3
+
4
+ module CorePro
5
+ class CustomerBeneficiary < Models::ModelBase
6
+
7
+ attr_accessor :customerId
8
+ attr_accessor :customerBeneficiaryId
9
+ attr_accessor :firstName
10
+ attr_accessor :middleName
11
+ attr_accessor :lastName
12
+ attr_accessor :birthDate
13
+ attr_accessor :taxId
14
+ attr_accessor :taxIdMasked
15
+ attr_accessor :isActive
16
+ attr_accessor :lastModifiedDate
17
+
18
+ def self.list(customerId, connection = nil, loggingObject = nil)
19
+ CorePro::Utils::Requestor.get("/customerbeneficiary/list/#{customerId}", CustomerBeneficiary, connection, loggingObject)
20
+ end
21
+
22
+ def self.get(customerId, customerBeneficiaryId, connection = nil, loggingObject = nil)
23
+ CorePro::Utils::Requestor.get("/customerbeneficiary/get/#{customerId}/#{customerBeneficiaryId}", CustomerBeneficiary, connection, loggingObject)
24
+ end
25
+
26
+ def create(connection = nil, loggingObject = nil)
27
+ cbid = CorePro::Utils::Requestor.post('/customerbeneficiary/create', CorePro::Models::CustomerBeneficiaryIdOnly, self, connection, loggingObject)
28
+ cbid.customerBeneficiaryId
29
+ end
30
+
31
+ def update(connection = nil, loggingObject = nil)
32
+ cbid = CorePro::Utils::Requestor.post('/customerbeneficiary/update', CorePro::Models::CustomerBeneficiaryIdOnly, self, connection, loggingObject)
33
+ cbid.customerBeneficiaryId
34
+ end
35
+
36
+ def deactivate(connection = nil, loggingObject = nil)
37
+ cbid = CorePro::Utils::Requestor.post('/customerbeneficiary/deactivate', CorePro::Models::CustomerBeneficiaryIdOnly, self, connection, loggingObject)
38
+ cbid.customerBeneficiaryId
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,22 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ require 'base64'
4
+
5
+ module CorePro
6
+ class CustomerDocument < Models::ModelBase
7
+
8
+ attr_accessor :customerId
9
+ attr_accessor :documentType
10
+ attr_accessor :documentName
11
+ attr_accessor :documentContent
12
+ attr_accessor :reasonType
13
+
14
+ def upload(connection = nil, loggingObject = nil)
15
+ # NOTE: documentContent is assumed to be raw content bytes.
16
+ # corepro API expects base64 encoded string. so we convert that here.
17
+ self.documentContent = Base64.encode64(self.documentContent)
18
+ CorePro::Utils::Requestor.post('/customerdocument/upload', nil, self, connection, loggingObject)
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,84 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ require_relative 'models/external_account_id_only'
4
+ require_relative 'models/external_account_verify'
5
+
6
+ module CorePro
7
+ class ExternalAccount < Models::ModelBase
8
+
9
+ attr_accessor :customerId
10
+ attr_accessor :externalAccountId
11
+ attr_accessor :name
12
+ attr_accessor :tag
13
+ attr_accessor :nickName
14
+ attr_accessor :firstName
15
+ attr_accessor :lastName
16
+ attr_accessor :type
17
+ attr_accessor :status
18
+ attr_accessor :statusDate
19
+ attr_accessor :routingNumber
20
+ attr_accessor :routingNumberMasked
21
+ attr_accessor :accountNumber
22
+ attr_accessor :accountNumberMasked
23
+ attr_accessor :nocCode
24
+ attr_accessor :isActive
25
+ attr_accessor :isLocked
26
+ attr_accessor :lockedDate
27
+ attr_accessor :lockedReason
28
+ attr_accessor :customField1
29
+ attr_accessor :customField2
30
+ attr_accessor :customField3
31
+ attr_accessor :customField4
32
+ attr_accessor :customField5
33
+ attr_accessor :lastModifiedDate
34
+
35
+ def self.list(customerId, connection = nil, loggingObject = nil)
36
+ CorePro::Utils::Requestor.get("/externalaccount/list/#{customerId}", ExternalAccount, connection, loggingObject)
37
+ end
38
+
39
+ def self.get(customerId, externalAccountId, connection = nil, loggingObject = nil)
40
+ CorePro::Utils::Requestor.get("/externalaccount/get/#{customerId}/#{externalAccountId}", ExternalAccount, connection, loggingObject)
41
+ end
42
+
43
+ def self.getByTag(customerId, tag, connection = nil, loggingObject = nil)
44
+ CorePro::Utils::Requestor.get("/externalaccount/getByTag/#{customerId}/#{escape(tag)}", ExternalAccount, connection, loggingObject)
45
+ end
46
+
47
+ def create(connection = nil, loggingObject = nil)
48
+ eaid = CorePro::Utils::Requestor.post('/externalaccount/create', CorePro::Models::ExternalAccountIdOnly, self, connection, loggingObject)
49
+ eaid.externalAccountId
50
+ end
51
+
52
+ def initiate(connection = nil, loggingObject = nil)
53
+ CorePro::Utils::Requestor.post('/externalaccount/initiate', CorePro::Models::ExternalAccountIdOnly, self, connection, loggingObject)
54
+ end
55
+
56
+ def self.verify(customerId, externalAccountId, amount1, amount2, connection = nil, loggingObject = nil)
57
+ ea = ExternalAccount.new
58
+ ea.customerId = customerId
59
+ ea.externalAccountId = externalAccountId
60
+ ea.verify(amount1, amount2, connection, loggingObject)
61
+ end
62
+
63
+ def verify(amount1, amount2, connection = nil, loggingObject = nil)
64
+ eav = CorePro::Models::ExternalAccountVerify.new
65
+ eav.customerId = @customerId
66
+ eav.externalAccountId = @externalAccountId
67
+ eav.amount1 = @amount1
68
+ eav.amount2 = @amount2
69
+ CorePro::Utils::Requestor.post('/externalaccount/verify', eav, self, connection, loggingObject)
70
+ true
71
+ end
72
+
73
+ def update(connection = nil, loggingObject = nil)
74
+ eaid = CorePro::Utils::Requestor.post('/externalaccount/update', CorePro::Models::ExternalAccountIdOnly, self, connection, loggingObject)
75
+ eaid.externalAccountId
76
+ end
77
+
78
+ def archive(connection = nil, loggingObject = nil)
79
+ eaid = CorePro::Utils::Requestor.post('/externalaccount/deactivate', CorePro::Models::ExternalAccountIdOnly, self, connection, loggingObject)
80
+ eaid.externalAccountId
81
+ end
82
+
83
+ end
84
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ require 'base64'
4
+
5
+ module CorePro
6
+ class ExternalAccountDocument < Models::ModelBase
7
+
8
+ attr_accessor :customerId
9
+ attr_accessor :externalAccountId
10
+ attr_accessor :documentType
11
+ attr_accessor :documentName
12
+ attr_accessor :documentContent
13
+ attr_accessor :reasonType
14
+
15
+ def self.upload(customerId, externalAccountId, documentType, documentName, documentContent, reasonType, connection = nil, loggingObject = nil)
16
+ ead = ExternalAccountDocument.new
17
+ ead.customerId = customerId
18
+ ead.externalAccountId = externalAccountId
19
+ ead.documentType = documentType
20
+ ead.documentName = documentName
21
+ ead.documentContent = documentContent
22
+ ead.reasonType = reasonType
23
+ ead.upload connection, loggingObject
24
+ end
25
+
26
+ def upload(connection = nil, loggingObject = nil)
27
+ # NOTE: documentContent is assumed to be raw content bytes.
28
+ # corepro API expects base64 encoded string. so we convert that here.
29
+ self.documentContent = Base64.encode64(self.documentContent)
30
+ CorePro::Utils::Requestor.post('/externalaccountdocument/upload', nil, self, connection, loggingObject)
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ # test
2
+ require_relative 'model_base'
3
+ module CorePro
4
+ module Models
5
+ class AccountAccess < ModelBase
6
+ attr_accessor :customerId
7
+ attr_accessor :accountId
8
+ attr_accessor :accessTypeCode
9
+ attr_accessor :customerPriority
10
+ attr_accessor :firstName
11
+ attr_accessor :middleName
12
+ attr_accessor :lastName
13
+ attr_accessor :suffix
14
+ attr_accessor :customerTag
15
+ attr_accessor :isPrimaryCustomer
16
+ attr_accessor :accountTag
17
+ attr_accessor :accountName
18
+ attr_accessor :accountNumber
19
+ attr_accessor :accountNumberMasked
20
+ attr_accessor :routingNumber
21
+ attr_accessor :routingNumberMasked
22
+ attr_accessor :primaryCustomerId
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ # test
2
+ require_relative 'model_base'
3
+ module CorePro
4
+ module Models
5
+ class AccountIdOnly < ModelBase
6
+ attr_accessor :accountId
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'json_base'
2
+
3
+ module CorePro
4
+ module Models
5
+ class ApiError < JsonBase
6
+ attr_accessor :code
7
+ attr_accessor :message
8
+
9
+ def to_s
10
+ "code: #{@code}, message: #{@message}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'json_base'
2
+ module CorePro
3
+ module Models
4
+ class CustomerAddress < JsonBase
5
+ attr_accessor :addressType
6
+ attr_accessor :addressLine1
7
+ attr_accessor :addressLine2
8
+ attr_accessor :addressLine3
9
+ attr_accessor :addressLine4
10
+ attr_accessor :city
11
+ attr_accessor :state
12
+ attr_accessor :postalCode
13
+ attr_accessor :country
14
+ attr_accessor :isActive
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'json_base'
2
+ module CorePro
3
+ module Models
4
+ class CustomerAnswer < JsonBase
5
+ attr_accessor :questionType
6
+ attr_accessor :questionAnswer
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'model_base'
2
+ module CorePro
3
+ module Models
4
+ class CustomerBeneficiaryIdOnly < ModelBase
5
+ attr_accessor :customerBeneficiaryId
6
+ end
7
+ end
8
+ end