Skip to content

Commit 8dec6d9

Browse files
committed
Compatible Faraday v2
faraday_middleware is deprecated, and does not support Faraday v2. From v1.10.0, faraday is bundled json middleware, and this gem can support Faraday v2. * Require Ruby: v2.6 or higer * Faraday v2 required Ruby v2.6 * Require Faraday: v1.10 or higher * backport json middleware from this version. * ref. lostisland/faraday#1400 * require `faraday-multipart` * From Faraday v2, multipart middleware have been moved to separate faraday-multipart gem. * Add CI matrix * Run tests on both versions of Faraday.
1 parent 97d0b29 commit 8dec6d9

File tree

9 files changed

+34
-15
lines changed

9 files changed

+34
-15
lines changed

.github/workflows/ruby.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ jobs:
1212

1313
strategy:
1414
matrix:
15-
ruby: ['2.5', '2.6', '2.7', '3.0', '3.1']
15+
ruby: ['2.6', '2.7', '3.0', '3.1']
16+
gemfile: [faraday_1, faraday_2]
17+
18+
env:
19+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
1620

1721
steps:
1822
- uses: actions/checkout@v3

.rubocop.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ require:
33
- rubocop-rspec
44

55
AllCops:
6-
TargetRubyVersion: 2.5
6+
TargetRubyVersion: 2.6
77
Exclude:
88
- 'bin/**/*'
99
- 'vendor/**/*'

Gemfile.lock

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ PATH
22
remote: .
33
specs:
44
mrkt (1.2.1)
5-
faraday (>= 1, < 3)
6-
faraday_middleware (~> 1.0)
5+
faraday (>= 1.10, < 3)
6+
faraday-multipart
77

88
GEM
99
remote: https://rubygems.org/
@@ -40,8 +40,6 @@ GEM
4040
faraday-patron (1.0.0)
4141
faraday-rack (1.0.0)
4242
faraday-retry (1.0.3)
43-
faraday_middleware (1.2.0)
44-
faraday (~> 1.0)
4543
gem-release (2.2.2)
4644
hashdiff (1.0.1)
4745
method_source (1.0.0)

gemfiles/faraday_1.gemfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# frozen_string_literal: true
2+
3+
source 'https://rubygems.org'
4+
5+
# require v1.10 or higher.
6+
# Because gem needs JSON middleware.
7+
#
8+
# see: https://github.com/lostisland/faraday/releases/tag/v1.10.0
9+
gem 'faraday', '~> 1.10'
10+
11+
eval_gemfile File.expand_path('../Gemfile', __dir__)

gemfiles/faraday_2.gemfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# frozen_string_literal: true
2+
3+
source 'https://rubygems.org'
4+
5+
gem 'faraday', '~> 2'
6+
7+
eval_gemfile File.expand_path('../Gemfile', __dir__)

lib/mrkt/concerns/connection.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def init_connection
1212
conn.request :url_encoded
1313

1414
conn.response :logger, @logger, (@log_options || {}) if @debug
15-
conn.response :mkto, content_type: /\bjson$/
15+
conn.response :mkto, content_type: /\bjson$/, parser_options: { symbolize_names: true }
1616

1717
conn.options.timeout = @options[:read_timeout] if @options.key?(:read_timeout)
1818
conn.options.open_timeout = @options[:open_timeout] if @options.key?(:open_timeout)

lib/mrkt/faraday.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'faraday'
2+
require 'faraday/multipart'
23

34
require 'mrkt/faraday/params_encoder'
45
require 'mrkt/faraday_middleware'

lib/mrkt/faraday_middleware/response.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
require 'faraday_middleware'
1+
require 'faraday/response/json'
22

33
module Mrkt
44
module FaradayMiddleware
5-
class Response < ::FaradayMiddleware::ParseJson
6-
define_parser do |body|
7-
JSON.parse(body, symbolize_names: true) unless body.strip.empty?
8-
end
5+
class Response < ::Faraday::Response::Json
6+
private
97

108
def process_response(env)
119
super

mrkt.gemspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
1919

2020
spec.metadata['rubygems_mfa_required'] = 'true'
2121

22-
spec.required_ruby_version = '>= 2.5'
22+
spec.required_ruby_version = '>= 2.6'
2323

24-
spec.add_dependency 'faraday', '>= 1', '< 3'
25-
spec.add_dependency 'faraday_middleware', '~> 1.0'
24+
spec.add_dependency 'faraday', '>= 1.10', '< 3'
25+
spec.add_dependency 'faraday-multipart'
2626

2727
spec.add_development_dependency 'bundler', '~> 2.0'
2828
spec.add_development_dependency 'gem-release', '~> 2.1'

0 commit comments

Comments
 (0)