faraday 0.16.0 → 0.17.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +232 -0
  3. data/LICENSE.md +1 -1
  4. data/README.md +358 -18
  5. data/Rakefile +13 -0
  6. data/lib/faraday/adapter/em_http.rb +97 -140
  7. data/lib/faraday/adapter/em_http_ssl_patch.rb +17 -23
  8. data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +15 -18
  9. data/lib/faraday/adapter/em_synchrony.rb +60 -104
  10. data/lib/faraday/adapter/excon.rb +55 -100
  11. data/lib/faraday/adapter/httpclient.rb +39 -61
  12. data/lib/faraday/adapter/net_http.rb +51 -103
  13. data/lib/faraday/adapter/net_http_persistent.rb +28 -49
  14. data/lib/faraday/adapter/patron.rb +35 -54
  15. data/lib/faraday/adapter/rack.rb +12 -28
  16. data/lib/faraday/adapter/test.rb +53 -86
  17. data/lib/faraday/adapter/typhoeus.rb +1 -4
  18. data/lib/faraday/adapter.rb +22 -36
  19. data/lib/faraday/autoload.rb +36 -47
  20. data/lib/faraday/connection.rb +179 -321
  21. data/lib/faraday/deprecate.rb +109 -0
  22. data/lib/faraday/error.rb +79 -21
  23. data/lib/faraday/middleware.rb +28 -4
  24. data/lib/faraday/options.rb +183 -32
  25. data/lib/faraday/parameters.rb +197 -4
  26. data/lib/faraday/rack_builder.rb +55 -66
  27. data/lib/faraday/request/authorization.rb +30 -42
  28. data/lib/faraday/request/basic_authentication.rb +7 -14
  29. data/lib/faraday/request/instrumentation.rb +27 -45
  30. data/lib/faraday/request/multipart.rb +48 -79
  31. data/lib/faraday/request/retry.rb +171 -197
  32. data/lib/faraday/request/token_authentication.rb +10 -15
  33. data/lib/faraday/request/url_encoded.rb +23 -41
  34. data/lib/faraday/request.rb +36 -68
  35. data/lib/faraday/response/logger.rb +69 -22
  36. data/lib/faraday/response/raise_error.rb +18 -36
  37. data/lib/faraday/response.rb +13 -20
  38. data/lib/faraday/upload_io.rb +67 -0
  39. data/lib/faraday/utils.rb +245 -28
  40. data/lib/faraday.rb +174 -93
  41. data/spec/faraday/deprecate_spec.rb +147 -0
  42. data/spec/faraday/error_spec.rb +102 -0
  43. data/spec/faraday/response/raise_error_spec.rb +106 -0
  44. data/spec/spec_helper.rb +105 -0
  45. data/test/adapters/default_test.rb +14 -0
  46. data/test/adapters/em_http_test.rb +30 -0
  47. data/test/adapters/em_synchrony_test.rb +32 -0
  48. data/test/adapters/excon_test.rb +30 -0
  49. data/test/adapters/httpclient_test.rb +34 -0
  50. data/test/adapters/integration.rb +263 -0
  51. data/test/adapters/logger_test.rb +136 -0
  52. data/test/adapters/net_http_persistent_test.rb +114 -0
  53. data/test/adapters/net_http_test.rb +79 -0
  54. data/test/adapters/patron_test.rb +40 -0
  55. data/test/adapters/rack_test.rb +38 -0
  56. data/test/adapters/test_middleware_test.rb +157 -0
  57. data/test/adapters/typhoeus_test.rb +38 -0
  58. data/test/authentication_middleware_test.rb +65 -0
  59. data/test/composite_read_io_test.rb +109 -0
  60. data/test/connection_test.rb +738 -0
  61. data/test/env_test.rb +268 -0
  62. data/test/helper.rb +75 -0
  63. data/test/live_server.rb +67 -0
  64. data/test/middleware/instrumentation_test.rb +88 -0
  65. data/test/middleware/retry_test.rb +282 -0
  66. data/test/middleware_stack_test.rb +260 -0
  67. data/test/multibyte.txt +1 -0
  68. data/test/options_test.rb +333 -0
  69. data/test/parameters_test.rb +157 -0
  70. data/test/request_middleware_test.rb +126 -0
  71. data/test/response_middleware_test.rb +72 -0
  72. data/test/strawberry.rb +2 -0
  73. data/test/utils_test.rb +98 -0
  74. metadata +50 -25
  75. data/lib/faraday/adapter_registry.rb +0 -28
  76. data/lib/faraday/dependency_loader.rb +0 -37
  77. data/lib/faraday/encoders/flat_params_encoder.rb +0 -94
  78. data/lib/faraday/encoders/nested_params_encoder.rb +0 -171
  79. data/lib/faraday/file_part.rb +0 -128
  80. data/lib/faraday/logging/formatter.rb +0 -92
  81. data/lib/faraday/middleware_registry.rb +0 -129
  82. data/lib/faraday/options/connection_options.rb +0 -22
  83. data/lib/faraday/options/env.rb +0 -181
  84. data/lib/faraday/options/proxy_options.rb +0 -28
  85. data/lib/faraday/options/request_options.rb +0 -21
  86. data/lib/faraday/options/ssl_options.rb +0 -59
  87. data/lib/faraday/param_part.rb +0 -53
  88. data/lib/faraday/utils/headers.rb +0 -139
  89. data/lib/faraday/utils/params_hash.rb +0 -61
  90. data/spec/external_adapters/faraday_specs_setup.rb +0 -14
