finapps 5.0.31 → 5.0.36

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yaml +37 -0
  3. data/.rubocop.yml +139 -59
  4. data/.rubocop_todo.yml +29 -0
  5. data/.tmuxinator.yml +1 -0
  6. data/.travis.yml +3 -1
  7. data/README.md +1 -0
  8. data/RELEASES.md +29 -0
  9. data/finapps.gemspec +4 -4
  10. data/lib/finapps.rb +2 -0
  11. data/lib/finapps/rest/alert_definitions.rb +1 -1
  12. data/lib/finapps/rest/alert_occurrences.rb +1 -1
  13. data/lib/finapps/rest/client.rb +8 -5
  14. data/lib/finapps/rest/consumers.rb +10 -5
  15. data/lib/finapps/rest/consumers_portfolios.rb +1 -1
  16. data/lib/finapps/rest/documents_orders.rb +30 -26
  17. data/lib/finapps/rest/documents_upload_types.rb +11 -0
  18. data/lib/finapps/rest/documents_uploads.rb +23 -0
  19. data/lib/finapps/rest/operators.rb +5 -5
  20. data/lib/finapps/rest/operators_password_resets.rb +1 -1
  21. data/lib/finapps/rest/order_assignments.rb +1 -1
  22. data/lib/finapps/rest/order_reports.rb +1 -1
  23. data/lib/finapps/rest/orders.rb +33 -22
  24. data/lib/finapps/rest/plaid/plaid_consumer_institutions.rb +1 -1
  25. data/lib/finapps/rest/portfolio_reports.rb +1 -1
  26. data/lib/finapps/rest/portfolios.rb +1 -1
  27. data/lib/finapps/rest/portfolios_available_consumers.rb +1 -1
  28. data/lib/finapps/rest/portfolios_consumers.rb +1 -1
  29. data/lib/finapps/rest/sessions.rb +11 -9
  30. data/lib/finapps/rest/signed_documents_downloads.rb +3 -1
  31. data/lib/finapps/utils/query_builder.rb +13 -4
  32. data/lib/finapps/version.rb +1 -1
  33. data/spec/rest/alert_definitions_spec.rb +10 -6
  34. data/spec/rest/alert_occurrences_spec.rb +6 -1
  35. data/spec/rest/api_request.rb +1 -0
  36. data/spec/rest/client_spec.rb +33 -41
  37. data/spec/rest/consumers_portfolios_spec.rb +7 -2
  38. data/spec/rest/consumers_spec.rb +236 -207
  39. data/spec/rest/documents_orders_notifications_spec.rb +4 -2
  40. data/spec/rest/documents_orders_spec.rb +85 -23
  41. data/spec/rest/documents_upload_types_spec.rb +21 -0
  42. data/spec/rest/documents_uploads_spec.rb +104 -0
  43. data/spec/rest/esign_templates_spec.rb +2 -1
  44. data/spec/rest/operators_password_resets_spec.rb +50 -52
  45. data/spec/rest/operators_spec.rb +181 -172
  46. data/spec/rest/order_assignments_spec.rb +6 -1
  47. data/spec/rest/order_notifications_spec.rb +4 -2
  48. data/spec/rest/order_refreshes_spec.rb +8 -5
  49. data/spec/rest/order_reports_spec.rb +21 -15
  50. data/spec/rest/order_statuses_spec.rb +14 -10
  51. data/spec/rest/order_tokens_spec.rb +37 -30
  52. data/spec/rest/orders_spec.rb +121 -73
  53. data/spec/rest/password_resets_spec.rb +46 -36
  54. data/spec/rest/plaid/plaid_account_permissions_spec.rb +5 -4
  55. data/spec/rest/plaid/plaid_accounts_spec.rb +9 -4
  56. data/spec/rest/plaid/plaid_consumer_institutions_spec.rb +11 -11
  57. data/spec/rest/plaid/plaid_institution_logos_spec.rb +1 -1
  58. data/spec/rest/plaid/plaid_webhooks_spec.rb +3 -1
  59. data/spec/rest/portfolio_reports_spec.rb +7 -2
  60. data/spec/rest/portfolios_alerts_spec.rb +9 -4
  61. data/spec/rest/portfolios_available_consumers_spec.rb +7 -2
  62. data/spec/rest/portfolios_consumers_spec.rb +15 -4
  63. data/spec/rest/portfolios_spec.rb +20 -17
  64. data/spec/rest/products_spec.rb +17 -14
  65. data/spec/rest/sessions_spec.rb +63 -58
  66. data/spec/rest/signed_documents_downloads_spec.rb +10 -6
  67. data/spec/rest/tenant_app_settings_spec.rb +9 -3
  68. data/spec/rest/tenant_settings_spec.rb +9 -3
  69. data/spec/rest/verix/verix_documents_spec.rb +15 -22
  70. data/spec/rest/verix/verix_metadata_spec.rb +1 -1
  71. data/spec/rest/verix/verix_pdf_documents_spec.rb +14 -19
  72. data/spec/rest/verix/verix_records_spec.rb +31 -10
  73. data/spec/rest/version_spec.rb +6 -4
  74. data/spec/spec_helper.rb +2 -2
  75. data/spec/support/fake_api.rb +24 -3
  76. data/spec/support/fixtures/documents_orders_none.json +6 -0
  77. data/spec/support/fixtures/upload_types.json +9 -0
  78. data/spec/utils/query_builder_spec.rb +40 -14
  79. metadata +26 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9245578f87d01b1010faa9e0f1d426873a24c86f860e83883027b966ba5ac129
