corepro 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +16 -0
- data/.idea/.name +1 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/corepro-sdk-ruby.iml +67 -0
- data/.idea/encodings.xml +5 -0
- data/.idea/misc.xml +5 -0
- data/.idea/modules.xml +9 -0
- data/.idea/scopes/scope_settings.xml +5 -0
- data/.idea/vcs.xml +7 -0
- data/CorePro.gemspec +23 -0
- data/Gemfile +15 -0
- data/LICENSE +21 -0
- data/README.md +47 -0
- data/Rakefile +2 -0
- data/config-sample.yml +3 -0
- data/lib/CorePro/Models/account_id_only.rb +8 -0
- data/lib/CorePro/Models/api_error.rb +14 -0
- data/lib/CorePro/Models/customer_address.rb +17 -0
- data/lib/CorePro/Models/customer_answer.rb +9 -0
- data/lib/CorePro/Models/customer_id_only.rb +8 -0
- data/lib/CorePro/Models/customer_message.rb +10 -0
- data/lib/CorePro/Models/customer_phone.rb +11 -0
- data/lib/CorePro/Models/customer_question.rb +21 -0
- data/lib/CorePro/Models/customer_response.rb +27 -0
- data/lib/CorePro/Models/customer_verify_request.rb +29 -0
- data/lib/CorePro/Models/envelope.rb +37 -0
- data/lib/CorePro/Models/external_account_id_only.rb +8 -0
- data/lib/CorePro/Models/external_account_verify.rb +13 -0
- data/lib/CorePro/Models/file_content.rb +10 -0
- data/lib/CorePro/Models/json_base.rb +81 -0
- data/lib/CorePro/Models/model_base.rb +16 -0
- data/lib/CorePro/Models/program_interest_rate.rb +13 -0
- data/lib/CorePro/Models/program_limit.rb +12 -0
- data/lib/CorePro/Utils/logger.rb +9 -0
- data/lib/CorePro/Utils/requestor.rb +89 -0
- data/lib/CorePro/account.rb +74 -0
- data/lib/CorePro/account_close.rb +22 -0
- data/lib/CorePro/connection.rb +68 -0
- data/lib/CorePro/core_pro_api_exception.rb +21 -0
- data/lib/CorePro/customer.rb +150 -0
- data/lib/CorePro/customer_beneficiary.rb +55 -0
- data/lib/CorePro/customer_document.rb +34 -0
- data/lib/CorePro/document.rb +23 -0
- data/lib/CorePro/external_account.rb +86 -0
- data/lib/CorePro/external_account_document.rb +36 -0
- data/lib/CorePro/program.rb +58 -0
- data/lib/CorePro/statement.rb +28 -0
- data/lib/CorePro/transaction.rb +40 -0
- data/lib/CorePro/transfer.rb +42 -0
- data/lib/CorePro/version.rb +4 -0
- data/lib/CorePro.rb +14 -0
- data/test/account_test.rb +37 -0
- data/test/core_pro_test_base.rb +10 -0
- data/test/customer_test.rb +46 -0
- metadata +135 -0
data/.gitignore
ADDED
data/.idea/.name
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
corepro-sdk-ruby
|
data/.idea/.rakeTasks
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Settings><!--This file was automatically generated by Ruby plugin.
|
3
|
+
You are allowed to:
|
4
|
+
1. Remove rake task
|
5
|
+
2. Add existing rake tasks
|
6
|
+
To add existing rake tasks automatically delete this file and reload the project.
|
7
|
+
--><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build CorePro-0.0.1.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install CorePro-0.0.1.gem into system gems" fullCmd="install" taksId="install" /><RakeTask description="Create tag v0.0.1 and build and push CorePro-0.0.1.gem to Rubygems" fullCmd="release" taksId="release" /></RakeGroup></Settings>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
3
|
+
<component name="CompassSettings">
|
4
|
+
<option name="compassSupportEnabled" value="true" />
|
5
|
+
</component>
|
6
|
+
<component name="FacetManager">
|
7
|
+
<facet type="gem" name="Ruby Gem">
|
8
|
+
<configuration>
|
9
|
+
<option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
|
10
|
+
<option name="GEM_APP_TEST_PATH" value="$MODULE_DIR$/test" />
|
11
|
+
<option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
|
12
|
+
</configuration>
|
13
|
+
</facet>
|
14
|
+
</component>
|
15
|
+
<component name="ModuleRunConfigurationManager">
|
16
|
+
<configuration default="false" name="All tests in corepro-sdk-ruby: corepro-sdk-ruby" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true">
|
17
|
+
<predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
|
18
|
+
<module name="corepro-sdk-ruby" />
|
19
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
20
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
21
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
22
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
23
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
24
|
+
<envs>
|
25
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
26
|
+
</envs>
|
27
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
28
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
29
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov" />
|
30
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
31
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$" />
|
32
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
|
33
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/{*_test,test_*}.rb" />
|
34
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
|
35
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
|
36
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
37
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
38
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
|
39
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
|
40
|
+
<RunnerSettings RunnerId="RubyCover" />
|
41
|
+
<RunnerSettings RunnerId="RubyDebugRunner" />
|
42
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
43
|
+
<ConfigurationWrapper RunnerId="RubyCover" />
|
44
|
+
<ConfigurationWrapper RunnerId="RubyDebugRunner" />
|
45
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
46
|
+
<method />
|
47
|
+
</configuration>
|
48
|
+
</component>
|
49
|
+
<component name="NewModuleRootManager">
|
50
|
+
<content url="file://$MODULE_DIR$">
|
51
|
+
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
52
|
+
</content>
|
53
|
+
<orderEntry type="inheritedJdk" />
|
54
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
55
|
+
<orderEntry type="library" scope="PROVIDED" name="ansi (v1.4.3, ruby-1.9.3-p484) [gem]" level="application" />
|
56
|
+
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.2, ruby-1.9.3-p484) [gem]" level="application" />
|
57
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.7.0, ruby-1.9.3-p484) [gem]" level="application" />
|
58
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.4.0, ruby-1.9.3-p484) [gem]" level="application" />
|
59
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest-reporters (v1.0.5, ruby-1.9.3-p484) [gem]" level="application" />
|
60
|
+
<orderEntry type="library" scope="PROVIDED" name="power_assert (v0.1.3, ruby-1.9.3-p484) [gem]" level="application" />
|
61
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v10.3.2, ruby-1.9.3-p484) [gem]" level="application" />
|
62
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.5.1, ruby-1.9.3-p484) [gem]" level="application" />
|
63
|
+
<orderEntry type="library" scope="PROVIDED" name="test-unit (v3.0.1, ruby-1.9.3-p484) [gem]" level="application" />
|
64
|
+
<orderEntry type="library" scope="PROVIDED" name="win32console (v1.3.0, ruby-1.9.3-p484) [gem]" level="application" />
|
65
|
+
</component>
|
66
|
+
</module>
|
67
|
+
|
data/.idea/encodings.xml
ADDED
data/.idea/misc.xml
ADDED
data/.idea/modules.xml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4">
|
3
|
+
<component name="ProjectModuleManager">
|
4
|
+
<modules>
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/corepro-sdk-ruby.iml" filepath="$PROJECT_DIR$/.idea/corepro-sdk-ruby.iml" />
|
6
|
+
</modules>
|
7
|
+
</component>
|
8
|
+
</project>
|
9
|
+
|
data/.idea/vcs.xml
ADDED
data/CorePro.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'corepro/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'corepro'
|
8
|
+
spec.version = CorePro::VERSION
|
9
|
+
spec.authors = ['devsupport']
|
10
|
+
spec.email = ['devsupport@socialmoney.com']
|
11
|
+
spec.summary = %q{A Ruby SDK for consuming the corepro API.}
|
12
|
+
spec.description = %q{See http://docs.corepro.io for more detail.}
|
13
|
+
spec.homepage = 'https://github.com/socialmoney/corepro-sdk-ruby'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
23
|
+
end
|
data/Gemfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in corepro.gemspec
|
4
|
+
gemspec
|
5
|
+
|
6
|
+
# gem 'corepro'
|
7
|
+
|
8
|
+
group :test do
|
9
|
+
if RUBY_PLATFORM =~ /(win32|w32)/
|
10
|
+
gem "win32console", '1.3.0'
|
11
|
+
end
|
12
|
+
gem "minitest"
|
13
|
+
gem 'minitest-reporters', '>= 0.5.0'
|
14
|
+
gem 'test-unit'
|
15
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 socialmoney.com
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# corepro-sdk-ruby
|
2
|
+
|
3
|
+
A Ruby SDK for consuming the CorePro API
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'corepro'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install corepro
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
Use this object hierarchy as a simple entry point into CorePro. Details of the CorePro API itself are available at
|
24
|
+
https://docs.corepro.io/api. To see all available SDKs, visit https://docs.corepro.io/sdk.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
require 'corepro'
|
28
|
+
|
29
|
+
# create a connection
|
30
|
+
# (typical use case is to pull connection info from config.yml, this is for example only)
|
31
|
+
conn = CorePro::Connection.new 'your-api-key-here', 'your-api-secret-here', 'api.corepro.io'
|
32
|
+
|
33
|
+
# retrieve a customer by a known tag (pass conn as nil if connection info is in config.yml)
|
34
|
+
cust = CorePro::Customer.getByTag 'bweaver', conn
|
35
|
+
|
36
|
+
# retrieve most recent transactions for that customer's primary account
|
37
|
+
trans = CorePro::Transaction.list cust.customerId, cust.accounts[0].accountId
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
## Contributing
|
42
|
+
|
43
|
+
1. Fork it ( https://github.com/socialmoney/corepro-sdk-ruby/fork )
|
44
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
45
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
46
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
47
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/config-sample.yml
ADDED
@@ -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,21 @@
|
|
1
|
+
require_relative 'json_base'
|
2
|
+
require_relative 'customer_answer'
|
3
|
+
module CorePro
|
4
|
+
module Models
|
5
|
+
class CustomerQuestion < JsonBase
|
6
|
+
attr_accessor :answers
|
7
|
+
attr_accessor :prompt
|
8
|
+
attr_accessor :type
|
9
|
+
|
10
|
+
def from_json! json, classDefs
|
11
|
+
classDefs = classDefs || {}
|
12
|
+
classDefs['answers'] = CustomerAnswer
|
13
|
+
super json, classDefs
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@answers = []
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'model_base'
|
2
|
+
require_relative 'customer_message'
|
3
|
+
require_relative 'customer_question'
|
4
|
+
|
5
|
+
module CorePro
|
6
|
+
module Models
|
7
|
+
class CustomerResponse < ModelBase
|
8
|
+
attr_accessor :customerId
|
9
|
+
attr_accessor :messages
|
10
|
+
attr_accessor :questions
|
11
|
+
attr_accessor :verificationId
|
12
|
+
attr_accessor :verificationStatus
|
13
|
+
|
14
|
+
def from_json! json, classDefs
|
15
|
+
classDefs = classDefs || {}
|
16
|
+
classDefs['messages'] = CustomerMessage
|
17
|
+
classDefs['questions'] = CustomerQuestion
|
18
|
+
super json, classDefs
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
@messages = []
|
23
|
+
@questions = []
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'model_base'
|
2
|
+
require_relative '../utils/requestor'
|
3
|
+
require_relative 'customer_response'
|
4
|
+
require_relative 'customer_answer'
|
5
|
+
|
6
|
+
module CorePro
|
7
|
+
module Models
|
8
|
+
class CustomerVerifyRequest < ModelBase
|
9
|
+
attr_accessor :customerId
|
10
|
+
attr_accessor :verificationId
|
11
|
+
attr_accessor :answers
|
12
|
+
|
13
|
+
def from_json! json, classDefs
|
14
|
+
classDefs = classDefs || {}
|
15
|
+
classDefs['answers'] = CustomerAnswer
|
16
|
+
super json, classDefs
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@answers = []
|
21
|
+
end
|
22
|
+
|
23
|
+
def verify(connection = NIL, loggingObject = NIL)
|
24
|
+
connection = connection || Connection.createFromConfig()
|
25
|
+
CorePro::Utils::Requestor.post('/customer/verify', CustomerResponse, self, connection, loggingObject)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'model_base'
|
2
|
+
require_relative 'api_error'
|
3
|
+
|
4
|
+
module CorePro
|
5
|
+
module Models
|
6
|
+
class Envelope < ModelBase
|
7
|
+
attr_accessor :data
|
8
|
+
attr_accessor :errors
|
9
|
+
attr_accessor :status
|
10
|
+
attr_accessor :rawRequestBody
|
11
|
+
attr_accessor :rawResponseBody
|
12
|
+
|
13
|
+
def from_json! json, classDefs = {}
|
14
|
+
classDefs = classDefs || {}
|
15
|
+
classDefs['errors'] = ApiError
|
16
|
+
super json, classDefs
|
17
|
+
|
18
|
+
if classDefs.has_key?('data')
|
19
|
+
if @data.kind_of?(Array)
|
20
|
+
@data.each {|item|
|
21
|
+
if item.instance_variable_defined?('@requestId')
|
22
|
+
item.requestId = @requestId
|
23
|
+
end
|
24
|
+
}
|
25
|
+
else
|
26
|
+
if @data.instance_variable_defined?('@requestId')
|
27
|
+
@data.requestId = @requestId
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
self
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module CorePro
|
4
|
+
module Models
|
5
|
+
class JsonBase
|
6
|
+
|
7
|
+
def to_hash
|
8
|
+
hash = {}
|
9
|
+
self.instance_variables.each do |var|
|
10
|
+
val = self.instance_variable_get var
|
11
|
+
if val != nil
|
12
|
+
if val.instance_of?(Array)
|
13
|
+
arr = []
|
14
|
+
val.each do |x|
|
15
|
+
arr.push(x.to_hash)
|
16
|
+
end
|
17
|
+
hash[var.to_s.delete('@')] = arr
|
18
|
+
else
|
19
|
+
hash[var.to_s.delete('@')] = val
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
hash
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_json
|
28
|
+
hash = {}
|
29
|
+
self.instance_variables.each do |var|
|
30
|
+
val = self.instance_variable_get var
|
31
|
+
if val != nil
|
32
|
+
if val.instance_of?(String)
|
33
|
+
hash[var.to_s.delete('@')] = val
|
34
|
+
elsif val.instance_of?(Array)
|
35
|
+
# do not serialize empty arrays. no point.
|
36
|
+
if val.length > 0
|
37
|
+
arr = []
|
38
|
+
val.each do |x|
|
39
|
+
h = x.to_hash
|
40
|
+
arr.push h
|
41
|
+
end
|
42
|
+
hash[var.to_s.delete('@')] = arr
|
43
|
+
end
|
44
|
+
else
|
45
|
+
hash[var.to_s.delete('@')] = val.to_json
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
hash.to_json
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
def from_json! json, classDefs = nil
|
55
|
+
classDefs = classDefs || {}
|
56
|
+
json.each do |var, val|
|
57
|
+
# if self.instance_variable_defined?("@#{var}")
|
58
|
+
cd = nil
|
59
|
+
cd = classDefs[var] if classDefs.has_key? var
|
60
|
+
if cd == nil
|
61
|
+
self.instance_variable_set "@#{var}", val
|
62
|
+
else
|
63
|
+
if val.kind_of?(Array)
|
64
|
+
arr = []
|
65
|
+
val.each do |x|
|
66
|
+
item = cd.new
|
67
|
+
item.from_json! x, nil
|
68
|
+
arr.push item
|
69
|
+
end
|
70
|
+
self.instance_variable_set "@#{var}", arr
|
71
|
+
else
|
72
|
+
item = cd.new
|
73
|
+
item.from_json! val, nil
|
74
|
+
self.instance_variable_set "@#{var}", item
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'json_base'
|
2
|
+
module CorePro
|
3
|
+
module Models
|
4
|
+
class ModelBase < JsonBase
|
5
|
+
attr_accessor :requestId
|
6
|
+
|
7
|
+
def to_s
|
8
|
+
vars = self.instance_variables.map{|v|
|
9
|
+
"#{v}=#{instance_variable_get(v).inspect}"
|
10
|
+
}.join(", ")
|
11
|
+
"<#{self.class}: #{vars}>"
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|