corepro 0.0.4

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 (55) hide show
  1. data/.gitignore +16 -0
  2. data/.idea/.name +1 -0
  3. data/.idea/.rakeTasks +7 -0
  4. data/.idea/corepro-sdk-ruby.iml +67 -0
  5. data/.idea/encodings.xml +5 -0
  6. data/.idea/misc.xml +5 -0
  7. data/.idea/modules.xml +9 -0
  8. data/.idea/scopes/scope_settings.xml +5 -0
  9. data/.idea/vcs.xml +7 -0
  10. data/CorePro.gemspec +23 -0
  11. data/Gemfile +15 -0
  12. data/LICENSE +21 -0
  13. data/README.md +47 -0
  14. data/Rakefile +2 -0
  15. data/config-sample.yml +3 -0
  16. data/lib/CorePro/Models/account_id_only.rb +8 -0
  17. data/lib/CorePro/Models/api_error.rb +14 -0
  18. data/lib/CorePro/Models/customer_address.rb +17 -0
  19. data/lib/CorePro/Models/customer_answer.rb +9 -0
  20. data/lib/CorePro/Models/customer_id_only.rb +8 -0
  21. data/lib/CorePro/Models/customer_message.rb +10 -0
  22. data/lib/CorePro/Models/customer_phone.rb +11 -0
  23. data/lib/CorePro/Models/customer_question.rb +21 -0
  24. data/lib/CorePro/Models/customer_response.rb +27 -0
  25. data/lib/CorePro/Models/customer_verify_request.rb +29 -0
  26. data/lib/CorePro/Models/envelope.rb +37 -0
  27. data/lib/CorePro/Models/external_account_id_only.rb +8 -0
  28. data/lib/CorePro/Models/external_account_verify.rb +13 -0
  29. data/lib/CorePro/Models/file_content.rb +10 -0
  30. data/lib/CorePro/Models/json_base.rb +81 -0
  31. data/lib/CorePro/Models/model_base.rb +16 -0
  32. data/lib/CorePro/Models/program_interest_rate.rb +13 -0
  33. data/lib/CorePro/Models/program_limit.rb +12 -0
  34. data/lib/CorePro/Utils/logger.rb +9 -0
  35. data/lib/CorePro/Utils/requestor.rb +89 -0
  36. data/lib/CorePro/account.rb +74 -0
  37. data/lib/CorePro/account_close.rb +22 -0
  38. data/lib/CorePro/connection.rb +68 -0
  39. data/lib/CorePro/core_pro_api_exception.rb +21 -0
  40. data/lib/CorePro/customer.rb +150 -0
  41. data/lib/CorePro/customer_beneficiary.rb +55 -0
  42. data/lib/CorePro/customer_document.rb +34 -0
  43. data/lib/CorePro/document.rb +23 -0
  44. data/lib/CorePro/external_account.rb +86 -0
  45. data/lib/CorePro/external_account_document.rb +36 -0
  46. data/lib/CorePro/program.rb +58 -0
  47. data/lib/CorePro/statement.rb +28 -0
  48. data/lib/CorePro/transaction.rb +40 -0
  49. data/lib/CorePro/transfer.rb +42 -0
  50. data/lib/CorePro/version.rb +4 -0
  51. data/lib/CorePro.rb +14 -0
  52. data/test/account_test.rb +37 -0
  53. data/test/core_pro_test_base.rb +10 -0
  54. data/test/customer_test.rb +46 -0
  55. metadata +135 -0