4
- data.tar.gz: d2b313cbdddb91c8645684727f91b1b7359becbcad1678758a604e43c4e0587c
3
+ metadata.gz: d502756b01180a324db1ab9e232bd71810d1e9f950bcaf9f47df667c3bd2d7ed
4
+ data.tar.gz: b1a9723d9944b250ff1d57917e66c903647929b3161ecb718dde62b9804f7d36
5
5
  SHA512:
6
- metadata.gz: 46be47b08a87fa355fe54b4db658074496561a6cf0f95c32a239f9b7164159b2aa13ce3a9a8030c5050c30086534212e0d947e88875e686a51edaf197d69c47d
7
- data.tar.gz: afa0a48469d1538cc2af130a61d5765c4f7dd3e72c24a2c624a20d28f6436d16074b8e73bb25f68c4751946ea1b062b2438309173857ebbe1a314b18948ff874
6
+ metadata.gz: 643b7f796405c8d6d06f2f414098b23f4295627702c03d119599827f8977866c8ffc8f62ab7b60330ae679ef35be0247440d16f938686c75f1426be3fec3a068
7
+ data.tar.gz: cb58c991c8b188221f9900d057e03d2394eaa7baaf712edf4f1f029a722436afe2e424e4562176778e00d294d9ebaac609ab7d578d57110162889e5b56a9ed2a
@@ -0,0 +1,37 @@
1
+ name: Main
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ ci:
7
+ runs-on: ubuntu-latest
8
+
9
+ strategy:
10
+ fail-fast: true
11
+
12
+ steps:
13
+ - uses: actions/checkout@v1
14
+
15
+ - name: Use Ruby 2.6
16
+ uses: actions/setup-ruby@v1
17
+ with:
18
+ ruby-version: '2.6'
19
+
20
+ - uses: actions/cache@v1
21
+ with:
22
+ path: vendor/bundle
23
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
24
+ restore-keys: |
25
+ ${{ runner.os }}-gems-
26
+
27
+ - name: Install gems
28
+ run: |
29
+ gem install bundler
30
+ bundle config path vendor/bundle
31
+ bundle install --jobs 4 --retry 3
32
+
33
+ - name: Run rubocop
34
+ run: bundle exec rubocop
35
+
36
+ - name: Run tests
37
+ run: bundle exec rspec
@@ -1,26 +1,60 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require:
4
+ - rubocop-rspec
5
+ - rubocop-performance
6
+
1
7
  AllCops:
