faraday-excon 1.0.0 → 2.1.0

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: b78b8cf1e6b7dfecc1beb94c545a64be9c7c29f2dc71b88ddf52a954154f99d2
4
- data.tar.gz: d6f22b96924c1221e19d62250a2250cdb3990f7da1d6bdfdd524ee7d969d5f9d
3
+ metadata.gz: 48cc25dbe1f1b2758a18d7b632862a0b925c41dcf60b85017571af0b1ae9e5c8
4
+ data.tar.gz: 31f11d707f4d986908b2a0d92203843c563a40c49c0b363f02180747f8b85c4c
5
5
  SHA512:
6
- metadata.gz: 4db552b4e3b61fa66dd169405cb113f6b0de62f75f07b822c91b7152d01de96b761ba5528b9b8c9c09889c070d2e4788b31441216b75af1a188e67a7779915ec
7
- data.tar.gz: 0a82f49683023ff4c9099820fe70fdb2f2c446dd2abcfeff30e180546ddc40eec6f39f1ea946cf94cae267a0cbc1d9ffdbe68c62f3147439a917da20a446958e
6
+ metadata.gz: cd71d9c447b9fa17960250bba74842d173491be820aa1c2713fa28cc78a3558d11d5362549e2a7593132b353a1aca9d40dcc1864ac2bc41acdf0b798e6f86e39
7
+ data.tar.gz: 983de5b151300ac67cd7ed09df531353bea392e49c740087e4810444cbe6aa7799ef43c679b25c1db681ca8b7e8d381e6fd232c1af3f9cf15ae9588c07e70e99
data/README.md CHANGED
@@ -6,7 +6,7 @@ Every adapter is defined into its own gem. This gem defines the adapter for Exco
6
6
 
7
7
  ## Installation
8
8
 
9
- Add this line to your application's Gemfile:
9
+ Add these lines to your application's Gemfile:
10
10
 
11
11
  ```ruby
12
12
  gem 'faraday-excon'
@@ -16,21 +16,26 @@ And then execute:
16
16
 
17
17
  $ bundle install
18
18
 
19
- Or install it yourself as:
19
+ Or install them yourself as:
20
20
 
21
21
  $ gem install faraday-excon
22
22
 
23
23
  ## Usage
24
24
 
25
- Configure your Faraday connection to use this adapter like this:
26
-
27
25
  ```ruby
28
- connection = Faraday.new(url, conn_options) do |conn|
29
- conn.adapter(:excon)
26
+ conn = Faraday.new(...) do |f|
27
+ # no custom options available
28
+ f.adapter :excon
30
29
  end