@@ -0,0 +1,89 @@
1
+ require_relative '../version'
2
+ require_relative 'logger'
3
+ require_relative '../models/envelope'
4
+ require_relative '../core_pro_api_exception'
5
+
6
+ require 'openssl'
7
+ require 'base64'
8
+ require 'net/https'
9
+ require 'uri'
10
+ require 'json'
11
+
12
+ module CorePro
13
+ module Utils
14
+ class Requestor
15
+
16
+ SDK_USER_AGENT = "CorePro Ruby SDK v #{CorePro::VERSION}"
17
+
18
+ def self.get(relativeUrl, classDef, connection, loggingObject)
19
+ url = "https://#{connection.domainName}/#{relativeUrl}"
20
+ http = Net::HTTP.new(connection.domainName, 443)
21
+ http.use_ssl = true
22
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
23
+ headers = { 'User-Agent' => SDK_USER_AGENT,
24
+ 'Content-Type' => 'application/json; charset=utf-8',
25
+ 'Accept' => 'application/json; charset=utf-8',
26
+ 'Authorization' => connection.headerValue,
27
+ 'Host' => connection.domainName}
28
+ request = Net::HTTP::Get.new(url, headers)
29
+
30
+ response = http.request(request)
31
+
32
+ #Logger.write("hi mom", loggingObject)
33
+ parseResponse(request, response, classDef, connection, loggingObject)
34
+
35
+ end
36
+
37
+ def self.post(relativeUrl, classDef, toPost, connection, loggingObject)
38
+ uri = URI.parse("https://#{connection.domainName}/#{relativeUrl}")
39
+ http = Net::HTTP.new(uri.host, uri.port)
40
+ http.use_ssl = true
41
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
42
+ headers = { 'User-Agent' => SDK_USER_AGENT,
43
+ 'Content-Type' => 'application/json; charset=utf-8',
44
+ 'Accept' => 'application/json; charset=utf-8',
45
+ 'Authorization' => connection.headerValue,
46
+ 'Host' => connection.domainName}
47
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
48
+ request.body = toPost.to_json
49
+ response = http.request(request)
50
+
51
+ #Logger.write("hi mom", loggingObject)
52
+ parseResponse(request, response, classDef, connection, loggingObject)
53
+
54
+ end
55
+
56
+ def self.parseResponse(req, resp, classDef, conn, loggingObject)
57
+ case resp.code
58
+ when '501'
59
+ raise 501
60
+ when '502'
61
+ raise 502
62
+ when '503'
63
+ raise 503
64
+ when '504'
65
+ raise 504
66
+ when '505'
67
+ raise 505
68
+ else
69
+ envelope = CorePro::Models::Envelope.new
70
+ envelope.rawRequestBody = req.body
71
+ envelope.rawResponseBody = resp.body
72
+ parsedJson = JSON.parse(resp.body)
73
+ envelope.from_json! parsedJson, { 'data' => classDef }
74
+ if envelope.errors.length > 0
75
+ raise CorePro::CoreProApiException.new(envelope.errors)
76
+ else
77
+ if classDef == NIL
78
+ # no class definition given, return raw envelope
79
+ envelope
80
+ else
81
+ # class definition given, return just that data
82
+ envelope.data
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,74 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ require_relative 'models/account_id_only'
4
+ require_relative 'connection'
5
+
6
+ module CorePro
7
+ class Account < Models::ModelBase
8
+
9
+ attr_accessor :customerId
10
+ attr_accessor :accountId
11
+ attr_accessor :name
12
+ attr_accessor :accountNumber
13
+ attr_accessor :accountNumberMasked
14
+ attr_accessor :status
15
+ attr_accessor :type
16
+ attr_accessor :createdDate
17
+ attr_accessor :closedDate
18
+ attr_accessor :availableBalance
19
+ attr_accessor :accountBalance
20
+ attr_accessor :isPrimary
21
+ attr_accessor :isCloseable
22
+ attr_accessor :routingNumber
23
+ attr_accessor :targetAmount
24
+ attr_accessor :targetDate
25
+ attr_accessor :category
26
+ attr_accessor :subCategory
27
+ attr_accessor :tag
28
+ attr_accessor :miscellaneous
29
+ attr_accessor :recurringContributionType
30
+ attr_accessor :recurringContributionAmount
31
+ attr_accessor :recurringContributionFromExternalAccountId
32
+ attr_accessor :recurringContributionStartDate
33
+ attr_accessor :recurringContributionEndDate
34
+ attr_accessor :recurringContributionNextDate
35
+
36
+ def initialize()
37
+ end
38
+
39
+ def self.list(customerId, connection = nil, loggingObject = nil)
40
+ connection ||= Connection.createFromConfig()
41
+ CorePro::Utils::Requestor.get("/account/list/#{customerId}", Account, connection, loggingObject)
42
+ end
43
+
44
+ def self.get(customerId, accountId, connection = nil, loggingObject = nil)
45
+ connection ||= Connection.createFromConfig()
46
+ CorePro::Utils::Requestor.get("/account/get/#{customerId}/#{accountId}", Account, connection, loggingObject)
47
+ end
48
+
49
+ def self.getByTag(customerId, tag, connection = nil, loggingObject = nil)
50
+ connection ||= Connection.createFromConfig()
51
+ CorePro::Utils::Requestor.get("/account/getByTag/#{customerId}/#{tag}", Account, connection, loggingObject)
52
+ end
53
+
54
+ def create(connection = nil, loggingObject = nil)
55
+ connection ||= Connection.createFromConfig()
56
+ aid = CorePro::Utils::Requestor.post('/account/create', CorePro::Models::AccountIdOnly, self, connection, loggingObject)
57
+ aid.accountId
58
+ end
59
+
60
+ def update(connection = nil, loggingObject = nil)
61
+ connection ||= Connection.createFromConfig()
62
+ CorePro::Utils::Requestor.post('/account/update', nil, self, connection, loggingObject)
63
+ true
64
+ end
65
+
66
+ def close(closeToAccountId, transactionTag, connection = nil, loggingObject = nil)
67
+ ac = CorePro::AccountClose.new
68
+ ac.closeToAccountId = closeToAccountId
69
+ ac.transactionTag = transactionTag
70
+ ac.close(connection, loggingObject)
71
+ end
72
+
73
+ end
74
+ end
@@ -0,0 +1,22 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+
4
+ module CorePro
5
+ class AccountClose < Models::ModelBase
6
+ attr_accessor :customerId
7
+ attr_accessor :accountId
8
+ attr_accessor :closeToAccountId
9
+ attr_accessor :transactionId
10
+ attr_accessor :transactionTag
11
+ attr_accessor :closingBalanceAmount
12
+ attr_accessor :interestPaidAmount
13
+ attr_accessor :backupWithholdingAmount
14
+ attr_accessor :totalClosingAmount
15
+ attr_accessor :isClosedToExternalAccount
16
+
17
+ def close(connection = nil, loggingObject = nil)
18
+ connection ||= Connection.createFromConfig()
19
+ CorePro::Utils::Requestor.post('/account/close', AccountClose, self, connection, loggingObject)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,68 @@
1
+ require 'base64'
2
+ require 'yaml'
3
+
4
+ module CorePro
5
+ class Connection
6
+
7
+ @@config = begin
8
+ YAML.load(File.open('config.yml'))
9
+ rescue ArgumentError => e
10
+ puts "Could not parse YAML: #{e.message}"
11
+ end
12
+
13
+ def self.createFromConfig(apiKey = nil, apiSecret = nil, domainName = nil)
14
+ c = Connection.new
15
+ c.apiKey = apiKey || @@config['CoreProApiKey']
16
+ c.apiSecret = apiSecret || @@config['CoreProApiSecret']
17
+ c.domainName = domainName || @@config['CoreProDomainName']
18
+ c
19
+ end
20
+
21
+ def initialize(apiKey = nil, apiSecret = nil, domainName = nil)
22
+ @apiKey = apiKey || @@config['CoreProApiKey']
23
+ @apiSecret = apiSecret || @@config['CoreProApiSecret']
24
+ @domainName = domainName || @@config['CoreProDomainName']
25
+ @headerValue = ''
26
+ end
27
+
28
+ def apiKey
29
+ @apiKey
30
+ end
31
+
32
+ def apiKey=(value)
33
+ @apiKey = value
34
+ @headerValue = ''
35
+ end
36
+
37
+ def apiSecret
38
+ @apiSecret
39
+ end
40
+
41
+ def apiSecret=(value)
42
+ @apiSecret = value
43
+ @headerValue = ''
44
+ end
45
+
46
+ def headerValue
47
+ if (@headerValue || '' == '')
48
+ utf8Value = "#{@apiKey}:#{@apiSecret}".force_encoding('iso-8859-1').encode('utf-8')
49
+ b64 = Base64.encode64(utf8Value)
50
+ @headerValue = "Basic #{b64}"
51
+ end
52
+ @headerValue
53
+ end
54
+
55
+ def domainName
56
+ @domainName
57
+ end
58
+
59
+ def domainName=(value)
60
+ value.gsub! 'https://', ''
61
+ value.gsub! 'http://', ''
62
+ value.gsub! 'www.', ''
63
+
64
+ @domainName = value.split('/')[0]
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,21 @@
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
+ "#{@errors[0]}. See errors collection for more information."
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,150 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'connection'
3
+ require_relative 'models/customer_verify_request'
4
+ require_relative 'models/customer_response'
5
+ require_relative 'models/customer_id_only'
6
+ require_relative 'models/customer_phone'
7
+ require_relative 'models/customer_address'
8
+ require_relative 'account'
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 :birthDate
20
+ attr_accessor :gender
21
+ attr_accessor :culture
22
+ attr_accessor :tag
23
+ attr_accessor :status
24
+ attr_accessor :createdDate
25
+ attr_accessor :taxId
26
+ attr_accessor :driversLicenseNumber
27
+ attr_accessor :driversLicenseState
28
+ attr_accessor :driversLicenseExpirationDate
29
+ attr_accessor :passportNumber
30
+ attr_accessor :passportCountry
31
+ attr_accessor :emailAddress
32
+ attr_accessor :isActive
33
+ attr_accessor :isLocked
34
+ attr_accessor :lockedDate
35
+ attr_accessor :lockedReason
36
+ attr_accessor :isSubjectToBackupWithholding
37
+ attr_accessor :isOptedInToBankCommunication
38
+ attr_accessor :isDocumentsAccepted
39
+ attr_accessor :phones
40
+ attr_accessor :addresses
41
+ attr_accessor :deceasedDate
42
+ attr_accessor :accounts
43
+ attr_accessor :externalAccounts
44
+
45
+ def from_json! json, classDefs
46
+ classDefs = classDefs || {}
47
+ classDefs['phones'] = CorePro::Models::CustomerPhone
48
+ classDefs['addresses'] = CorePro::Models::CustomerAddress
49
+ classDefs['accounts'] = CorePro::Account
50
+ classDefs['externalAccounts'] = CorePro::ExternalAccount
51
+ super json, classDefs
52
+ end
53
+
54
+ def initialize()
55
+ @phones = []
56
+ @addresses = []
57
+ @accounts = []
58
+ @externalAccount = []
59
+ end
60
+
61
+ def self.list(pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
62
+ Customer.new.list pageNumber, pageSize, connection, loggingObject
63
+ end
64
+
65
+ def list(pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
66
+ connection ||= Connection.createFromConfig()
67
+ CorePro::Utils::Requestor.get("/customer/list?pageNumber=#{pageNumber}&pageSize=#{pageSize}", Customer, connection, loggingObject)
68
+ end
69
+
70
+ def self.get(customerId, connection = nil, loggingObject = nil)
71
+ c = Customer.new
72
+ c.customerId = customerId
73
+ c.get(connection, loggingObject)
74
+ end
75
+
76
+ def get(connection = nil, loggingObject = nil)
77
+ connection ||= Connection.createFromConfig()
78
+ CorePro::Utils::Requestor.get("/customer/get/#{self.customerId}", Customer, connection, loggingObject)
79
+ end
80
+
81
+ def self.getByTag(tag, connection = nil, loggingObject = nil)
82
+ c = Customer.new
83
+ c.tag = tag
84
+ c.getByTag(connection, loggingObject)
85
+ end
86
+
87
+ def getByTag(connection = nil, loggingObject = nil)
88
+ connection ||= Connection.createFromConfig()
89
+ CorePro::Utils::Requestor.get("/customer/getByTag/#{self.tag}", Customer, connection, loggingObject)
90
+ end
91
+
92
+ 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)
93
+ c = Customer.new
94
+ c.tag = tag
95
+ c.taxId = taxId
96
+ c.passportNumber = passportNumber
97
+ c.driversLicenseNumber = driversLicenseNumber
98
+ c.birthDate = birthDate
99
+ c.emailAddress = emailAddress
100
+ c.lastName = lastName
101
+ c.firstName = firstName
102
+ c.search(pageNumber, pageSize, connection, loggingObject)
103
+ end
104
+
105
+ def search(pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
106
+ connection ||= Connection.createFromConfig()
107
+ CorePro::Utils::Requestor.post("/customer/search?pageNumber=#{pageNumber}&pageSize=#{pageSize}", Customer, self, connection, loggingObject)
108
+ end
109
+
110
+ def create(connection = nil, loggingObject = nil)
111
+ connection ||= Connection.createFromConfig()
112
+ CorePro::Utils::Requestor.post('/customer/create', Customer, self, connection, loggingObject)
113
+ end
114
+
115
+ def update(connection = nil, loggingObject = nil)
116
+ connection ||= Connection.createFromConfig()
117
+ CorePro::Utils::Requestor.post('/customer/update', CorePro::Models::CustomerIdOnly, self, connection, loggingObject)
118
+ end
119
+
120
+ def self.deactivate(customerId, connection = nil, loggingObject = nil)
121
+ c = Customer.new
122
+ c.customerId = customerId
123
+ c.deactivate(connection, loggingObject)
124
+ end
125
+
126
+ def deactivate(connection = nil, loggingObject = nil)
127
+ connection ||= Connection.createFromConfig()
128
+ CorePro::Utils::Requestor.post('/customer/deactivate', CorePro::Models::CustomerIdOnly, self, connection, loggingObject)
129
+ end
130
+
131
+ def initiate(connection = nil, loggingObject = nil)
132
+ connection ||= Connection.createFromConfig()
133
+ CorePro::Utils::Requestor.post('/customer/initiate', CorePro::Models::CustomerResponse, self, connection, loggingObject)
134
+ end
135
+
136
+ def self.verify(verificationId, answers, connection = nil, loggingObject = nil)
137
+ cvr = CorePro::Models::CustomerVerifyRequest.new
138
+ cvr.verificationId = verificationId
139
+ cvr.answers = answers
140
+ cvr.verify connection, loggingObject
141
+ end
142
+
143
+ def verify(verificationId, answers, connection = nil, loggingObject = nil)
144
+ cvr = CorePro::Models::CustomerVerifyRequest.new
145
+ cvr.verificationId = verificationId
146
+ cvr.answers = answers
147
+ cvr.verify connection, loggingObject
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,55 @@
1
+ require_relative 'models/model_base'
2
+
3
+ module CorePro
4
+ class CustomerBeneficiary < Models::ModelBase
5
+
6
+ attr_accessor :customerId
7
+ attr_accessor :customerBeneficiaryId
8
+ attr_accessor :firstName
9
+ attr_accessor :lastName
10
+ attr_accessor :birthDate
11
+ attr_accessor :taxId
12
+ attr_accessor :taxIdMasked
13
+ attr_accessor :isActive
14
+
15
+ def self.list(customerId, connection = nil, loggingObject = nil)
16
+ cb = CustomerBeneficiary.new
17
+ cb.customerId = customerId
18
+ cb.list connection, loggingObject
19
+ end
20
+
21
+ def list(connection = nil, loggingObject = nil)
22
+ connection ||= Connection.createFromConfig()
23
+ CorePro::Utils::Requestor.get("/customerbeneficiary/list/#{self.customerId}", CustomerBeneficiary, connection, loggingObject)
24
+ end
25
+
26
+ def self.get(customerId, customerBeneficiaryId, connection = nil, loggingObject = nil)
27
+ cb = CustomerBeneficiary.new
28
+ cb.customerId = customerId
29
+ cb.customerBeneficiaryId = customerBeneficiaryId
30
+ cb.get connection, loggingObject
31
+ end
32
+
33
+ def get(connection = nil, loggingObject = nil)
34
+ connection ||= Connection.createFromConfig()
35
+ CorePro::Utils::Requestor.get("/customerbeneficiary/get/#{self.customerId}/#{self.customerBeneficiaryId}", CustomerBeneficiary, connection, loggingObject)
36
+ end
37
+
38
+ def create(connection = nil, loggingObject = nil)
39
+ connection ||= Connection.createFromConfig()
40
+ CorePro::Utils::Requestor.post('/customerbeneficiary/create', CustomerBeneficiary, self, connection, loggingObject)
41
+ end
42
+
43
+ def update(connection = nil, loggingObject = nil)
44
+ connection ||= Connection.createFromConfig()
45
+ CorePro::Utils::Requestor.post('/customerbeneficiary/update', CustomerBeneficiary, self, connection, loggingObject)
46
+ end
47
+
48
+ def deactivate(connection = nil, loggingObject = nil)
49
+ connection ||= Connection.createFromConfig()
50
+ CorePro::Utils::Requestor.post('/customerbeneficiary/deactivate', CustomerBeneficiary, nil, connection, loggingObject)
51
+ true
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'models/mdoel_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 self.upload(customerId, documentType, documentName, documentContent, reasonType, connection = nil, loggingObject = nil)
15
+ cd = CustomerDocument.new
16
+ cd.customerId = customerId
17
+ cd.documentType = documentType
18
+ cd.documentName = documentName
19
+ cd.documentContent = documentContent
20
+ cd.reasonType = reasonType
21
+ cd.upload connection, loggingObject
22
+ end
23
+
24
+ def upload(connection = nil, loggingObject = nil)
25
+ # NOTE: documentContent is assumed to be raw content bytes.
26
+ # corepro API expects base64 encoded string. so we convert that here.
27
+ documentContent = Base64.encode64(documentContent)
28
+
29
+ connection ||= Connection.createFromConfig()
30
+ CorePro::Utils::Requestor.post('/customerdocument/upload', nil, self, connection, loggingObject)
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ module CorePro
4
+ class Document < Models::ModelBase
5
+
6
+ attr_accessor :bankId
7
+ attr_accessor :customerId
8
+ attr_accessor :documentId
9
+ attr_accessor :documentType
10
+ attr_accessor :culture
11
+ attr_accessor :html
12
+ attr_accessor :title
13
+ attr_accessor :downloadUrl
14
+ attr_accessor :effectiveDate
15
+ attr_accessor :expireDate
16
+
17
+ def self.list(cultureName, documentType = nil, connection = nil, loggingObject = nil)
18
+ connection ||= Connection.createFromConfig()
19
+ CorePro::Utils::Requestor.get("/document/list/#{cultureName}/#{documentType}", Document, connection, loggingObject)
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,86 @@
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
+ require_relative 'connection'
6
+
7
+ module CorePro
8
+ class ExternalAccount < Models::ModelBase
9
+
10
+ attr_accessor :customerId
11
+ attr_accessor :externalAccountId
12
+ attr_accessor :name
13
+ attr_accessor :tag
14
+ attr_accessor :nickName
15
+ attr_accessor :firstName
16
+ attr_accessor :lastName
17
+ attr_accessor :type
18
+ attr_accessor :status
19
+ attr_accessor :statusDate
20
+ attr_accessor :routingNumber
21
+ attr_accessor :routingNumberMasked
22
+ attr_accessor :accountNumber
23
+ attr_accessor :accountNumberMasked
24
+ attr_accessor :nocCode
25
+ attr_accessor :isActive
26
+ attr_accessor :lockedDate
27
+ attr_accessor :lockedReason
28
+
29
+ def self.list(customerId, connection = nil, loggingObject = nil)
30
+ connection ||= Connection.createFromConfig()
31
+ CorePro::Utils::Requestor.get("/externalaccount/list/#{customerId}", ExternalAccount, connection, loggingObject)
32
+ end
33
+
34
+ def self.get(customerId, externalAccountId, connection = nil, loggingObject = nil)
35
+ connection ||= Connection.createFromConfig()
36
+ CorePro::Utils::Requestor.get("/externalaccount/get/#{customerId}/#{externalAccountId}", ExternalAccount, connection, loggingObject)
37
+ end
38
+
39
+ def self.getByTag(customerId, tag, connection = nil, loggingObject = nil)
40
+ connection ||= Connection.createFromConfig()
41
+ CorePro::Utils::Requestor.get("/externalaccount/getByTag/#{customerId}/#{tag}", ExternalAccount, connection, loggingObject)
42
+ end
43
+
44
+ def create(connection = nil, loggingObject = nil)
45
+ connection ||= Connection.createFromConfig()
46
+ eaid = CorePro::Utils::Requestor.post('/externalaccount/create', CorePro::Models::ExternalAccountIdOnly, self, connection, loggingObject)
47
+ eaid.externalAccountId
48
+ end
49
+
50
+ def initiate(connection = nil, loggingObject = nil)
51
+ connection ||= Connection.createFromConfig()
52
+ CorePro::Utils::Requestor.post('/externalaccount/initiate', CorePro::Models::ExternalAccountIdOnly, self, connection, loggingObject)
53
+ end
54
+
55
+ def self.verify(customerId, externalAccountId, amount1, amount2, connection = nil, loggingObject = nil)
56
+ ea = ExternalAccount.new
57
+ ea.customerId = customerId
58
+ ea.externalAccountId = externalAccountId
59
+ ea.verify(amount1, amount2, connection, loggingObject)
60
+ end
61
+
62
+ def verify(amount1, amount2, connection = nil, loggingObject = nil)
63
+ connection ||= Connection.createFromConfig()
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
+ connection ||= Connection.createFromConfig()
75
+ CorePro::Utils::Requestor.post('/externalaccount/update', nil, self, connection, loggingObject)
76
+ true
77
+ end
78
+
79
+ def deactivate(connection = nil, loggingObject = nil)
80
+ connection ||= Connection.createFromConfig()
81
+ CorePro::Utils::Requestor.post('/externalaccount/deactivate', nil, self, connection, loggingObject)
82
+ true
83
+ end
84
+
85
+ end
86
+ end
@@ -0,0 +1,36 @@
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
+ documentContent = Base64.encode64(documentContent)
30
+
31
+ connection ||= Connection.createFromConfig()
32
+ CorePro::Utils::Requestor.post('/externalaccountdocument/upload', nil, self, connection, loggingObject)
33
+ end
34
+
35
+ end
36
+ end