2
- DisplayCopNames: true
8
+ TargetRubyVersion: 2.6
3
9
  Exclude:
4
- - "finapps.gemspec"
5
- UseCache: false
10
+ - "vendor/**/*"
11
+ - "bin/**/*"
12
+ CacheRootDirectory: tmp
13
+ NewCops: enable
6
14
 
7
- # Commonly used screens these days easily fit more than 80 characters.
15
+ Layout/SpaceAroundMethodCallOperator:
16
+ Enabled: true
17
+ Layout/EmptyLinesAroundAttributeAccessor:
18
+ Enabled: true
19
+ Layout/SpaceInsideBlockBraces:
20
+ # The space here provides no real gain in readability while consuming
21
+ # horizontal space that could be used for a better parameter name.
22
+ # Also {| differentiates better from a hash than { | does.
23
+ SpaceBeforeBlockParameters: false
24
+ Layout/SpaceInsideHashLiteralBraces:
25
+ EnforcedStyle: no_space
26
+ Layout/DotPosition:
27
+ Description: Checks the position of the dot in multi-line method calls.
28
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
29
+ Enabled: true
30
+ EnforcedStyle: leading
31
+ SupportedStyles:
32
+ - leading
33
+ - trailing
8
34
  Layout/LineLength:
9
- Max: 120
35
+ Max: 110
10
36
 
11
- Style/CollectionMethods:
12
- Description: Preferred collection methods.
13
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
37
+ Lint/DeprecatedOpenSSLConstant:
14
38
  Enabled: true
15
- PreferredMethods:
16
- collect: map
17
- collect!: map!
18
- find: detect
19
- find_all: select
20
- reduce: inject
21
- Style/OptionHash:
22
- Description: Don't use option hashes when you can use keyword arguments.
23
- Enabled: false
39
+ Lint/MixedRegexpCaptureTypes:
40
+ Enabled: true
41
+ Lint/RaiseException:
42
+ Enabled: true
43
+ Lint/StructNewOverride:
44
+ Enabled: true
45
+
46
+ Metrics/ClassLength:
47
+ Exclude:
48
+ - app/controllers/orders_controller.rb
49
+ - app/models/order.rb
50
+ Metrics/BlockLength:
51
+ ExcludedMethods: ['describe', 'context']
52
+ Exclude:
53
+ - config/environments/**/**
54
+ - Guardfile
55
+ - config/routes.rb
56
+ - config/Guardfile
57
+
24
58
  Naming/PredicateName:
25
59
  Description: Check the names of predicate methods.
26
60
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
@@ -33,54 +67,100 @@ Naming/PredicateName:
33
67
  - is_
34
68
  Exclude:
35
69
  - spec/**/*
36
- Metrics/AbcSize:
37
- Description: A calculated magnitude based on number of assignments, branches, and
38
- conditions.
39
- Enabled: false
40
- Max: 15
41
- Metrics/BlockLength:
42
- ExcludedMethods: ['describe', 'context']
43
- Metrics/ClassLength:
44
- Description: Avoid classes longer than 100 lines of code.
45
- Enabled: false
46
- CountComments: false
47
- Max: 100
48
- Metrics/ModuleLength:
49
- CountComments: false
50
- Max: 100
51
- Description: Avoid modules longer than 100 lines of code.
52
- Enabled: false
53
- Metrics/CyclomaticComplexity:
54
- Description: A complexity metric that is strongly correlated to the number of test
55
- cases needed to validate a method.
70
+
71
+ RSpec/FilePath:
56
72
  Enabled: false
57
- Max: 6
58
- Metrics/MethodLength:
59
- Description: Avoid methods longer than 10 lines of code.
60
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
73
+ Gemspec/RequiredRubyVersion:
61
74
  Enabled: false
