finapps_core 3.0.6 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|