finapps_core 3.0.6 → 4.0.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -153
- data/.ruby-version +1 -1
- data/.travis.yml +2 -1
- data/finapps_core.gemspec +11 -12
- data/lib/core_extensions/object/is_integer.rb +1 -1
- data/lib/finapps_core.rb +0 -2
- data/lib/finapps_core/error.rb +2 -2
- data/lib/finapps_core/middleware/response/custom_logger.rb +10 -40
- data/lib/finapps_core/middleware/response/raise_error.rb +10 -6
- data/lib/finapps_core/rest/base_client.rb +14 -10
- data/lib/finapps_core/rest/configuration.rb +3 -3
- data/lib/finapps_core/rest/connection.rb +18 -10
- data/lib/finapps_core/rest/defaults.rb +2 -1
- data/lib/finapps_core/rest/resources.rb +6 -6
- data/lib/finapps_core/utils/parameter_filter.rb +36 -19
- data/lib/finapps_core/utils/validatable.rb +3 -6
- data/lib/finapps_core/version.rb +1 -1
- data/spec/core_extensions/object/is_integer_spec.rb +1 -1
- data/spec/middleware/request/accept_json_spec.rb +1 -1
- data/spec/middleware/request/no_encoding_basic_authentication_spec.rb +3 -3
- data/spec/middleware/request/request_id_spec.rb +1 -1
- data/spec/middleware/request/tenant_authentication_spec.rb +3 -3
- data/spec/middleware/request/user_agent_spec.rb +1 -1
- data/spec/middleware/response/raise_error_spec.rb +1 -1
- data/spec/rest/base_client_spec.rb +6 -6
- data/spec/rest/defaults_spec.rb +0 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/utils/parameter_filter_spec.rb +8 -4
- data/spec/utils/validatable_spec.rb +2 -3
- metadata +61 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96d7a4d630928d28cae45e1aa056d384f3ea1eb3a68c0d609f4d41ab8f099aa5
|
4
|
+
data.tar.gz: 1b076ce2d77fe18607eff40229b1247572bcbc46e4f14f2d56a42a055a5885f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62466071fddf710839f9b731831d8c063bc96fd2c55592694d4b79a97ad0b7f4af8ee883771c82f19bfae9de87eb7b175febdd3f0522e07ea0e0c729ab6b4e17
|
7
|
+
data.tar.gz: 21ac2a4503f836043123380eee90510a308b36fdf414499a48b6b39d890db651d13e619dcebde0f1c29bb8a4b66edfe523c250bd0daf279fb938cb225fa95be7
|
data/.rubocop.yml
CHANGED
@@ -14,10 +14,10 @@ AllCops:
|
|
14
14
|
Metrics/LineLength:
|
15
15
|
Max: 120
|
16
16
|
|
17
|
-
#
|
18
|
-
#
|
19
|
-
|
20
|
-
|
17
|
+
# Re-enable this when the following is resolved:
|
18
|
+
# https://github.com/rubocop-hq/rubocop/issues/5953
|
19
|
+
Style/AccessModifierDeclarations:
|
20
|
+
Enabled: false
|
21
21
|
|
22
22
|
Layout/SpaceInsideBlockBraces:
|
23
23
|
# The space here provides no real gain in readability while consuming
|
@@ -25,12 +25,6 @@ Layout/SpaceInsideBlockBraces:
|
|
25
25
|
# Also {| differentiates better from a hash than { | does.
|
26
26
|
SpaceBeforeBlockParameters: false
|
27
27
|
|
28
|
-
# No trailing space differentiates better from the block:
|
29
|
-
# foo} means hash, foo } means block.
|
30
|
-
Layout/SpaceInsideHashLiteralBraces:
|
31
|
-
EnforcedStyle: no_space
|
32
|
-
|
33
|
-
|
34
28
|
Style/CollectionMethods:
|
35
29
|
Description: Preferred collection methods.
|
36
30
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
|
@@ -41,47 +35,10 @@ Style/CollectionMethods:
|
|
41
35
|
find: detect
|
42
36
|
find_all: select
|
43
37
|
reduce: inject
|
44
|
-
Layout/DotPosition:
|
45
|
-
Description: Checks the position of the dot in multi-line method calls.
|
46
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
|
47
|
-
Enabled: true
|
48
|
-
EnforcedStyle: leading
|
49
|
-
SupportedStyles:
|
50
|
-
- leading
|
51
|
-
- trailing
|
52
|
-
Style/FileName:
|
53
|
-
Description: Use snake_case for source file names.
|
54
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
|
55
|
-
Enabled: false
|
56
|
-
Exclude: []
|
57
|
-
Style/GuardClause:
|
58
|
-
Description: Check for conditionals that can be replaced with guard clauses
|
59
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
|
60
|
-
Enabled: false
|
61
|
-
MinBodyLength: 1
|
62
|
-
Style/IfUnlessModifier:
|
63
|
-
Description: Favor modifier if/unless usage when you have a single-line body.
|
64
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
|
65
|
-
Enabled: false
|
66
|
-
MaxLineLength: 80
|
67
38
|
Style/OptionHash:
|
68
39
|
Description: Don't use option hashes when you can use keyword arguments.
|
69
40
|
Enabled: false
|
70
|
-
|
71
|
-
Description: Use `%`-literal delimiters consistently
|
72
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
|
73
|
-
Enabled: false
|
74
|
-
PreferredDelimiters:
|
75
|
-
"%": "()"
|
76
|
-
"%i": "()"
|
77
|
-
"%q": "()"
|
78
|
-
"%Q": "()"
|
79
|
-
"%r": "{}"
|
80
|
-
"%s": "()"
|
81
|
-
"%w": "()"
|
82
|
-
"%W": "()"
|
83
|
-
"%x": "()"
|
84
|
-
Style/PredicateName:
|
41
|
+
Naming/PredicateName:
|
85
42
|
Description: Check the names of predicate methods.
|
86
43
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
|
87
44
|
Enabled: true
|
@@ -93,55 +50,6 @@ Style/PredicateName:
|
|
93
50
|
- is_
|
94
51
|
Exclude:
|
95
52
|
- spec/**/*
|
96
|
-
Style/RaiseArgs:
|
97
|
-
Description: Checks the arguments passed to raise/fail.
|
98
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages
|
99
|
-
Enabled: false
|
100
|
-
EnforcedStyle: exploded
|
101
|
-
SupportedStyles:
|
102
|
-
- compact
|
103
|
-
- exploded
|
104
|
-
Style/SignalException:
|
105
|
-
Description: Checks for proper usage of fail and raise.
|
106
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
|
107
|
-
Enabled: false
|
108
|
-
EnforcedStyle: semantic
|
109
|
-
SupportedStyles:
|
110
|
-
- only_raise
|
111
|
-
- only_fail
|
112
|
-
- semantic
|
113
|
-
Style/SingleLineBlockParams:
|
114
|
-
Description: Enforces the names of some block params.
|
115
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
|
116
|
-
Enabled: false
|
117
|
-
Methods:
|
118
|
-
- reduce:
|
119
|
-
- a
|
120
|
-
- e
|
121
|
-
- inject:
|
122
|
-
- a
|
123
|
-
- e
|
124
|
-
Style/SingleLineMethods:
|
125
|
-
Description: Avoid single-line methods.
|
126
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
|
127
|
-
Enabled: false
|
128
|
-
AllowIfMethodIsEmpty: true
|
129
|
-
Style/StringLiterals:
|
130
|
-
Description: Checks if uses of quotes match the configured preference.
|
131
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
|
132
|
-
Enabled: true
|
133
|
-
EnforcedStyle: single_quotes
|
134
|
-
SupportedStyles:
|
135
|
-
- single_quotes
|
136
|
-
- double_quotes
|
137
|
-
Style/StringLiteralsInInterpolation:
|
138
|
-
Description: Checks if uses of quotes inside expressions in interpolated strings
|
139
|
-
match the configured preference.
|
140
|
-
Enabled: true
|
141
|
-
EnforcedStyle: single_quotes
|
142
|
-
SupportedStyles:
|
143
|
-
- single_quotes
|
144
|
-
- double_quotes
|
145
53
|
Metrics/AbcSize:
|
146
54
|
Description: A calculated magnitude based on number of assignments, branches, and
|
147
55
|
conditions.
|
@@ -181,75 +89,19 @@ Metrics/PerceivedComplexity:
|
|
181
89
|
reader.
|
182
90
|
Enabled: false
|
183
91
|
Max: 7
|
184
|
-
Lint/AssignmentInCondition:
|
185
|
-
Description: Don't use assignment in conditions.
|
186
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
|
187
|
-
Enabled: false
|
188
|
-
AllowSafeAssignment: true
|
189
|
-
Style/InlineComment:
|
190
|
-
Description: Avoid inline comments.
|
191
|
-
Enabled: false
|
192
|
-
Style/AccessorMethodName:
|
193
|
-
Description: Check the naming of accessor methods for get_/set_.
|
194
|
-
Enabled: false
|
195
|
-
Style/Alias:
|
196
|
-
Description: Use alias_method instead of alias.
|
197
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
|
198
|
-
Enabled: false
|
199
92
|
Style/Documentation:
|
200
93
|
Description: Document classes and non-namespace modules.
|
201
94
|
Enabled: false
|
202
|
-
Style/DoubleNegation:
|
203
|
-
Description: Checks for uses of double negation (!!).
|
204
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang
|
205
|
-
Enabled: false
|
206
|
-
Style/EachWithObject:
|
207
|
-
Description: Prefer `each_with_object` over `inject` or `reduce`.
|
208
|
-
Enabled: false
|
209
95
|
Style/EmptyLiteral:
|
210
96
|
Description: Prefer literals to Array.new/Hash.new/String.new.
|
211
97
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
|
212
98
|
Enabled: false
|
213
|
-
Style/ModuleFunction:
|
214
|
-
Description: Checks for usage of `extend self` in modules.
|
215
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
|
216
|
-
Enabled: false
|
217
|
-
Style/OneLineConditional:
|
218
|
-
Description: Favor the ternary operator(?:) over if/then/else/end constructs.
|
219
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
|
220
|
-
Enabled: false
|
221
|
-
Style/PerlBackrefs:
|
222
|
-
Description: Avoid Perl-style regex back references.
|
223
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
|
224
|
-
Enabled: false
|
225
|
-
Style/Send:
|
226
|
-
Description: Prefer `Object#__send__` or `Object#public_send` to `send`, as `send`
|
227
|
-
may overlap with existing methods.
|
228
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#prefer-public-send
|
229
|
-
Enabled: false
|
230
|
-
Style/SpecialGlobalVars:
|
231
|
-
Description: Avoid Perl-style global variables.
|
232
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
|
233
|
-
Enabled: false
|
234
99
|
Style/VariableInterpolation:
|
235
100
|
Description: Don't interpolate global, instance and class variables directly in
|
236
101
|
strings.
|
237
102
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
|
238
103
|
Enabled: false
|
239
|
-
Style/WhenThen:
|
240
|
-
Description: Use when x then ... for one-line cases.
|
241
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
|
242
|
-
Enabled: false
|
243
|
-
Lint/EachWithObjectArgument:
|
244
|
-
Description: Check for immutable argument given to each_with_object.
|
245
|
-
Enabled: true
|
246
104
|
Lint/HandleExceptions:
|
247
105
|
Description: Don't suppress exception.
|
248
106
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
|
249
107
|
Enabled: false
|
250
|
-
Lint/LiteralInCondition:
|
251
|
-
Description: Checks of literals used in conditions.
|
252
|
-
Enabled: false
|
253
|
-
Lint/LiteralInInterpolation:
|
254
|
-
Description: Checks for literals used in interpolation.
|
255
|
-
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.5.1
|
data/.travis.yml
CHANGED
data/finapps_core.gemspec
CHANGED
@@ -20,20 +20,19 @@ 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 'faraday', '0.
|
23
|
+
spec.add_runtime_dependency 'faraday', '~> 0.15', '>= 0.15.3'
|
24
24
|
spec.add_runtime_dependency 'faraday_middleware', '~> 0.12', '>= 0.12.2'
|
25
|
-
spec.add_runtime_dependency 'rash_alt', '~> 0.4', '>= 0.4.
|
26
|
-
spec.add_runtime_dependency 'typhoeus', '~> 1.3', '>= 1.3.0'
|
25
|
+
spec.add_runtime_dependency 'rash_alt', '~> 0.4', '>= 0.4.7'
|
27
26
|
|
28
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
29
|
-
spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0', '>= 1.0.
|
30
|
-
spec.add_development_dependency 'gem-release', '~> 0
|
31
|
-
spec.add_development_dependency 'rake', '~> 12.
|
32
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
33
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
34
|
-
spec.add_development_dependency 'sinatra', '~> 2.0', '>= 2.0.
|
35
|
-
spec.add_development_dependency 'webmock', '~> 3.
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.16', '>= 1.16.6'
|
28
|
+
spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0', '>= 1.0.9'
|
29
|
+
spec.add_development_dependency 'gem-release', '~> 2.0', '>= 2.0.1'
|
30
|
+
spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.1'
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3.8', '>= 3.8.0'
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.59', '>= 0.59.2'
|
33
|
+
spec.add_development_dependency 'sinatra', '~> 2.0', '>= 2.0.4'
|
34
|
+
spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
|
36
35
|
|
37
36
|
spec.extra_rdoc_files = %w(README.md LICENSE)
|
38
37
|
spec.rdoc_options = %w(--line-numbers --inline-source --title finapps-ruby-core --main README.md)
|
39
|
-
end
|
38
|
+
end
|
data/lib/finapps_core.rb
CHANGED
@@ -4,8 +4,6 @@ require 'finapps_core/version' unless defined?(FinAppsCore::VERSION)
|
|
4
4
|
|
5
5
|
require 'faraday'
|
6
6
|
require 'faraday_middleware'
|
7
|
-
require 'typhoeus'
|
8
|
-
require 'typhoeus/adapters/faraday'
|
9
7
|
|
10
8
|
require 'core_extensions/object/is_integer'
|
11
9
|
require 'core_extensions/string/json_to_hash'
|
data/lib/finapps_core/error.rb
CHANGED
@@ -20,8 +20,8 @@ module FinAppsCore # :nodoc:
|
|
20
20
|
# Raised whenever the connection fails.
|
21
21
|
class ConnectionFailedError < Error; end
|
22
22
|
|
23
|
-
%i
|
24
|
-
UnsupportedHttpMethodError ConnectionFailedError
|
23
|
+
%i[InvalidArgumentsError MissingArgumentsError ApiSessionTimeoutError
|
24
|
+
UnsupportedHttpMethodError ConnectionFailedError].each do |const|
|
25
25
|
Error.const_set(const, FinAppsCore.const_get(const))
|
26
26
|
end
|
27
27
|
end
|
@@ -4,56 +4,26 @@ require 'logger'
|
|
4
4
|
|
5
5
|
module FinAppsCore
|
6
6
|
module Middleware
|
7
|
-
class CustomLogger < Faraday::Response::
|
8
|
-
extend Forwardable
|
7
|
+
class CustomLogger < Faraday::Response::Logger
|
9
8
|
include FinAppsCore::Utils::ParameterFilter
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
def initialize(app, logger=nil, options={})
|
14
|
-
super(app)
|
15
|
-
@logger = logger || new_logger
|
16
|
-
@options = DEFAULT_OPTIONS.merge(options)
|
17
|
-
end
|
18
|
-
|
19
|
-
def_delegators :@logger, :debug
|
10
|
+
private
|
20
11
|
|
21
|
-
def
|
22
|
-
|
23
|
-
debug "#{self.class.name}##{__method__} => Request Headers: #{dump env.request_headers}"
|
24
|
-
if env[:body] && log_body?(:request)
|
25
|
-
debug "#{self.class.name}##{__method__} => Request Response: #{dump env[:body]}"
|
26
|
-
end
|
27
|
-
super
|
12
|
+
def dump_headers(headers)
|
13
|
+
dump headers
|
28
14
|
end
|
29
15
|
|
30
|
-
def
|
31
|
-
|
32
|
-
if env.body && log_body?(:response)
|
33
|
-
debug "#{self.class.name}##{__method__} => Response Body: #{dump env.body}"
|
34
|
-
end
|
16
|
+
def dump_body(body)
|
17
|
+
dump body
|
35
18
|
end
|
36
19
|
|
37
|
-
private
|
38
|
-
|
39
20
|
def dump(value)
|
40
|
-
s = skip_sensitive_data
|
41
|
-
s.
|
42
|
-
end
|
43
|
-
|
44
|
-
def log_body?(type)
|
45
|
-
case @options[:bodies]
|
46
|
-
when Hash then
|
47
|
-
@options[:bodies][type]
|
48
|
-
else
|
49
|
-
@options[:bodies]
|
50
|
-
end
|
21
|
+
s = skip_sensitive_data value
|
22
|
+
s.respond_to?(:to_json) ? s.to_json : s
|
51
23
|
end
|
52
24
|
|
53
|
-
def
|
54
|
-
|
55
|
-
logger.level = FinAppsCore::REST::Defaults::DEFAULTS[:log_level]
|
56
|
-
logger
|
25
|
+
def apply_filters(value)
|
26
|
+
value
|
57
27
|
end
|
58
28
|
end
|
59
29
|
end
|
@@ -14,12 +14,13 @@ module FinAppsCore
|
|
14
14
|
return if SUCCESS_STATUSES.include?(env[:status])
|
15
15
|
|
16
16
|
if env[:status] == API_SESSION_TIMEOUT
|
17
|
-
raise(FinAppsCore::Error::ApiSessionTimeoutError, '
|
18
|
-
|
17
|
+
raise(FinAppsCore::Error::ApiSessionTimeoutError, 'API Session Timed out')
|
18
|
+
end
|
19
|
+
if env[:status] == CONNECTION_FAILED_STATUS
|
19
20
|
raise(FinAppsCore::Error::ConnectionFailedError, 'Connection Failed')
|
20
|
-
else
|
21
|
-
raise(Faraday::Error::ClientError, response_values(env))
|
22
21
|
end
|
22
|
+
|
23
|
+
raise(Faraday::Error::ClientError, response_values(env))
|
23
24
|
end
|
24
25
|
|
25
26
|
def response_values(env)
|
@@ -35,22 +36,25 @@ module FinAppsCore
|
|
35
36
|
|
36
37
|
def error_messages(body)
|
37
38
|
return nil if empty?(body)
|
39
|
+
|
38
40
|
hash = to_hash body
|
39
41
|
messages hash
|
40
42
|
end
|
41
43
|
|
42
44
|
def messages(hash)
|
43
45
|
return nil unless hash.respond_to?(:key?) && hash.key?('messages')
|
46
|
+
|
44
47
|
hash['messages']
|
45
48
|
end
|
46
49
|
|
47
50
|
def to_hash(source)
|
48
51
|
return source unless source.is_a?(String)
|
52
|
+
|
49
53
|
source.json_to_hash
|
50
54
|
end
|
51
55
|
|
52
|
-
def empty?(
|
53
|
-
|
56
|
+
def empty?(obj)
|
57
|
+
obj.nil? || (obj.respond_to?(:empty?) && obj.empty?)
|
54
58
|
end
|
55
59
|
end
|
56
60
|
end
|
@@ -18,7 +18,7 @@ module FinAppsCore
|
|
18
18
|
|
19
19
|
attr_reader :config
|
20
20
|
|
21
|
-
def initialize(options, logger=nil)
|
21
|
+
def initialize(options, logger = nil)
|
22
22
|
@config = ::FinAppsCore::REST::Configuration.new options
|
23
23
|
@logger = logger
|
24
24
|
end
|
@@ -38,7 +38,7 @@ module FinAppsCore
|
|
38
38
|
# @param [String] method
|
39
39
|
# @param [Hash] params
|
40
40
|
# @return [Hash,Array<String>]
|
41
|
-
def send_request(path, method, params={})
|
41
|
+
def send_request(path, method, params = {})
|
42
42
|
not_blank(path, :path)
|
43
43
|
not_blank(method, :method)
|
44
44
|
|
@@ -56,22 +56,26 @@ module FinAppsCore
|
|
56
56
|
# Returns a hash obtained from parsing the JSON object in the response body.
|
57
57
|
#
|
58
58
|
def method_missing(method_id, *arguments, &block)
|
59
|
-
if %i
|
60
|
-
|
61
|
-
req.url arguments.first
|
62
|
-
req.body = arguments[1] unless method_id == :get
|
63
|
-
end
|
59
|
+
if %i[get post put delete].include? method_id
|
60
|
+
send_to_connection method_id, arguments
|
64
61
|
else
|
65
62
|
super
|
66
63
|
end
|
67
64
|
end
|
68
65
|
|
69
|
-
def respond_to_missing?(method_sym, include_private=false)
|
70
|
-
%i
|
66
|
+
def respond_to_missing?(method_sym, include_private = false)
|
67
|
+
%i[get post put delete].include?(method_sym) ? true : super
|
71
68
|
end
|
72
69
|
|
73
70
|
private
|
74
71
|
|
72
|
+
def send_to_connection(method_id, arguments)
|
73
|
+
connection.send(method_id) do |req|
|
74
|
+
req.url arguments.first
|
75
|
+
req.body = arguments[1] unless method_id == :get
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
75
79
|
def empty?(response)
|
76
80
|
!response || empty_body?(response)
|
77
81
|
end
|
@@ -119,7 +123,7 @@ module FinAppsCore
|
|
119
123
|
when :delete
|
120
124
|
delete(path, params)
|
121
125
|
else
|
122
|
-
raise FinAppsCore::UnsupportedHttpMethodError
|
126
|
+
raise FinAppsCore::UnsupportedHttpMethodError, "Method not supported: #{method}."
|
123
127
|
end
|
124
128
|
end
|
125
129
|
end
|
@@ -10,12 +10,12 @@ module FinAppsCore
|
|
10
10
|
:host, :proxy, :timeout, :retry_limit, :rashify,
|
11
11
|
:log_level, :request_id
|
12
12
|
|
13
|
-
def initialize(options={})
|
13
|
+
def initialize(options = {})
|
14
14
|
FinAppsCore::REST::Defaults::DEFAULTS.merge(remove_empty_options(options))
|
15
15
|
.each {|key, value| public_send("#{key}=", value) }
|
16
16
|
|
17
|
-
raise FinAppsCore::InvalidArgumentsError
|
18
|
-
raise FinAppsCore::InvalidArgumentsError
|
17
|
+
raise FinAppsCore::InvalidArgumentsError, "Invalid argument. {host: #{host}}" unless valid_host?
|
18
|
+
raise FinAppsCore::InvalidArgumentsError, "Invalid argument. {timeout: #{timeout}}" unless timeout.integer?
|
19
19
|
end
|
20
20
|
|
21
21
|
def valid_user_credentials?
|
@@ -5,33 +5,41 @@ module FinAppsCore
|
|
5
5
|
module Connection # :nodoc:
|
6
6
|
# @return [Faraday::Connection]
|
7
7
|
def faraday(config, logger)
|
8
|
-
options =
|
9
|
-
url: "#{config.host}/v#{Defaults::API_VERSION}/",
|
10
|
-
request: {open_timeout: config.timeout,
|
11
|
-
timeout: config.timeout}
|
12
|
-
}
|
8
|
+
options = connection_options config
|
13
9
|
|
14
10
|
Faraday.new(options) do |conn|
|
15
11
|
conn.request :accept_json
|
16
12
|
conn.request :user_agent
|
17
|
-
|
13
|
+
if config.valid_user_credentials?
|
14
|
+
conn.request :no_encoding_basic_authentication, config.user_token
|
15
|
+
else
|
16
|
+
conn.request :tenant_authentication, config.tenant_token
|
17
|
+
end
|
18
18
|
conn.request :json
|
19
19
|
conn.request :retry
|
20
20
|
conn.request :multipart
|
21
21
|
conn.request :url_encoded
|
22
|
-
conn.request :no_encoding_basic_authentication, config.user_token if config.valid_user_credentials?
|
23
22
|
conn.request :request_id, config.request_id if config.request_id
|
24
23
|
|
25
24
|
conn.use FinAppsCore::Middleware::RaiseError
|
26
25
|
conn.response :rashify if config.rashify
|
27
26
|
conn.response :json, content_type: /\bjson$/
|
28
|
-
conn.response :custom_logger, logger, bodies:
|
27
|
+
conn.response :custom_logger, logger, bodies: true
|
29
28
|
|
30
29
|
# Adapter (ensure that the adapter is always last.)
|
31
|
-
conn.adapter
|
30
|
+
conn.adapter Faraday.default_adapter
|
32
31
|
end
|
33
32
|
end
|
34
|
-
module_function :faraday
|
33
|
+
module_function :faraday
|
34
|
+
|
35
|
+
def connection_options(config)
|
36
|
+
{
|
37
|
+
url: "#{config.host}/v#{Defaults::API_VERSION}/",
|
38
|
+
request: { open_timeout: config.timeout,
|
39
|
+
timeout: config.timeout }
|
40
|
+
}
|
41
|
+
end
|
42
|
+
module_function :connection_options
|
35
43
|
end
|
36
44
|
end
|
37
45
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'logger'
|
4
|
+
|
3
5
|
module FinAppsCore
|
4
6
|
module REST
|
5
7
|
module Defaults
|
@@ -10,7 +12,6 @@ module FinAppsCore
|
|
10
12
|
host: 'https://api.financialapps.com',
|
11
13
|
timeout: 30,
|
12
14
|
proxy: nil,
|
13
|
-
retry_limit: 1,
|
14
15
|
log_level: Logger::INFO
|
15
16
|
}.freeze
|
16
17
|
end
|
@@ -22,24 +22,24 @@ module FinAppsCore
|
|
22
22
|
@logger = client.logger if client.respond_to?(:logger)
|
23
23
|
end
|
24
24
|
|
25
|
-
def list(path=nil)
|
25
|
+
def list(path = nil)
|
26
26
|
path = end_point.to_s if path.nil?
|
27
27
|
send_request path, :get
|
28
28
|
end
|
29
29
|
|
30
|
-
def show(id=nil, path=nil)
|
30
|
+
def show(id = nil, path = nil)
|
31
31
|
send_request_for_id path, :get, id
|
32
32
|
end
|
33
33
|
|
34
|
-
def create(params={}, path=nil)
|
34
|
+
def create(params = {}, path = nil)
|
35
35
|
send_request path, :post, params
|
36
36
|
end
|
37
37
|
|
38
|
-
def update(params={}, path=nil)
|
38
|
+
def update(params = {}, path = nil)
|
39
39
|
send_request path, :put, params
|
40
40
|
end
|
41
41
|
|
42
|
-
def destroy(id=nil, path=nil)
|
42
|
+
def destroy(id = nil, path = nil)
|
43
43
|
send_request_for_id path, :delete, id
|
44
44
|
end
|
45
45
|
|
@@ -61,7 +61,7 @@ module FinAppsCore
|
|
61
61
|
"#{end_point}/#{ERB::Util.url_encode(id)}"
|
62
62
|
end
|
63
63
|
|
64
|
-
def send_request(path, method, params={})
|
64
|
+
def send_request(path, method, params = {})
|
65
65
|
path = end_point if path.nil?
|
66
66
|
logger.debug "#{self.class.name}##{__method__} => path: #{path} params: #{skip_sensitive_data(params)}"
|
67
67
|
|
@@ -3,31 +3,48 @@
|
|
3
3
|
module FinAppsCore
|
4
4
|
module Utils
|
5
5
|
module ParameterFilter
|
6
|
+
include ::FinAppsCore::Utils::Loggeable
|
6
7
|
using StringExtensions
|
7
|
-
PROTECTED_KEYS = %w
|
8
|
-
x-tenant-token authorization routing_no account_no tpr_id
|
8
|
+
PROTECTED_KEYS = %w[login login1 username password password1 password_confirm token
|
9
|
+
x-tenant-token authorization routing_no account_no tpr_id].freeze
|
9
10
|
|
10
|
-
def skip_sensitive_data(
|
11
|
-
|
12
|
-
hash = hash.json_to_hash
|
13
|
-
end
|
11
|
+
def skip_sensitive_data(param)
|
12
|
+
hash = param_to_hash param
|
14
13
|
if hash.is_a? Hash
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
clone_and_redact hash
|
15
|
+
else
|
16
|
+
replace_nil hash
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def param_to_hash(param)
|
23
|
+
param.is_a?(String) ? param.json_to_hash : param
|
24
|
+
end
|
25
|
+
|
26
|
+
def clone_and_redact(hash)
|
27
|
+
redact_each hash.clone
|
28
|
+
end
|
29
|
+
|
30
|
+
def redact_each(hash)
|
31
|
+
hash.each {|key, value| hash[key] = redact(key, value) }
|
32
|
+
hash
|
33
|
+
end
|
34
|
+
|
35
|
+
def redact(key, value)
|
36
|
+
if PROTECTED_KEYS.include? key.to_s.downcase
|
37
|
+
'[REDACTED]'
|
38
|
+
elsif value.is_a? Hash
|
39
|
+
redact_each value
|
27
40
|
else
|
28
|
-
|
41
|
+
replace_nil value
|
29
42
|
end
|
30
43
|
end
|
44
|
+
|
45
|
+
def replace_nil(value)
|
46
|
+
value || 'NO-CONTENT'
|
47
|
+
end
|
31
48
|
end
|
32
49
|
end
|
33
50
|
end
|
@@ -7,15 +7,12 @@ module FinAppsCore
|
|
7
7
|
module Utils
|
8
8
|
# Adds validation capabilities when included into other classes
|
9
9
|
module Validatable
|
10
|
-
def not_blank(value, name=nil)
|
11
|
-
if nil_or_empty?(value)
|
12
|
-
argument_name = name.nil? ? nil : ": #{name}"
|
13
|
-
raise FinAppsCore::MissingArgumentsError.new "Missing argument#{argument_name}"
|
14
|
-
end
|
10
|
+
def not_blank(value, name = nil)
|
11
|
+
raise FinAppsCore::MissingArgumentsError, name.nil? ? nil : ": #{name}" if nil_or_empty?(value)
|
15
12
|
end
|
16
13
|
|
17
14
|
def nil_or_empty?(value)
|
18
|
-
!value ||
|
15
|
+
!value || value.respond_to?(:empty?) && value.empty?
|
19
16
|
end
|
20
17
|
end
|
21
18
|
end
|
data/lib/finapps_core/version.rb
CHANGED
@@ -4,7 +4,7 @@ RSpec.describe FinAppsCore::Middleware::AcceptJson do
|
|
4
4
|
let(:fake_app) { proc {|env| env } }
|
5
5
|
describe '#call' do
|
6
6
|
subject { FinAppsCore::Middleware::AcceptJson.new(fake_app) }
|
7
|
-
env = {request_headers: {}}
|
7
|
+
env = { request_headers: {} }
|
8
8
|
|
9
9
|
it('generates a UserAgent header') do
|
10
10
|
expect(subject.call(env)[:request_headers][FinAppsCore::Middleware::AcceptJson::KEY]).to eq('application/json')
|
@@ -8,17 +8,17 @@ RSpec.describe FinAppsCore::Middleware::NoEncodingBasicAuthentication do
|
|
8
8
|
|
9
9
|
context 'when credentials were provided' do
|
10
10
|
let(:middleware) { FinAppsCore::Middleware::NoEncodingBasicAuthentication.new(app, :token) }
|
11
|
-
let(:expected_header_value) {
|
11
|
+
let(:expected_header_value) { 'Bearer token' }
|
12
12
|
|
13
13
|
context 'when header was not previously set' do
|
14
|
-
let(:request_env) { {request_headers: {}} }
|
14
|
+
let(:request_env) { { request_headers: {} } }
|
15
15
|
subject(:result) { middleware.call(request_env) }
|
16
16
|
|
17
17
|
it('generates a header') { expect(result[:request_headers][key]).to eq(expected_header_value) }
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'when header was previously set' do
|
21
|
-
let(:request_env) { {request_headers: {key => 'foo'}} }
|
21
|
+
let(:request_env) { { request_headers: { key => 'foo' } } }
|
22
22
|
subject(:result) { middleware.call(request_env) }
|
23
23
|
|
24
24
|
it('does not override existing header') { expect(result[:request_headers][key]).to eq('foo') }
|
@@ -4,7 +4,7 @@ RSpec.describe FinAppsCore::Middleware::RequestId do
|
|
4
4
|
let(:key) { FinAppsCore::Middleware::RequestId::KEY }
|
5
5
|
let(:id) { 'request_id' }
|
6
6
|
let(:fake_app) { proc {|env| env } }
|
7
|
-
let(:env) { {request_headers: {}} }
|
7
|
+
let(:env) { { request_headers: {} } }
|
8
8
|
|
9
9
|
describe '#call' do
|
10
10
|
subject { FinAppsCore::Middleware::RequestId.new(fake_app, id) }
|
@@ -12,15 +12,15 @@ RSpec.describe FinAppsCore::Middleware::TenantAuthentication do
|
|
12
12
|
let(:expected_header) { valid_tenant_options[:token] }
|
13
13
|
|
14
14
|
context 'when header was not previously set' do
|
15
|
-
let(:request_env) { {request_headers: {}} }
|
15
|
+
let(:request_env) { { request_headers: {} } }
|
16
16
|
subject(:actual_header) { middleware.call(request_env)[:request_headers][key] }
|
17
17
|
|
18
18
|
it('generates a Tenant Authentication header') { expect(actual_header).to eq(expected_header) }
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'when header was previously set' do
|
22
|
-
let(:existing_header) { {FinAppsCore::Middleware::TenantAuthentication::KEY => 'foo'} }
|
23
|
-
let(:request_env) { {request_headers: existing_header} }
|
22
|
+
let(:existing_header) { { FinAppsCore::Middleware::TenantAuthentication::KEY => 'foo' } }
|
23
|
+
let(:request_env) { { request_headers: existing_header } }
|
24
24
|
subject(:actual_header) { middleware.call(request_env)[:request_headers][key] }
|
25
25
|
|
26
26
|
it('does not override existing Tenant Authentication header') { expect(actual_header).to eq('foo') }
|
@@ -4,7 +4,7 @@ RSpec.describe FinAppsCore::Middleware::UserAgent do
|
|
4
4
|
let(:fake_app) { proc {|env| env } }
|
5
5
|
describe '#call' do
|
6
6
|
subject { FinAppsCore::Middleware::UserAgent.new(fake_app) }
|
7
|
-
env = {request_headers: {}}
|
7
|
+
env = { request_headers: {} }
|
8
8
|
|
9
9
|
it('generates a UserAgent header') do
|
10
10
|
expect(subject.call(env)[:request_headers][FinAppsCore::Middleware::UserAgent::KEY]).to start_with('finapps-ruby')
|
@@ -23,7 +23,7 @@ RSpec.describe FinAppsCore::Middleware::RaiseError do
|
|
23
23
|
end
|
24
24
|
context 'for connection failed error' do
|
25
25
|
let(:env) { Env.new(419) }
|
26
|
-
error_message = '
|
26
|
+
error_message = 'API Session Timed out'
|
27
27
|
it { expect { subject.on_complete(env) }.to raise_error(FinAppsCore::ApiSessionTimeoutError, error_message) }
|
28
28
|
end
|
29
29
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.describe FinAppsCore::REST::BaseClient do
|
4
|
-
let(:valid_tenant_options) { {tenant_token: VALID_CREDENTIALS[:token]} }
|
4
|
+
let(:valid_tenant_options) { { tenant_token: VALID_CREDENTIALS[:token] } }
|
5
5
|
subject { FinAppsCore::REST::BaseClient.new(valid_tenant_options) }
|
6
6
|
|
7
7
|
RESPONSE = 0
|
8
8
|
ERROR_MESSAGES = 1
|
9
|
-
let(:return_array) { %i
|
9
|
+
let(:return_array) { %i[RESPONSE ERROR_MESSAGES] }
|
10
10
|
|
11
11
|
describe '#new' do
|
12
12
|
it 'assigns @config' do
|
@@ -34,17 +34,17 @@ RSpec.describe FinAppsCore::REST::BaseClient do
|
|
34
34
|
|
35
35
|
it 'should raise FinAppsCore::MissingArgumentsError if method is NOT provided' do
|
36
36
|
expect { subject.send_request(nil, :get) }.to raise_error(FinAppsCore::MissingArgumentsError,
|
37
|
-
'
|
37
|
+
': path')
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'should raise FinAppsCore::MissingArgumentsError if path is NOT provided' do
|
41
41
|
expect { subject.send_request('fake_path', nil) }.to raise_error(FinAppsCore::MissingArgumentsError,
|
42
|
-
'
|
42
|
+
': method')
|
43
43
|
end
|
44
44
|
|
45
45
|
context 'when method and path are provided' do
|
46
46
|
subject { FinAppsCore::REST::BaseClient.new(valid_tenant_options).send_request('relevance/ruleset/names', :get) }
|
47
|
-
let(:return_array) { %i
|
47
|
+
let(:return_array) { %i[RESPONSE ERROR_MESSAGES] }
|
48
48
|
|
49
49
|
it('returns an array of 2 items') do
|
50
50
|
expect(subject).to be_a(Array)
|
@@ -89,7 +89,7 @@ RSpec.describe FinAppsCore::REST::BaseClient do
|
|
89
89
|
|
90
90
|
describe '#respond_to_missing?' do
|
91
91
|
context 'for supported methods' do
|
92
|
-
%i
|
92
|
+
%i[get post put delete].each do |method|
|
93
93
|
it("responds to #{method}") { expect(subject).to respond_to(method) }
|
94
94
|
end
|
95
95
|
end
|
data/spec/rest/defaults_spec.rb
CHANGED
@@ -12,7 +12,6 @@ RSpec.describe FinAppsCore::REST::Defaults do
|
|
12
12
|
it('sets DEFAULTS[:host]') { expect(described_class::DEFAULTS[:host]).to eq 'https://api.financialapps.com' }
|
13
13
|
it('sets DEFAULTS[:timeout]') { expect(described_class::DEFAULTS[:timeout]).to eq 30 }
|
14
14
|
it('does not set DEFAULTS[:proxy]') { expect(described_class::DEFAULTS[:proxy]).to be_nil }
|
15
|
-
it('sets DEFAULTS[:retry_limit]') { expect(described_class::DEFAULTS[:retry_limit]).to eq 1 }
|
16
15
|
it('sets DEFAULTS[:log_level]') { expect(described_class::DEFAULTS[:log_level]).to eq Logger::INFO }
|
17
16
|
end
|
18
17
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -36,5 +36,5 @@ RSpec.configure do |config|
|
|
36
36
|
WebMock.disable_net_connect!(allow: 'codeclimate.com')
|
37
37
|
end
|
38
38
|
|
39
|
-
VALID_CREDENTIALS = {identifier: '49fb918d-7e71-44dd-7378-58f19606df2a',
|
40
|
-
|
39
|
+
VALID_CREDENTIALS = { identifier: '49fb918d-7e71-44dd-7378-58f19606df2a',
|
40
|
+
token: 'hohoho=' }.freeze
|
@@ -15,8 +15,10 @@ RSpec.describe FinAppsCore::Utils::ParameterFilter do
|
|
15
15
|
login: 'sammysosa',
|
16
16
|
username: 'johnny',
|
17
17
|
name: 'george',
|
18
|
-
|
19
|
-
|
18
|
+
account: {
|
19
|
+
routing_no: '2316151651',
|
20
|
+
account_no: '987984654'
|
21
|
+
},
|
20
22
|
tpr_id: 'asdfasdf5465w1e65r4we654r',
|
21
23
|
'x-tenant-token': '498798465132154987498'
|
22
24
|
}
|
@@ -29,8 +31,10 @@ RSpec.describe FinAppsCore::Utils::ParameterFilter do
|
|
29
31
|
login: '[REDACTED]',
|
30
32
|
username: '[REDACTED]',
|
31
33
|
name: 'george',
|
32
|
-
|
33
|
-
|
34
|
+
account: {
|
35
|
+
routing_no: '[REDACTED]',
|
36
|
+
account_no: '[REDACTED]'
|
37
|
+
},
|
34
38
|
tpr_id: '[REDACTED]',
|
35
39
|
'x-tenant-token': '[REDACTED]'
|
36
40
|
}
|
@@ -8,13 +8,12 @@ RSpec.describe FinAppsCore::Utils::Validatable do
|
|
8
8
|
describe '#not_blank' do
|
9
9
|
context 'for null values' do
|
10
10
|
it 'should raise FinAppsCore::MissingArgumentsError' do
|
11
|
-
expect { FakeClass.new.not_blank(nil) }.to raise_error(FinAppsCore::MissingArgumentsError
|
12
|
-
'Missing argument')
|
11
|
+
expect { FakeClass.new.not_blank(nil) }.to raise_error(FinAppsCore::MissingArgumentsError)
|
13
12
|
end
|
14
13
|
|
15
14
|
it 'should describe the argument name when provided' do
|
16
15
|
expect { FakeClass.new.not_blank(nil, :name) }.to raise_error(FinAppsCore::MissingArgumentsError,
|
17
|
-
'
|
16
|
+
': name')
|
18
17
|
end
|
19
18
|
end
|
20
19
|
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finapps_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erich Quintero
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.15'
|
20
|
+
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
22
|
+
version: 0.15.3
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
29
|
+
version: '0.15'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.15.3
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: faraday_middleware
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +59,7 @@ dependencies:
|
|
53
59
|
version: '0.4'
|
54
60
|
- - ">="
|
55
61
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.4.
|
62
|
+
version: 0.4.7
|
57
63
|
type: :runtime
|
58
64
|
prerelease: false
|
59
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -63,47 +69,27 @@ dependencies:
|
|
63
69
|
version: '0.4'
|
64
70
|
- - ">="
|
65
71
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.4.
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: typhoeus
|
69
|
-
requirement: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '1.3'
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 1.3.0
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '1.3'
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 1.3.0
|
72
|
+
version: 0.4.7
|
87
73
|
- !ruby/object:Gem::Dependency
|
88
74
|
name: bundler
|
89
75
|
requirement: !ruby/object:Gem::Requirement
|
90
76
|
requirements:
|
91
77
|
- - "~>"
|
92
78
|
- !ruby/object:Gem::Version
|
93
|
-
version: '1.
|
79
|
+
version: '1.16'
|
94
80
|
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
82
|
+
version: 1.16.6
|
97
83
|
type: :development
|
98
84
|
prerelease: false
|
99
85
|
version_requirements: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1.
|
89
|
+
version: '1.16'
|
104
90
|
- - ">="
|
105
91
|
- !ruby/object:Gem::Version
|
106
|
-
version: 1.
|
92
|
+
version: 1.16.6
|
107
93
|
- !ruby/object:Gem::Dependency
|
108
94
|
name: codeclimate-test-reporter
|
109
95
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,7 +99,7 @@ dependencies:
|
|
113
99
|
version: '1.0'
|
114
100
|
- - ">="
|
115
101
|
- !ruby/object:Gem::Version
|
116
|
-
version: 1.0.
|
102
|
+
version: 1.0.9
|
117
103
|
type: :development
|
118
104
|
prerelease: false
|
119
105
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -123,81 +109,87 @@ dependencies:
|
|
123
109
|
version: '1.0'
|
124
110
|
- - ">="
|
125
111
|
- !ruby/object:Gem::Version
|
126
|
-
version: 1.0.
|
112
|
+
version: 1.0.9
|
127
113
|
- !ruby/object:Gem::Dependency
|
128
114
|
name: gem-release
|
129
115
|
requirement: !ruby/object:Gem::Requirement
|
130
116
|
requirements:
|
131
117
|
- - "~>"
|
132
118
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0
|
119
|
+
version: '2.0'
|
134
120
|
- - ">="
|
135
121
|
- !ruby/object:Gem::Version
|
136
|
-
version: 0.
|
122
|
+
version: 2.0.1
|
137
123
|
type: :development
|
138
124
|
prerelease: false
|
139
125
|
version_requirements: !ruby/object:Gem::Requirement
|
140
126
|
requirements:
|
141
127
|
- - "~>"
|
142
128
|
- !ruby/object:Gem::Version
|
143
|
-
version: '0
|
129
|
+
version: '2.0'
|
144
130
|
- - ">="
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version: 0.
|
132
|
+
version: 2.0.1
|
147
133
|
- !ruby/object:Gem::Dependency
|
148
134
|
name: rake
|
149
135
|
requirement: !ruby/object:Gem::Requirement
|
150
136
|
requirements:
|
151
137
|
- - "~>"
|
152
138
|
- !ruby/object:Gem::Version
|
153
|
-
version: '12.
|
139
|
+
version: '12.3'
|
154
140
|
- - ">="
|
155
141
|
- !ruby/object:Gem::Version
|
156
|
-
version: 12.1
|
142
|
+
version: 12.3.1
|
157
143
|
type: :development
|
158
144
|
prerelease: false
|
159
145
|
version_requirements: !ruby/object:Gem::Requirement
|
160
146
|
requirements:
|
161
147
|
- - "~>"
|
162
148
|
- !ruby/object:Gem::Version
|
163
|
-
version: '12.
|
149
|
+
version: '12.3'
|
164
150
|
- - ">="
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version: 12.1
|
152
|
+
version: 12.3.1
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: rspec
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
157
|
- - "~>"
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: '3.
|
159
|
+
version: '3.8'
|
174
160
|
- - ">="
|
175
161
|
- !ruby/object:Gem::Version
|
176
|
-
version: 3.
|
162
|
+
version: 3.8.0
|
177
163
|
type: :development
|
178
164
|
prerelease: false
|
179
165
|
version_requirements: !ruby/object:Gem::Requirement
|
180
166
|
requirements:
|
181
167
|
- - "~>"
|
182
168
|
- !ruby/object:Gem::Version
|
183
|
-
version: '3.
|
169
|
+
version: '3.8'
|
184
170
|
- - ">="
|
185
171
|
- !ruby/object:Gem::Version
|
186
|
-
version: 3.
|
172
|
+
version: 3.8.0
|
187
173
|
- !ruby/object:Gem::Dependency
|
188
174
|
name: rubocop
|
189
175
|
requirement: !ruby/object:Gem::Requirement
|
190
176
|
requirements:
|
191
177
|
- - "~>"
|
192
178
|
- !ruby/object:Gem::Version
|
193
|
-
version: 0.
|
179
|
+
version: '0.59'
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 0.59.2
|
194
183
|
type: :development
|
195
184
|
prerelease: false
|
196
185
|
version_requirements: !ruby/object:Gem::Requirement
|
197
186
|
requirements:
|
198
187
|
- - "~>"
|
199
188
|
- !ruby/object:Gem::Version
|
200
|
-
version: 0.
|
189
|
+
version: '0.59'
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: 0.59.2
|
201
193
|
- !ruby/object:Gem::Dependency
|
202
194
|
name: sinatra
|
203
195
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,7 +199,7 @@ dependencies:
|
|
207
199
|
version: '2.0'
|
208
200
|
- - ">="
|
209
201
|
- !ruby/object:Gem::Version
|
210
|
-
version: 2.0.
|
202
|
+
version: 2.0.4
|
211
203
|
type: :development
|
212
204
|
prerelease: false
|
213
205
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -217,27 +209,27 @@ dependencies:
|
|
217
209
|
version: '2.0'
|
218
210
|
- - ">="
|
219
211
|
- !ruby/object:Gem::Version
|
220
|
-
version: 2.0.
|
212
|
+
version: 2.0.4
|
221
213
|
- !ruby/object:Gem::Dependency
|
222
214
|
name: webmock
|
223
215
|
requirement: !ruby/object:Gem::Requirement
|
224
216
|
requirements:
|
225
217
|
- - "~>"
|
226
218
|
- !ruby/object:Gem::Version
|
227
|
-
version: '3.
|
219
|
+
version: '3.4'
|
228
220
|
- - ">="
|
229
221
|
- !ruby/object:Gem::Version
|
230
|
-
version: 3.
|
222
|
+
version: 3.4.2
|
231
223
|
type: :development
|
232
224
|
prerelease: false
|
233
225
|
version_requirements: !ruby/object:Gem::Requirement
|
234
226
|
requirements:
|
235
227
|
- - "~>"
|
236
228
|
- !ruby/object:Gem::Version
|
237
|
-
version: '3.
|
229
|
+
version: '3.4'
|
238
230
|
- - ">="
|
239
231
|
- !ruby/object:Gem::Version
|
240
|
-
version: 3.
|
232
|
+
version: 3.4.2
|
241
233
|
description: A simple library for communicating with the FinApps REST API. Core functionality.
|
242
234
|
email:
|
243
235
|
- erich@financialapps.com
|
@@ -332,25 +324,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
332
324
|
version: '0'
|
333
325
|
requirements: []
|
334
326
|
rubyforge_project:
|
335
|
-
rubygems_version: 2.7.
|
327
|
+
rubygems_version: 2.7.7
|
336
328
|
signing_key:
|
337
329
|
specification_version: 4
|
338
330
|
summary: FinApps REST API ruby client - Core.
|
339
331
|
test_files:
|
340
|
-
- spec/
|
341
|
-
- spec/rest/base_client_spec.rb
|
342
|
-
- spec/rest/credentials_spec.rb
|
343
|
-
- spec/rest/configuration_spec.rb
|
344
|
-
- spec/rest/resources_spec.rb
|
345
|
-
- spec/support/fake_api.rb
|
346
|
-
- spec/utils/parameter_filter_spec.rb
|
347
|
-
- spec/utils/validatable_spec.rb
|
348
|
-
- spec/spec_helpers/client.rb
|
349
|
-
- spec/spec_helper.rb
|
350
|
-
- spec/core_extensions/object/is_integer_spec.rb
|
351
|
-
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
332
|
+
- spec/middleware/response/raise_error_spec.rb
|
352
333
|
- spec/middleware/request/user_agent_spec.rb
|
334
|
+
- spec/middleware/request/request_id_spec.rb
|
353
335
|
- spec/middleware/request/tenant_authentication_spec.rb
|
354
336
|
- spec/middleware/request/accept_json_spec.rb
|
355
|
-
- spec/middleware/request/
|
356
|
-
- spec/
|
337
|
+
- spec/middleware/request/no_encoding_basic_authentication_spec.rb
|
338
|
+
- spec/spec_helper.rb
|
339
|
+
- spec/spec_helpers/client.rb
|
340
|
+
- spec/utils/validatable_spec.rb
|
341
|
+
- spec/utils/parameter_filter_spec.rb
|
342
|
+
- spec/support/fake_api.rb
|
343
|
+
- spec/core_extensions/object/is_integer_spec.rb
|
344
|
+
- spec/rest/credentials_spec.rb
|
345
|
+
- spec/rest/base_client_spec.rb
|
346
|
+
- spec/rest/configuration_spec.rb
|
347
|
+
- spec/rest/defaults_spec.rb
|
348
|
+
- spec/rest/resources_spec.rb
|