62
- CountComments: false
63
- Max: 10
64
- Metrics/ParameterLists:
65
- Description: Avoid parameter lists longer than three or four parameters.
66
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
75
+
76
+ Style/RedundantRegexpCharacterClass:
77
+ Enabled: true
78
+ Style/RedundantRegexpEscape:
79
+ Enabled: true
80
+ Style/CollectionMethods:
81
+ Description: Preferred collection methods.
82
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
83
+ Enabled: true
84
+ PreferredMethods:
85
+ collect: map
86
+ collect!: map!
87
+ find: detect
88
+ find_all: select
89
+ reduce: inject
90
+ Style/GuardClause:
91
+ Description: Check for conditionals that can be replaced with guard clauses
92
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
93
+ Enabled: true
94
+ MinBodyLength: 1
95
+ Style/OptionHash:
96
+ Description: Don't use option hashes when you can use keyword arguments.
67
97
  Enabled: false
68
- Max: 5
69
- CountKeywordArgs: true
70
- Metrics/PerceivedComplexity:
71
- Description: A complexity metric geared towards measuring complexity for a human
72
- reader.
98
+ Style/PercentLiteralDelimiters:
99
+ Description: Use `%`-literal delimiters consistently
100
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
73
101
  Enabled: false
74
- Max: 7
102
+ PreferredDelimiters:
103
+ "%": "()"
104
+ "%i": "()"
105
+ "%q": "()"
106
+ "%Q": "()"
107
+ "%r": "{}"
108
+ "%s": "()"
109
+ "%w": "()"
110
+ "%W": "()"
111
+ "%x": "()"
112
+ Style/SignalException:
113
+ Description: Checks for proper usage of fail and raise.
114
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
115
+ Enabled: true
116
+ EnforcedStyle: semantic
117
+ SupportedStyles:
118
+ - only_raise
119
+ - only_fail
120
+ - semantic
121
+ Style/StringLiterals:
122
+ Description: Checks if uses of quotes match the configured preference.
123
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
124
+ Enabled: true
125
+ EnforcedStyle: single_quotes
126
+ SupportedStyles:
127
+ - single_quotes
128
+ - double_quotes
129
+ Style/StringLiteralsInInterpolation:
130
+ Description: Checks if uses of quotes inside expressions in interpolated strings
131
+ match the configured preference.
132
+ Enabled: true
133
+ EnforcedStyle: single_quotes
134
+ SupportedStyles:
135
+ - single_quotes
136
+ - double_quotes
75
137
  Style/Documentation:
76
138
  Description: Document classes and non-namespace modules.
77
139
  Enabled: false
78
- Style/EmptyLiteral:
79
- Description: Prefer literals to Array.new/Hash.new/String.new.
80
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
140
+ Style/OneLineConditional:
141
+ Description: Favor the ternary operator(?:) over if/then/else/end constructs.
142
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
81
143
  Enabled: false
82
- Style/VariableInterpolation:
83
- Description: Don't interpolate global, instance and class variables directly in
84
- strings.
85
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
144
+ Style/ExponentialNotation:
145
+ Enabled: true
146
+ Style/HashEachMethods:
147
+ Enabled: true
148
+ Style/HashTransformKeys:
149
+ Enabled: true
150
+ Style/HashTransformValues:
151
+ Enabled: true
152
+ Style/RedundantFetchBlock:
153
+ Enabled: true
154
+ Style/SlicingWithRange:
155
+ Enabled: true
156
+ Style/OptionalBooleanParameter:
157
+ Enabled: false
158
+ Style/StringConcatenation:
86
159
  Enabled: false
