increase 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a945cde9440a62a76cd7a95c5bc91b7dfea452fada50349e3d749c6fc95fa72e
4
- data.tar.gz: b6ce6f53d72e35e027287feff54fc47c7e855fa364fc11040646efd92c8ce028
3
+ metadata.gz: 9520a7eb024d05477e162e1158a07f54167a6a89297f44d3a71caa01a40599cf
4
+ data.tar.gz: 273bb964f85fb97660212f6a2046a58caf4e7302d07859fe3d562afe8269922d
5
5
  SHA512:
6
- metadata.gz: 30fb2ded08ba6aa27adfa4f85932e941d4e727ae069ab8df915c2dd001cdd35779b8b58090e29695100270ec66da45cd6d495efdd0b7acc4bf747473b3a5970a
7
- data.tar.gz: 5a591e007db71c14a1a4e827650bea8a6eda56d68e248eb2988e02380c6de4ccdc5054963c09bda8f2797c36a7dc148fb5a14de58105ff535cbc56bd137f7698
6
+ metadata.gz: d4b399cda4f620ca00549831546a4992069eb17cb84f08ce9aa0039744e7d3ea4868dd3498ee593c001678633bf708a6e8257ee093f75922996c0f1012f9aa6d
7
+ data.tar.gz: bfd03c310aaf256d89228e6bcd0da10e3505004ab958c10c30baa51dd6df1c22d09ca974bcd61def524888dc9203a00fef78a51082991d2dd3aa8701f6060294
data/CHANGELOG.md ADDED
@@ -0,0 +1,90 @@
1
+ # Changelog
2
+
3
+ ## [0.3.1] - 2023-03-23
4
+
5
+ ### Enhancements
6
+
7
+ - Support Faraday >= 1.0.1 (https://github.com/garyhtou/increase-ruby/pull/8)
8
+
9
+
10
+ ## [0.3.0] - 2023-03-23
11
+
12
+ ### Enhancements
13
+
14
+ - Better developer experience for file uploads (9fc40df62a537ed3402a0c0deb5bee908d84b671)
15
+
16
+ ### Documentation
17
+
18
+ - Pin gem version in install command (2127f5a04be8832ba5c5c42476e2844fb6ca9c24)
19
+ - Update README to reflect new file upload DX (9fc40df62a537ed3402a0c0deb5bee908d84b671)
20
+
21
+
22
+ ## [0.2.0] - 2023-03-21
23
+
24
+ ### Enhancements
25
+
26
+ - Made webhook verification `verify` raise an error, but `verify?` return a bool (58d462fc648cafdcfdb7b8d2c0e0ec1f45362984)
27
+ - Wrote a generator to generate API resource classes from the OpenAPI spec (8eedc2d4a5daecd97c156546c649f27376eb9762)
28
+ - Added all API resources (2a04096dea06a34ba8ff1d5061475ed1a2354ac2)
29
+ - Supported getting response from `list` operation (a2141f034a4f29cfee0222a4fac32949581adbc6)
30
+
31
+ ### Fixes
32
+
33
+ - Use `ArgumentError` when unknown config passed to `Configuration` (cdd0703febd6f9dec0ecd4ac34fe465697edbf08)
34
+ - File uploads! Increase::Files.create now works (236cad5011b996b40793abe85698ba47fa1ba3f8)
35
+
36
+ ### Documentation
37
+
38
+ - Updated error handling example to be more clear (85d8d6ff102a8ef502040322537b79085f89779d)
39
+ - Fixed idempotency example (343ae6d4cb1b8216192e2f820836ca87cc3a9a36)
40
+ - Added example for passing hash to `with_config` (b82fac134c813d03a31466e83341acc891c1deb6)
41
+ - Updated Rails config example to use Rails credentials (2b4fec9c1d52d04e42760a9889ba1cb313b5bd18)
42
+ - Added list filtering example (6333f982062b2527f676a6aade4e5abf01a7816b)
43
+ - Added table of contents (88e9b6ae05aaa62974514a6c318f35e708e49fb5)
44
+ - Added full example for Idempotency keys (6d5ce8bdd3d4baf13c4d0800a159c784bc1bdc78)
45
+ - Added manual pagination example using `next_cursor` (57157e2965904c9150676696e8567b5518892945)
46
+
47
+
48
+ ## [0.1.3] - 2023-03-20
49
+
50
+ ### Enhancements
51
+
52
+ - Added `Limits` resource (98654433812b202ecfd31ba35d520981529f2e2b)
53
+ - Added `CheckTransfers` resource (a899c9ca6206af78df23ba8b62c8dfc88b7fc22d)
54
+ - Added `RoutingNumbers` resource (209e7f279a1ff648142ac6aca6cfe946fc653845)
55
+
56
+ ### Documentation
57
+
58
+ - Added section about webhook signature verification (650aed416ab820ed55f0ed8936f201274964fc37)
59
+ - Added section about Rails configuration (650aed416ab820ed55f0ed8936f201274964fc37)
60
+
61
+ ## [0.1.2] - 2023-03-20
62
+
63
+ ### Enhancements
64
+
65
+ - Added webhook verification support (ce193fb8888d497817ab5551bf8e9096c5bf7e26)
66
+ - Added user agent to requests (ce44249ead32ba4055b13ba576f0b91f20493cfc)
67
+ - Update supported Ruby version to >= 2.7.4 (c404f8ddc4762615bac660edabf0385716b4bd74)
68
+
69
+ ### Fixes
70
+
71
+ - Always apply default configuration options (079f0ca603a80dd2c9523df23244b64e2e0a5772)
72
+
73
+ ### Documentation
74
+
75
+ - Wrote the README! (aa7c778834cd268ab1318e44fceea0b062a5c5df)
76
+
77
+
78
+ ## [0.1.1] - 2023-03-19
79
+
80
+ ### Enhancements
81
+ - Added client-wide configuration options (c47e32c93371b43f2e0a3ac49525e46fbe9ef326)
82
+ - Load `INCREASE_API_KEY` and `INCREASE_BASE_URL` from environment variables (2e6cbe21a2b37c230dc3f2382613b98ffc3ea4d8, 24cea582c03b64018ed2f0997f99f4bae581a1fa, 4a80e4263c7917bbfa1371c70752476d7f7f0695)
83
+ - Added the following API resources:
84
+ - `AccountNumbers` (209b155c0fa3977c2c19602a2239c8b27001935e)
85
+ - `AccountTransfers` (6065a932522bd582aa4f177037a5eca8e5d1647d)
86
+ - `AchTransfers` (caef61c36bfffc780016880959f067b59bfa288e)
87
+ - `Cards` (b58bccc8aab00fd2ee69f2973898e6a13c1b2544)
88
+ - `Events` (dd3312638227be47f04c8bd740c3dd25104959e7)
89
+ - `PendingTransactions` (b6f4b2c02a9108603b4d1feee9a39c1a7f1086ef)
90
+ - `Transaction` (b6f4b2c02a9108603b4d1feee9a39c1a7f1086ef)
data/README.md CHANGED
@@ -19,14 +19,14 @@ Bare-Metal Banking APIs!
19
19
  Install the gem and add to the application's Gemfile by executing:
20
20
 
21
21
  ```sh
22
- $ bundle add increase -v 0.3.0
22
+ $ bundle add increase -v 0.3.1
23
23
  ```
24
24
 
25
25
  If bundler is not being used to manage dependencies, install the gem by
26
26
  executing:
27
27
 
28
28
  ```sh
29
- $ gem install increase -v 0.3.0
29
+ $ gem install increase -v 0.3.1
30
30
  ```
31
31
 
32
32
  ## Usage
@@ -1,13 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "increase/configuration"
4
+ require "increase/middleware/raise_api_error"
4
5
 
5
6
  require "faraday"
6
- require "faraday/follow_redirects"
7
- require "faraday/multipart"
8
-
9
- # Custom Faraday Middleware to handle raising errors
10
- require "faraday/raise_increase_api_error"
7
+ require "faraday/follow_redirects" # Supports both Faraday 1.0 and 2.0
8
+ if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new("2.0")
9
+ # In Faraday 2.0, multipart support is no longer included by default
10
+ require "faraday/multipart"
11
+ else
12
+ # In Faraday 1.0, the JSON middleware is not included by default
13
+ require "increase/middleware/encode_json"
14
+ require "increase/middleware/parse_json"
15
+ end
11
16
 
12
17
  module Increase
13
18
  class Client
@@ -38,7 +43,7 @@ module Increase
38
43
  if @configuration.raise_api_errors
39
44
  # This custom middleware for raising Increase API errors must be
40
45
  # located before the JSON response middleware.
41
- f.use FaradayMiddleware::RaiseIncreaseApiError
46
+ f.use Increase::Middleware::RaiseApiError
42
47
  end
43
48
 
44
49
  f.response :json
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'tempfile'
4
- require 'marcel'
5
- require 'faraday'
6
- require 'pathname'
3
+ require "tempfile"
4
+ require "marcel"
5
+ require "faraday"
6
+ require "pathname"
7
7
 
8
8
  module Increase
9
9
  class FileUpload
@@ -33,11 +33,19 @@ module Increase
33
33
  end
34
34
 
35
35
  def file_part
36
- Faraday::Multipart::FilePart.new(
37
- @file,
38
- @content_type,
39
- @filename
40
- )
36
+ if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new("2.0")
37
+ Faraday::Multipart::FilePart.new(
38
+ @file,
39
+ @content_type,
40
+ @filename
41
+ )
42
+ else
43
+ Faraday::FilePart.new(
44
+ @file,
45
+ @content_type,
46
+ @filename
47
+ )
48
+ end
41
49
  end
42
50
 
43
51
  private
@@ -45,6 +53,5 @@ module Increase
45
53
  def default_filename
46
54
  "file upload #{Time.now}"
47
55
  end
48
-
49
56
  end
50
57
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+
5
+ module Increase
6
+ module Middleware
7
+ # JSON request middleware for Faraday 1.0
8
+ # In Faraday 2.0, the JSON middleware is bundled with the Faraday gem itself
9
+ #
10
+ # This middleware is from
11
+ # https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/request/encode_json.rb
12
+ class EncodeJson < Faraday::Middleware
13
+ CONTENT_TYPE = "Content-Type"
14
+ MIME_TYPE = "application/json"
15
+ MIME_TYPE_REGEX = %r{^application/(vnd\..+\+)?json$}.freeze
16
+
17
+ dependency do
18
+ require "json" unless defined?(::JSON)
19
+ end
20
+
21
+ def call(env)
22
+ match_content_type(env) do |data|
23
+ env[:body] = encode data
24
+ end
25
+ @app.call env
26
+ end
27
+
28
+ def encode(data)
29
+ ::JSON.generate data
30
+ end
31
+
32
+ def match_content_type(env)
33
+ return unless process_request?(env)
34
+
35
+ env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
36
+ yield env[:body] unless env[:body].respond_to?(:to_str)
37
+ end
38
+
39
+ def process_request?(env)
40
+ type = request_type(env)
41
+ has_body?(env) && (type.empty? || MIME_TYPE_REGEX =~ type)
42
+ end
43
+
44
+ def has_body?(env)
45
+ (body = env[:body]) && !(body.respond_to?(:to_str) && body.empty?)
46
+ end
47
+
48
+ def request_type(env)
49
+ type = env[:request_headers][CONTENT_TYPE].to_s
50
+ type = type.split(";", 2).first if type.index(";")
51
+ type
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ Faraday::Request.register_middleware(json: Increase::Middleware::EncodeJson)
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+ require "json"
5
+
6
+ module Increase
7
+ module Middleware
8
+ # JSON response middleware for Faraday 1.0
9
+ # In Faraday 2.0, the JSON middleware is bundled with the Faraday gem itself
10
+ #
11
+ # This middleware is from
12
+ # https://github.com/jsmestad/jsonapi-consumer/blob/7d9721ea7feb888ea1e43edb9f1c0c38334762ed/lib/jsonapi/consumer/middleware/parse_json.rb
13
+ class ParseJson < Faraday::Middleware
14
+ def call(environment)
15
+ @app.call(environment).on_complete do |env|
16
+ if process_response_type?(response_type(env))
17
+ env[:raw_body] = env[:body]
18
+ env[:body] = parse(env[:body])
19
+ end
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def parse(body)
26
+ ::JSON.parse(body) unless body.strip.empty?
27
+ end
28
+
29
+ def response_type(env)
30
+ type = env[:response_headers]["Content-Type"].to_s
31
+ type = type.split(";", 2).first if type.index(";")
32
+ type
33
+ end
34
+
35
+ def process_response_type?(type)
36
+ !!type.match(/\bjson$/)
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ Faraday::Response.register_middleware(json: Increase::Middleware::ParseJson)
@@ -0,0 +1,13 @@
1
+ require "faraday"
2
+
3
+ module Increase
4
+ module Middleware
5
+ class RaiseApiError < Faraday::Middleware
6
+ def on_complete(env)
7
+ return if env[:status] < 400
8
+
9
+ raise Increase::ApiError.from_response(env)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -29,7 +29,7 @@ module Increase
29
29
  with = [with].flatten.compact
30
30
 
31
31
  # TODO: This doesn't support multiple path params
32
- is_id = ->(path_segment) { path_segment.is_a?(Symbol) && path_segment.to_s.end_with?('id') }
32
+ is_id = ->(path_segment) { path_segment.is_a?(Symbol) && path_segment.to_s.end_with?("id") }
33
33
  has_id = path.any? is_id
34
34
 
35
35
  request_method = :request
@@ -13,7 +13,7 @@ module Increase
13
13
  end
14
14
 
15
15
  def next_cursor
16
- wrapped&.dig('next_cursor')
16
+ wrapped&.dig("next_cursor")
17
17
  end
18
18
  end
19
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Increase
4
- VERSION = "0.3.0"
4
+ VERSION = "0.3.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: increase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary Tou
@@ -14,30 +14,36 @@ dependencies:
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.7'
19
+ version: 1.0.1
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.1
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '2.7'
32
+ version: '2.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: faraday-follow_redirects
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - '='
37
+ - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: 0.3.0
39
+ version: '0.3'
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - '='
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: 0.3.0
46
+ version: '0.3'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: faraday-multipart
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -159,6 +165,7 @@ extra_rdoc_files: []
159
165
  files:
160
166
  - ".rspec"
161
167
  - ".standard.yml"
168
+ - CHANGELOG.md
162
169
  - Gemfile
163
170
  - LICENSE.txt
164
171
  - OPENAPI_VERSION
@@ -167,12 +174,14 @@ files:
167
174
  - bin/generate
168
175
  - bin/setup
169
176
  - generate/resource.rb.erb
170
- - lib/faraday/raise_increase_api_error.rb
171
177
  - lib/increase.rb
172
178
  - lib/increase/client.rb
173
179
  - lib/increase/configuration.rb
174
180
  - lib/increase/errors.rb
175
181
  - lib/increase/file_upload.rb
182
+ - lib/increase/middleware/encode_json.rb
183
+ - lib/increase/middleware/parse_json.rb
184
+ - lib/increase/middleware/raise_api_error.rb
176
185
  - lib/increase/resource.rb
177
186
  - lib/increase/resources.rb
178
187
  - lib/increase/resources/account_numbers.rb
@@ -1,11 +0,0 @@
1
- require "faraday"
2
-
3
- module FaradayMiddleware
4
- class RaiseIncreaseApiError < Faraday::Middleware
5
- def on_complete(env)
6
- return if env[:status] < 400
7
-
8
- raise Increase::ApiError.from_response(env)
9
- end
10
- end
11
- end