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,58 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ require_relative 'models/program_interest_rate'
4
+ require_relative 'models/program_limit'
5
+
6
+ module CorePro
7
+ class Program < Models::ModelBase
8
+
9
+ attr_accessor :name
10
+ attr_accessor :verificationType
11
+ attr_accessor :timeZone
12
+ attr_accessor :regDFeeAmount
13
+ attr_accessor :regDMonthlyTransactionWithdrawCountMax
14
+ attr_accessor :perTransactionWithdrawLimit
15
+ attr_accessor :perUserDailyWithdrawLimit
16
+ attr_accessor :perUserMonthlyWithdrawLimit
17
+ attr_accessor :perProgramDailyWithdrawLimit
18
+ attr_accessor :perTransactionDepositLimit
19
+ attr_accessor :perUserDailyDepositLimit
20
+ attr_accessor :perUserMonthlyDepositLimit
21
+ attr_accessor :perProgramDailyDepositLimit
22
+ attr_accessor :website
23
+ attr_accessor :isInternalToInternalTransferEnabled
24
+ attr_accessor :decimalCount
25
+ attr_accessor :isInterestEnabled
26
+ attr_accessor :allowedAccountType
27
+ attr_accessor :isRecurringContributionEnabled
28
+ attr_accessor :interestRates
29
+ attr_accessor :filledDate
30
+
31
+ def initialize
32
+ super
33
+ @interestRates = []
34
+ end
35
+
36
+ def from_json! json, classDefs
37
+ classDefs = classDefs || {}
38
+ classDefs['interestRates'] = CorePro::Models::ProgramInterestRate
39
+ classDefs['perTransactionWithdrawLimit'] = CorePro::Models::ProgramLimit
40
+ classDefs['perUserDailyWithdrawLimit'] = CorePro::Models::ProgramLimit
41
+ classDefs['perUserMonthlyWithdrawLimit'] = CorePro::Models::ProgramLimit
42
+ classDefs['perProgramDailyWithdrawLimit'] = CorePro::Models::ProgramLimit
43
+
44
+ classDefs['perTransactionDepositLimit'] = CorePro::Models::ProgramLimit
45
+ classDefs['perUserDailyDepositLimit'] = CorePro::Models::ProgramLimit
46
+ classDefs['perUserMonthlyDepositLimit'] = CorePro::Models::ProgramLimit
47
+ classDefs['perProgramDailyDepositLimit'] = CorePro::Models::ProgramLimit
48
+
49
+ super json, classDefs
50
+ end
51
+
52
+ def self.get(connection = nil, loggingObject = nil)
53
+ connection ||= Connection.createFromConfig()
54
+ CorePro::Utils::Requestor.get("/program/get", Program, connection, loggingObject)
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,28 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+ require_relative 'models/file_content'
4
+
5
+ module CorePro
6
+ class Statement < Models::ModelBase
7
+ attr_accessor :statementId
8
+ attr_accessor :customerId
9
+ attr_accessor :type
10
+ attr_accessor :month
11
+ attr_accessor :year
12
+
13
+ def self.list(customerId, connection = nil, loggingObject = nil)
14
+ connection ||= Connection.createFromConfig()
15
+ CorePro::Utils::Requestor.get("/statement/list/#{customerId}", Statement, connection, loggingObject)
16
+ end
17
+
18
+ def self.get(customerId, statementId, connection = nil, loggingObject = nil)
19
+ connection ||= Connection.createFromConfig()
20
+ CorePro::Utils::Requestor.get("/statement/get/#{customerId}/#{statementId}", Statement, connection, loggingObject)
21
+ end
22
+
23
+ def self.download(customerId, statementId, connection = nil, loggingObject = nil)
24
+ connection ||= Connection.createFromConfig()
25
+ CorePro::Utils::Requestor.get("/statement/download/#{customerId}/#{statementId}", CorePro::Models::FileContent, connection, loggingObject)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'models/model_base'
2
+ require_relative 'utils/requestor'
3
+
4
+ module CorePro
5
+ class Transaction < Models::ModelBase
6
+ attr_accessor :transactionCount
7
+ attr_accessor :customerId
8
+ attr_accessor :transactionId
9
+ attr_accessor :tag
10
+ attr_accessor :createdDate
11
+ attr_accessor :type
12
+ attr_accessor :typeCode
13
+ attr_accessor :status
14
+ attr_accessor :amount
15
+ attr_accessor :settledDate
16
+ attr_accessor :voidedDate
17
+ attr_accessor :nachaDescription
18
+ attr_accessor :friendlyDescription
19
+ attr_accessor :availableDate
20
+ attr_accessor :returnCode
21
+ attr_accessor :isCredit
22
+
23
+ def self.list(customerId, accountId, status = nil, beginDate = nil, endDate = nil, pageNumber = 0, pageSize = 200, connection = nil, loggingObject = nil)
24
+ connection ||= Connection.createFromConfig()
25
+ start = beginDate.kind_of?(Date) ? beginDate.strftime('%Y-%m-%d') : (beginDate.kind_of?(String) ? beginDate[0..9] : nil)
26
+ finish = endDate.kind_of?(Date) ? endDate.strftime('%Y-%m-%d') : (endDate.kind_of?(String) ? endDate[0..9] : nil)
27
+
28
+ start ||= ''
29
+ finish ||= ''
30
+
31
+ if finish != '' && start == ''
32
+ start = '1900-01-01'
33
+ end
34
+
35
+ CorePro::Utils::Requestor.get("/transaction/list/#{customerId}/#{accountId}/#{status}/#{start}/#{finish}?pageNumber=#{pageNumber}&pageSize=#{pageSize}", Transaction, connection, loggingObject)
36
+ end
37
+
38
+
39
+ end
40
+ end
@@ -0,0 +1,42 @@
1
+ require_relative 'models/model'
2
+ require_relative 'utils/requestor'
3
+
4
+ module CorePro
5
+ class Transfer < Models::ModelBase
6
+
7
+ attr_accessor :customerId
8
+ attr_accessor :fromId
9
+ attr_accessor :toId
10
+ attr_accessor :amount
11
+ attr_accessor :tag
12
+ attr_accessor :transactionId
13
+
14
+ def self.create(customerId, fromId, toId, amount, tag, connection = nil, loggingObject = nil)
15
+ t = Transfer.new
16
+ t.customerId = customerId
17
+ t.fromId = fromId
18
+ t.toId = toId
19
+ t.amount = amount
20
+ t.tag = tag
21
+ t.create connection, loggingObject
22
+ end
23
+
24
+ def create(connection = nil, loggingObject = nil)
25
+ connection ||= Connection.createFromConfig()
26
+ CorePro::Utils::Requestor.post('/transfer/create', Transfer, self, connection, loggingObject)
27
+ end
28
+
29
+ def self.void(customerId, transactionId, tag, connection = nil, loggingObject = nil)
30
+ t = Transfer.new
31
+ t.customerId = customerId
32
+ t.transactionId = transactionId
33
+ t.tag = tag
34
+ t.void connection, loggingObject
35
+ end
36
+
37
+ def void(connection = nil, loggingObject = nil)
38
+ connection ||= Connection.createFromConfig()
39
+ CorePro::Utils::Requestor.post('/transfer/void', Transfer, self, connection, loggingObject)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/ruby -w
2
+ module CorePro
3
+ VERSION = '0.0.4'
4
+ end
data/lib/CorePro.rb ADDED
@@ -0,0 +1,14 @@
1
+ require_relative 'corepro/connection'
2
+ require_relative 'corepro/account'
3
+ require_relative 'corepro/account_close'
4
+ require_relative 'corepro/core_pro_api_exception'
5
+ require_relative 'corepro/customer'
6
+ require_relative 'corepro/customer_beneficiary'
7
+ require_relative 'corepro/customer_document'
8
+ require_relative 'corepro/document'
9
+ require_relative 'corepro/external_account'
10
+ require_relative 'corepro/external_account_document'
11
+ require_relative 'corepro/program'
12
+ require_relative 'corepro/statement'
13
+ require_relative 'corepro/transaction'
14
+ require_relative 'corepro/transfer'
@@ -0,0 +1,37 @@
1
+ require_relative '../test/core_pro_test_base'
2
+ require_relative "../lib/CorePro/account"
3
+ require_relative "../lib/CorePro/external_account"
4
+ require_relative "../lib/CorePro/core_pro_api_exception"
5
+ require_relative '../lib/CorePro/connection'
6
+
7
+ class AccountTest # < CoreProTestBase
8
+
9
+ def test_list
10
+ accounts = CorePro::Account.list(@@customerId, @@conn, NIL)
11
+ accounts.each{ |a|
12
+ puts a
13
+ }
14
+ assert_equal 1, accounts.length
15
+ end
16
+
17
+ def test_get
18
+ a = CorePro::Account.get(@@customerId, @@accountId, @@conn, NIL)
19
+ puts a
20
+ assert_equal '101686', a.accountNumber
21
+ end
22
+
23
+ def test_update
24
+ a = CorePro::Account.get(@@customerId, @@accountId, @@conn, NIL)
25
+ a.name = "Testing ruby sdk #{Time.new.inspect}"
26
+ begin
27
+ assert_true a.update(@@conn, NIL)
28
+
29
+ rescue CorePro::CoreProApiException => cpaex
30
+ puts cpaex.to_s
31
+ raise
32
+ rescue Exception => ex
33
+ puts ex.to_s
34
+ raise
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,10 @@
1
+ require "test/unit"
2
+ require_relative "../lib/CorePro/connection"
3
+
4
+ class CoreProTestBase < Test::Unit::TestCase
5
+
6
+ @@customerId = 485
7
+ @@accountId = 486
8
+ @@conn = CorePro::Connection.createFromConfig()
9
+
10
+ end
@@ -0,0 +1,46 @@
1
+ require_relative "../test/core_pro_test_base"
2
+ require_relative "../lib/CorePro/customer"
3
+ require_relative "../lib/CorePro/connection"
4
+ require_relative "../lib/CorePro/core_pro_api_exception"
5
+
6
+ class CustomerTest < CoreProTestBase
7
+
8
+
9
+ def test_get
10
+ puts 'test_get'
11
+ c = CorePro::Customer.get @@customerId, @@conn, nil
12
+ puts c
13
+ end
14
+
15
+ def test_getByTag
16
+ puts 'test_getByTag'
17
+ c = CorePro::Customer.getByTag 'jsmith123abc'
18
+ puts c
19
+ end
20
+
21
+ def test_search
22
+ puts 'test_search'
23
+ cs = CorePro::Customer.search nil, lastName = 'Smith'
24
+ cs.each do | x |
25
+ puts x
26
+ end
27
+ end
28
+
29
+ def test_list
30
+ puts 'test_list'
31
+ cs = CorePro::Customer.list 0, 15, @@conn, nil
32
+ cs.each do |x|
33
+ puts x
34
+ end
35
+ end
36
+
37
+ def test_update
38
+ c = CorePro::Customer.get @@customerId, @@conn, nil
39
+ puts "test_update. orig gender = #{c.gender}"
40
+ c.gender = c.gender == 'M' ? 'F' : 'M'
41
+ c.update @@conn
42
+ c = CorePro::Customer.get @@customerId, @@conn, nil
43
+ puts "test_update. new gender = #{c.gender}"
44
+ end
45
+
46
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: corepro
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - devsupport
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-08-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.6'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.6'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '10.0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '10.0'
46
+ description: See http://docs.corepro.io for more detail.
47
+ email:
48
+ - devsupport@socialmoney.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - .idea/.name
55
+ - .idea/.rakeTasks
56
+ - .idea/corepro-sdk-ruby.iml
57
+ - .idea/encodings.xml
58
+ - .idea/misc.xml
59
+ - .idea/modules.xml
60
+ - .idea/scopes/scope_settings.xml
61
+ - .idea/vcs.xml
62
+ - CorePro.gemspec
63
+ - Gemfile
64
+ - LICENSE
65
+ - README.md
66
+ - Rakefile
67
+ - config-sample.yml
68
+ - lib/CorePro.rb
69
+ - lib/CorePro/Models/account_id_only.rb
70
+ - lib/CorePro/Models/api_error.rb
71
+ - lib/CorePro/Models/customer_address.rb
72
+ - lib/CorePro/Models/customer_answer.rb
73
+ - lib/CorePro/Models/customer_id_only.rb
74
+ - lib/CorePro/Models/customer_message.rb
75
+ - lib/CorePro/Models/customer_phone.rb
76
+ - lib/CorePro/Models/customer_question.rb
77
+ - lib/CorePro/Models/customer_response.rb
78
+ - lib/CorePro/Models/customer_verify_request.rb
79
+ - lib/CorePro/Models/envelope.rb
80
+ - lib/CorePro/Models/external_account_id_only.rb
81
+ - lib/CorePro/Models/external_account_verify.rb
82
+ - lib/CorePro/Models/file_content.rb
83
+ - lib/CorePro/Models/json_base.rb
84
+ - lib/CorePro/Models/model_base.rb
85
+ - lib/CorePro/Models/program_interest_rate.rb
86
+ - lib/CorePro/Models/program_limit.rb
87
+ - lib/CorePro/Utils/logger.rb
88
+ - lib/CorePro/Utils/requestor.rb
89
+ - lib/CorePro/account.rb
90
+ - lib/CorePro/account_close.rb
91
+ - lib/CorePro/connection.rb
92
+ - lib/CorePro/core_pro_api_exception.rb
93
+ - lib/CorePro/customer.rb
94
+ - lib/CorePro/customer_beneficiary.rb
95
+ - lib/CorePro/customer_document.rb
96
+ - lib/CorePro/document.rb
97
+ - lib/CorePro/external_account.rb
98
+ - lib/CorePro/external_account_document.rb
99
+ - lib/CorePro/program.rb
100
+ - lib/CorePro/statement.rb
101
+ - lib/CorePro/transaction.rb
102
+ - lib/CorePro/transfer.rb
103
+ - lib/CorePro/version.rb
104
+ - test/account_test.rb
105
+ - test/core_pro_test_base.rb
106
+ - test/customer_test.rb
107
+ homepage: https://github.com/socialmoney/corepro-sdk-ruby
108
+ licenses:
109
+ - MIT
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 1.8.28
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: A Ruby SDK for consuming the corepro API.
132
+ test_files:
133
+ - test/account_test.rb
134
+ - test/core_pro_test_base.rb
135
+ - test/customer_test.rb