160
+
161
+ RSpec/NestedGroups:
162
+ Max: 5
163
+ RSpec/DescribeClass:
164
+ Exclude:
165
+ - spec/system/*
166
+ - spec/factories_spec.rb
@@ -0,0 +1,29 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2020-06-24 14:28:46 UTC using RuboCop version 0.86.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Configuration parameters: CountComments, ExcludedMethods.
11
+ # ExcludedMethods: refine
12
+ # finapps.gemspec - leaving as is intentionally
13
+ Metrics/BlockLength:
14
+ Max: 28
15
+
16
+ # Offense count: 1
17
+ # Configuration parameters: CountComments.
18
+ # fake_api.rb - leaving as is intentionally
19
+ Metrics/ClassLength:
20
+ Max: 442
21
+
22
+ # Offense count: 5
23
+ # Configuration parameters: Max.
24
+ # Leaving as is intentionally - url being tested takes up as many lines
25
+ RSpec/ExampleLength:
26
+ Exclude:
27
+ - 'spec/rest/consumers_spec.rb'
28
+ - 'spec/rest/documents_orders_spec.rb'
29
+ - 'spec/rest/orders_spec.rb'
@@ -11,6 +11,7 @@ windows:
11
11
  - git pull
12
12
  - git status
13
13
  - bundle
14
+ - bundle outdated
14
15
  -
15
16
  guard:
16
17
  layout: even-horizontal
@@ -1,5 +1,7 @@
1
- sudo: false
2
1
  language: ruby
2
+ os: ["linux"]
3
+ dist: "xenial"
4
+
3
5
  cache:
4
6
  bundler: true
5
7
 
data/README.md CHANGED
@@ -3,6 +3,7 @@ FinApps Ruby-Client
3
3
  ===================
4
4
 
5
5
  [![Gem Version](https://img.shields.io/gem/v/finapps.svg)](https://rubygems.org/gems/finapps)
6
+ ![Main](https://github.com/finapps/ruby-client/workflows/Main/badge.svg)
6
7
  [![Build Status](https://travis-ci.org/finapps/ruby-client.svg?branch=master)](https://travis-ci.org/finapps/ruby-client)
7
8
  [![Code Climate](https://codeclimate.com/github/finapps/ruby-client/badges/gpa.svg)](https://codeclimate.com/github/finapps/ruby-client)
8
9
  [![Test Coverage](https://codeclimate.com/github/finapps/ruby-client/badges/coverage.svg)](https://codeclimate.com/github/finapps/ruby-client/coverage)
@@ -1,3 +1,32 @@
1
+ ## [5.0.36] - 2020-08-05
2
+
3
+ ### Changed
4
+ * Add upload endpoints to support dashboard ([#309][i309])
5
+
6
+ [i309]: https://github.com/finapps/tenant-dashboard-react/issues/309
7
+
8
+ [5.0.36]: https://github.com/finapps/ruby-client/compare/5.0.35...5.0.36
9
+
10
+ ## [5.0.35] - 2020-07-09
11
+
12
+ ### Changed
13
+ * Change code to match rubocop suggestions ([#232][i232])
14
+ * Add support for first name order search with space ([#404][i404])
15
+
16
+ [i232]: https://github.com/finapps/ruby-client/issues/232
17
+ [i404]: https://github.com/finapps/tenant-dashboard-react/issues/404
18
+
19
+ [5.0.35]: https://github.com/finapps/ruby-client/compare/5.0.34...5.0.35
20
+
21
+ ## [5.0.32] - 2020-06-11
22
+
23
+ ### Fixed
24
+ * Argument error resulting from space search ([#225][i225])
25
+
26
+ [i225]: https://github.com/finapps/ruby-client/issues/225
27
+
28
+ [5.0.32]: https://github.com/finapps/ruby-client/compare/5.0.31...5.0.32
29
+
1
30
  ## [5.0.31] - 2020-06-11
2
31
 
3
32
  ### Changed
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = Dir['spec/**/*.rb']
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_runtime_dependency 'finapps_core', '~> 5.0', '>= 5.0.7'
23
+ spec.add_runtime_dependency 'finapps_core', '~> 5.0', '>= 5.0.10'
24
24
 
