faraday 0.12.1 → 0.12.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbb31a41849c965d7f7afab1cdf77d26fb4abef3
4
- data.tar.gz: 035b9e1a381df32a062208689d48d5f05ad91553
3
+ metadata.gz: 515b1bc445a69d6ccdbb95b042750cd08962053a
4
+ data.tar.gz: 504c63a2fb5c1bb6eec8b8cf9d930bd966984be2
5
5
  SHA512:
6
- metadata.gz: e9a7ea04f7acf4b878d687ec1c3981563d82b76687e4f2e5e9b804f3bc1feb99c160c91b1807552fd1012406ece4b3fdb59cb421ecb890975a6d07971e71eab9
7
- data.tar.gz: 15d8bfbf9bde53177db2b8c92e6b166cf19939138d9a6c4a662ffe1cd6f4e502c30fafa9c4e54e54aa88c37e49e013582fc96279f39e4e6630f30473623792a8
6
+ metadata.gz: 5da384774bb02aae523a55d2f383ae4f0804757eabd1a398eca2998f6c6279391cb48c39e99d7948d63b4a71953ef98e31eb7e5dad57af5b615c9af007e8e870
7
+ data.tar.gz: 63f74afdb08b2232af31ceb76309466f30a3fc4e4d9edbb2e67d4ecac94e432591edc0932fb32ad3945af261b49c7fc6663e06bc8fbfef1f24a9ce60418cc76a
data/README.md CHANGED
@@ -42,7 +42,8 @@ conn = Faraday.new(:url => 'http://www.example.com')
42
42
  response = conn.get '/users' # GET http://www.example.com/users'
43
43
  ```
44
44
 
45
- Connections can also take an options hash as a parameter or be configured by using a block. Checkout the section called [Advanced middleware usage](#advanced-middleware-usage) for more details about how to use this block for configurations.
45
+ Connections can also take an options hash as a parameter or be configured by using a block. Checkout the section called [Advanced middleware usage](#advanced-middleware-usage) for more details about how to use this block for configurations.
46
+ Since the default middleware stack uses url\_encoded middleware and default adapter, use them on building your own middleware stack.
46
47
 
47
48
  ```ruby
48
49
  conn = Faraday.new(:url => 'http://sushi.com') do |faraday|
@@ -54,6 +55,7 @@ end
54
55
  # Filter sensitive information from logs with a regex matcher
55
56
 
56
57
  conn = Faraday.new(:url => 'http://sushi.com/api_key=s3cr3t') do |faraday|
58
+ faraday.request :url_encoded # form-encode POST params
57
59
  faraday.response :logger do | logger |
58
60
  logger.filter(/(api_key=)(\w+)/,'\1[REMOVED]')
59
61
  end
@@ -166,6 +168,7 @@ Faraday.new(...) do |conn|
166
168
  conn.request :multipart
167
169
  conn.request :url_encoded
168
170
 
171
+ # Last middleware must be the adapter:
169
172
  conn.adapter :net_http
170
173
  end