@@ -1,139 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faraday
4
- module Utils
5
- # A case-insensitive Hash that preserves the original case of a header
6
- # when set.
7
- #
8
- # Adapted from Rack::Utils::HeaderHash
9
- class Headers < ::Hash
10
- def self.from(value)
11
- new(value)
12
- end
13
-
14
- def self.allocate
15
- new_self = super
16
- new_self.initialize_names
17
- new_self
18
- end
19
-
20
- def initialize(hash = nil)
21
- super()
22
- @names = {}
23
- update(hash || {})
24
- end
25
-
26
- def initialize_names
27
- @names = {}
28
- end
29
-
30
- # on dup/clone, we need to duplicate @names hash
31
- def initialize_copy(other)
32
- super
33
- @names = other.names.dup
34
- end
35
-
36
- # need to synchronize concurrent writes to the shared KeyMap
37
- keymap_mutex = Mutex.new
38
-
39
- # symbol -> string mapper + cache
40
- KeyMap = Hash.new do |map, key|
41
- value = if key.respond_to?(:to_str)
42
- key
43
- else
44
- key.to_s.split('_') # user_agent: %w(user agent)
45
- .each(&:capitalize!) # => %w(User Agent)
46
- .join('-') # => "User-Agent"
47
- end
48
- keymap_mutex.synchronize { map[key] = value }
49
- end
50
- KeyMap[:etag] = 'ETag'
51
-
52
- def [](key)
53
- key = KeyMap[key]
54
- super(key) || super(@names[key.downcase])
55
- end
56
-
57
- def []=(key, val)
58
- key = KeyMap[key]
59
- key = (@names[key.downcase] ||= key)
60
- # join multiple values with a comma
61
- val = val.to_ary.join(', ') if val.respond_to?(:to_ary)
62
- super(key, val)
63
- end
64
-
65
- def fetch(key, *args, &block)
66
- key = KeyMap[key]
67
- key = @names.fetch(key.downcase, key)
68
- super(key, *args, &block)
69
- end
70
-
71
- def delete(key)
72
- key = KeyMap[key]
73
- key = @names[key.downcase]
74
- return unless key
75
-
76
- @names.delete key.downcase
77
- super(key)
78
- end
79
-
80
- def include?(key)
81
- @names.include? key.downcase
82
- end
83
-
84
- alias has_key? include?
85
- alias member? include?
86
- alias key? include?
87
-
88
- def merge!(other)
89
- other.each { |k, v| self[k] = v }
90
- self
91
- end
92
-
93
- alias update merge!
94
-
95
- def merge(other)
96
- hash = dup
97
- hash.merge! other
98
- end
99
-
100
- def replace(other)
101
- clear
102
- @names.clear
103
- update other
104
- self
105
- end
106
-
107
- def to_hash
108
- ::Hash.new.update(self)
109
- end
110
-
111
- def parse(header_string)
112
- return unless header_string && !header_string.empty?
113
-
114
- headers = header_string.split(/\r\n/)
115
-
116
- # Find the last set of response headers.
117
- start_index = headers.rindex { |x| x.match(%r{^HTTP/}) } || 0
118
- last_response = headers.slice(start_index, headers.size)
119
-
120
- last_response
121
- .tap { |a| a.shift if a.first.start_with?('HTTP/') }
122
- .map { |h| h.split(/:\s*/, 2) } # split key and value
123
- .reject { |p| p[0].nil? } # ignore blank lines
124
- .each { |key, value| add_parsed(key, value) }
125
- end
126
-
127
- protected
128
-
129
- attr_reader :names
130
-
131
- private
132
-
133
- # Join multiple values with a comma.
134
- def add_parsed(key, value)
135
- self[key] ? self[key] << ', ' << value : self[key] = value
136
- end
137
- end
138
- end
139
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faraday
4
- module Utils
5
- # A hash with stringified keys.
6
- class ParamsHash < Hash
7
- def [](key)
8
- super(convert_key(key))
9
- end
10
-
11
- def []=(key, value)
12
- super(convert_key(key), value)
13
- end
14
-
15
- def delete(key)
16
- super(convert_key(key))
17
- end
18
-
19
- def include?(key)
20
- super(convert_key(key))
21
- end
22
-
23
- alias has_key? include?
24
- alias member? include?
25
- alias key? include?
26
-
27
- def update(params)
28
- params.each do |key, value|
29
- self[key] = value
30
- end
31
- self
32
- end
33
- alias merge! update
34
-
35
- def merge(params)
36
- dup.update(params)
37
- end
38
-
39
- def replace(other)
40
- clear
41
- update(other)
42
- end
43
-
44
- def merge_query(query, encoder = nil)
45
- return self unless query && !query.empty?
46
-
47
- update((encoder || Utils.default_params_encoder).decode(query))
48
- end
49
-
50
- def to_query(encoder = nil)
51
- (encoder || Utils.default_params_encoder).encode(self)
52
- end
53
-
54
- private
55
-
56
- def convert_key(key)
57
- key.to_s
58
- end
59
- end
60
- end
61
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'webmock/rspec'
4
- WebMock.disable_net_connect!(allow_localhost: true)
5
-
6
- require_relative '../support/helper_methods'
7
- require_relative '../support/disabling_stub'
8
- require_relative '../support/streaming_response_checker'
9
- require_relative '../support/shared_examples/adapter'
10
- require_relative '../support/shared_examples/request_method'
11
-
12
- RSpec.configure do |config|
13
- config.include Faraday::HelperMethods
14
- end