25
25
  spec.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.2'
26
26
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0', '>= 1.0.9'
@@ -29,9 +29,9 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'guard-rspec', '~> 4.7', '>= 4.7.3'
30
30
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
31
31
  spec.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
32
- spec.add_development_dependency 'rubocop', '~> 0.79', '>= 0.79.0'
33
- spec.add_development_dependency 'rubocop-performance', '~> 1.5', '>= 1.5.2'
34
- spec.add_development_dependency 'rubocop-rspec', '~> 1.37', '>= 1.37.1'
32
+ spec.add_development_dependency 'rubocop', '~> 0.86', '>= 0.86.0'
33
+ spec.add_development_dependency 'rubocop-performance', '~> 1.6', '>= 1.6.1'
34
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.40', '>= 1.40.0'
35
35
  spec.add_development_dependency 'sinatra', '~> 2.0', '>= 2.0.8'
36
36
  spec.add_development_dependency 'webmock', '~> 3.8', '>= 3.8.0'
37
37
 
@@ -30,7 +30,9 @@ require 'finapps/rest/portfolios_consumers'
30
30
  require 'finapps/rest/consumers_portfolios'
31
31
  require 'finapps/rest/portfolio_reports'
32
32
  require 'finapps/rest/documents_orders'
33
+ require 'finapps/rest/documents_uploads'
33
34
  require 'finapps/rest/esign_templates'
35
+ require 'finapps/rest/documents_upload_types'
34
36
  require 'finapps/rest/signed_documents_downloads'
35
37
  require 'finapps/rest/documents_orders_notifications'
36
38
 
@@ -8,7 +8,7 @@ module FinApps
8
8
 
9
9
  def list(params = nil)
10
10
  return super END_POINT if params.nil?
11
- raise FinAppsCore::InvalidArgumentsError, 'Invalid argument: params' unless params.is_a? Hash
11
+ fail FinAppsCore::InvalidArgumentsError, 'Invalid argument: params' unless params.is_a? Hash
12
12
 
13
13
  super build_query_path(END_POINT, params)
14
14
  end
@@ -8,7 +8,7 @@ module FinApps
8
8
 
9
9
  def list(params = nil)
10
10
  return super END_POINT if params.nil?
11
- raise FinAppsCore::InvalidArgumentsError, 'Invalid argument: params' unless params.is_a? Hash
11
+ fail FinAppsCore::InvalidArgumentsError, 'Invalid argument: params' unless params.is_a? Hash
12
12
 
13
13
  super build_query_path(END_POINT, params)
14
14
  end
@@ -13,6 +13,8 @@ module FinApps
13
13
  consumers_portfolios
14
14
  documents_orders
15
15
  documents_orders_notifications
16
+ documents_upload_types
17
+ documents_uploads
16
18
  esign_templates
17
19
  orders
18
20
  order_assignments
@@ -60,17 +62,18 @@ module FinApps
60
62
  if RESOURCES.include? symbol
61
63
  class_name = camelize(symbol.to_s)
62
64
  variable = "@#{class_name.downcase}"
63
- unless instance_variable_defined? variable
64
- klass =
65
- Object.const_get('FinApps').const_get('REST').const_get class_name
66
- instance_variable_set(variable, klass.new(self))
67
- end
65
+ set_variable(class_name, variable) unless instance_variable_defined? variable
68
66
  instance_variable_get(variable)
69
67
  else
70
68
  super
71
69
  end
72
70
  end
73
71
 
72
+ def set_variable(class_name, variable)
73
+ klass = Object.const_get('FinApps').const_get('REST').const_get class_name
74
+ instance_variable_set(variable, klass.new(self))
75
+ end
76
+
74
77
  def respond_to_missing?(method_sym, include_private = false)
75
78
  RESOURCES.include?(method_sym) ? true : super
76
79
  end