31
30
  ```
32
31
 
33
- For more information on how to setup your Faraday connection and adapters usage, please refer to the [Faraday Website][faraday-website].
32
+ Passing connection options:
33
+ ```ruby
34
+ conn = Faraday.new(...) do |f|
35
+ # Will keep the connection memoized within the adapter, and rely that flag to excon
36
+ f.adapter :excon, persistent: true
37
+ end
38
+ ```
34
39
 
35
40
  ## Development
36
41
 
@@ -4,17 +4,27 @@ module Faraday
4
4
  class Adapter
5
5
  # Excon adapter.
6
6
  class Excon < Faraday::Adapter
7
- dependency 'excon'
8
-
9
7
  def build_connection(env)
8
+ if @connection_options[:persistent]
9
+ return @connection if defined? @connection
10
+ end
10
11
  opts = opts_from_env(env)
11
- ::Excon.new(env[:url].to_s, opts.merge(@connection_options))
12
+
13
+ # remove path & query when creating connection
14
+ # because if it is persistent, it can re-use the conn
15
+ url = env[:url].dup
16
+ url.path = ''
17
+ url.query = nil
18
+
19
+ @connection = ::Excon.new(url.to_s, opts.merge(@connection_options))
12
20
  end
13
21
 
14
22
  def call(env)
15
23
  super
16
24
 
17
25
  req_opts = {
26
+ path: env[:url].path,
27
+ query: env[:url].query,
18
28
  method: env[:method].to_s.upcase,
19
29
  headers: env[:request_headers],
20
30
  body: read_body(env)
@@ -28,11 +38,22 @@ module Faraday
28
38
  end
29
39
  end
30
40
 
31
- resp = connection(env) { |http| http.request(req_opts) }
41
+ resp = connect_and_request(env, req_opts)
32
42
  save_response(env, resp.status.to_i, resp.body, resp.headers,
33
43
  resp.reason_phrase)
34
44
 
35
45
  @app.call(env)
46
+ end
47
+
48
+ # TODO: support streaming requests
49
+ def read_body(env)
50
+ env[:body].respond_to?(:read) ? env[:body].read : env[:body]
51
+ end
52
+
53
+ private
54
+
55
+ def connect_and_request(env, req_opts)
56
+ connection(env) { |http| http.request(req_opts) }
36
57
  rescue ::Excon::Errors::SocketError => e
37
58
  raise Faraday::TimeoutError, e if e.message.match?(/\btimeout\b/)
38
59
 
@@ -43,13 +64,6 @@ module Faraday
43
64
  raise Faraday::TimeoutError, e
44
65
  end
45
66
 
46
- # TODO: support streaming requests
47
- def read_body(env)
48
- env[:body].respond_to?(:read) ? env[:body].read : env[:body]
49
- end
50
-
51
- private
52
-
53
67
  def opts_from_env(env)
54
68
  opts = {}
55
69
  amend_opts_with_ssl!(opts, env[:ssl]) if needs_ssl_settings?(env)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Faraday
4
4
  module Excon
5
- VERSION = '1.0.0'
5
+ VERSION = '2.1.0'
6
6
  end
7
7
  end
data/lib/faraday/excon.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'excon'
4
+ require 'faraday'
3
5
  require_relative 'adapter/excon'
4
6
  require_relative 'excon/version'
5
7
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-excon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - Mattia Giuffrida
7
+ - "@iMacTia"
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-12 00:00:00.000000000 Z
11
+ date: 2022-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -25,145 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.27.4
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
- - !ruby/object:Gem::Dependency
42
- name: faraday
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.0'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '13.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '13.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
83
- - !ruby/object:Gem::Dependency
84
- name: simplecov
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.19.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.19.0
97
- - !ruby/object:Gem::Dependency
98
- name: multipart-parser
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.1.1
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.1.1
111
- - !ruby/object:Gem::Dependency
112
- name: webmock
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '3.4'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '3.4'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.91.1
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 0.91.1
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop-packaging
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.5'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.5'
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop-performance
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.0'
167
41
  description: Faraday adapter for Excon
168
42
  email:
169
43
  - giuffrida.mattia@gmail.com
@@ -182,7 +56,7 @@ licenses:
182
56
  metadata:
183
57
  homepage_uri: https://github.com/lostisland/faraday-excon
184
58
  source_code_uri: https://github.com/lostisland/faraday-excon
185
- changelog_uri: https://github.com/lostisland/faraday-excon
59
+ changelog_uri: https://github.com/lostisland/faraday-excon/releases/tag/v2.1.0
186
60
  post_install_message:
187
61
  rdoc_options: []
188
62
  require_paths:
@@ -191,14 +65,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
65
  requirements:
192
66
  - - ">="
193
67
  - !ruby/object:Gem::Version
194
- version: 2.4.0
68
+ version: 2.6.0
195
69
  required_rubygems_version: !ruby/object:Gem::Requirement
196
70
  requirements:
197
71
  - - ">="
198
72
  - !ruby/object:Gem::Version
199
73
  version: '0'
200
74
  requirements: []
201
- rubygems_version: 3.1.4
75
+ rubygems_version: 3.1.6
202
76
  signing_key:
203
77
  specification_version: 4
204
78
  summary: Faraday adapter for Excon