171
174
  ```
@@ -14,7 +14,7 @@ require 'forwardable'
14
14
  # conn.get '/'
15
15
  #
16
16
  module Faraday
17
- VERSION = "0.12.1"
17
+ VERSION = "0.12.2"
18
18
 
19
19
  class << self
20
20
  # Public: Gets or sets the root path that Faraday is being loaded from.
@@ -109,7 +109,7 @@ module Faraday
109
109
  #
110
110
  # Returns a Faraday::Connection, configured with the #default_adapter.
111
111
  def self.default_connection
112
- @default_connection ||= Connection.new
112
+ @default_connection ||= Connection.new(default_connection_options)
113
113
  end
114
114
 
115
115
  # Gets the default connection options used when calling Faraday#new.
@@ -121,6 +121,7 @@ module Faraday
121
121
 
122
122
  # Public: Sets the default options used when calling Faraday#new.
123
123
  def self.default_connection_options=(options)
124
+ @default_connection = nil
124
125
  @default_connection_options = ConnectionOptions.from(options)
125
126
  end
126
127
 
@@ -50,7 +50,7 @@ module Faraday
50
50
  else
51
51
  raise Faraday::Error::ClientError, $!
52
52
  end
53
- rescue Errno::ECONNREFUSED, IOError
53
+ rescue Errno::ECONNREFUSED, IOError, SocketError
54
54
  raise Faraday::Error::ConnectionFailed, $!
55
55
  rescue => err
56
56
  if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err
@@ -5,11 +5,11 @@ module Faraday
5
5
 
6
6
  def call(env)
7
7
  super
8
-
9
8
  # TODO: support streaming requests
10
9
  env[:body] = env[:body].read if env[:body].respond_to? :read
11
10
 
12
11
  session = @session ||= create_session
12
+ configure_ssl(session, env[:ssl]) if env[:url].scheme == 'https' and env[:ssl]
13
13
 
14
14
  if req = env[:request]
15
15
  session.timeout = session.connect_timeout = req[:timeout] if req[:timeout]
@@ -67,10 +67,17 @@ module Faraday
67
67
 
68
68
  def create_session
69
69
  session = ::Patron::Session.new
70
- session.insecure = true
71
70
  @config_block.call(session) if @config_block
72
71
  session
73
72
  end
73
+
74
+ def configure_ssl(session, ssl)
75
+ if ssl.fetch(:verify, true)
76
+ session.cacert = ssl[:ca_file]
77
+ else
78
+ session.insecure = true
79
+ end
80
+ end
74
81
  end
75
82
  end
76
83
  end
@@ -57,7 +57,7 @@ module Faraday
57
57
  def initialize(url = nil, options = nil)
58
58
  options = ConnectionOptions.from(options)
59
59
 
60
- if url.is_a?(Hash)
60
+ if url.is_a?(Hash) || url.is_a?(ConnectionOptions)
61
61
  options = options.merge(url)
62
62
  url = options.url
63
63
  end
@@ -49,7 +49,7 @@ module Faraday
49
49
  other.each do |key, other_value|
50
50
  self_value = self.send(key)
51
51
  sub_options = self.class.options_for(key)
52
- new_value = sub_options ? self_value.merge(other_value) : other_value
52
+ new_value = (self_value && sub_options && other_value) ? self_value.merge(other_value) : other_value
53
53
  self.send("#{key}=", new_value) unless new_value.nil?
54
54
  end
55
55
  self
@@ -84,6 +84,7 @@ module Faraday
84
84
  use_symbol(Faraday::Middleware, klass, *args, &block)
85
85
  else
86
86
  raise_if_locked
87
+ warn_middleware_after_adapter if adapter_set?
87
88
  @handlers << self.class::Handler.new(klass, *args, &block)
88
89
  end
89
90
  end
@@ -105,6 +106,7 @@ module Faraday
105
106
  def insert(index, *args, &block)
106
107
  raise_if_locked
107
108
  index = assert_index(index)
109
+ warn_middleware_after_adapter if inserting_after_adapter?(index)
108
110
  handler = self.class::Handler.new(*args, &block)
109
111
  @handlers.insert(index, handler)
110
112
  end
@@ -200,6 +202,26 @@ module Faraday
200
202
  raise StackLocked, "can't modify middleware stack after making a request" if locked?
201
203
  end
202
204
 
205
+ def warn_middleware_after_adapter
206
+ warn "WARNING: Unexpected middleware set after the adapter. " \
207
+ "This won't be supported from Faraday 1.0."
208
+ end
209
+
210
+ def adapter_set?
211
+ @handlers.any? { |handler| is_adapter?(handler) }
212
+ end
213
+
214
+ def inserting_after_adapter?(index)
215
+ adapter_index = @handlers.find_index { |handler| is_adapter?(handler) }
216
+ return false if adapter_index.nil?
217
+
218
+ index > adapter_index
219
+ end
220
+
221
+ def is_adapter?(handler)
222
+ handler.klass.ancestors.include? Faraday::Adapter
223
+ end
224
+
203
225
  def use_symbol(mod, key, *args, &block)
204
226
  use(mod.lookup_middleware(key), *args, &block)
205
227
  end
@@ -10,12 +10,22 @@ module Faraday
10
10
  new(value)
11
11
  end
12
12
 
13
+ def self.allocate
14
+ new_self = super
15
+ new_self.initialize_names
16
+ new_self
17
+ end
18
+
13
19
  def initialize(hash = nil)
14
20
  super()
15
21
  @names = {}
16
22
  self.update(hash || {})
17
23
  end
18
24
 
25
+ def initialize_names
26
+ @names = {}
27
+ end
28
+
19
29
  # on dup/clone, we need to duplicate @names hash
20
30
  def initialize_copy(other)
21
31
  super
@@ -95,7 +105,14 @@ module Faraday
95
105
 
96
106
  def parse(header_string)
97
107
  return unless header_string && !header_string.empty?
98
- header_string.split(/\r\n/).
108
+
109
+ headers = header_string.split(/\r\n/)
110
+
111
+ # Find the last set of response headers.
112
+ start_index = headers.rindex { |x| x.match(/^HTTP\//) }
113
+ last_response = headers.slice(start_index, headers.size)
114
+
115
+ last_response.
99
116
  tap { |a| a.shift if a.first.index('HTTP/') == 0 }. # drop the HTTP status line
100
117
  map { |h| h.split(/:\s*/, 2) }.reject { |p| p[0].nil? }. # split key and value, ignore blank lines
101
118
  each { |key, value|
@@ -108,14 +125,6 @@ module Faraday
108
125
  }
109
126
  end
110
127
 
111
- def init_with(coder)
112
- @names = coder['names']
113
- end
114
-
115
- def encode_with(coder)
116
- coder['names'] = @names
117
- end
118
-
119
128
  protected
120
129
 
121
130
  def names
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.12.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Olson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-21 00:00:00.000000000 Z
11
+ date: 2017-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multipart-post