faraday 0.7.4 → 1.0.1

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.
Files changed (119) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +276 -0
  3. data/LICENSE.md +1 -1
  4. data/README.md +40 -153
  5. data/Rakefile +4 -139
  6. data/examples/client_spec.rb +65 -0
  7. data/examples/client_test.rb +79 -0
  8. data/lib/faraday/adapter/em_http.rb +286 -0
  9. data/lib/faraday/adapter/em_http_ssl_patch.rb +62 -0
  10. data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +69 -0
  11. data/lib/faraday/adapter/em_synchrony.rb +120 -36
  12. data/lib/faraday/adapter/excon.rb +108 -12
  13. data/lib/faraday/adapter/httpclient.rb +152 -0
  14. data/lib/faraday/adapter/net_http.rb +187 -43
  15. data/lib/faraday/adapter/net_http_persistent.rb +91 -0
  16. data/lib/faraday/adapter/patron.rb +106 -10
  17. data/lib/faraday/adapter/rack.rb +75 -0
  18. data/lib/faraday/adapter/test.rb +160 -61
  19. data/lib/faraday/adapter/typhoeus.rb +7 -46
  20. data/lib/faraday/adapter.rb +105 -33
  21. data/lib/faraday/adapter_registry.rb +30 -0
  22. data/lib/faraday/autoload.rb +95 -0
  23. data/lib/faraday/connection.rb +525 -157
  24. data/lib/faraday/dependency_loader.rb +37 -0
  25. data/lib/faraday/encoders/flat_params_encoder.rb +98 -0
  26. data/lib/faraday/encoders/nested_params_encoder.rb +171 -0
  27. data/lib/faraday/error.rb +122 -30
  28. data/lib/faraday/file_part.rb +128 -0
  29. data/lib/faraday/logging/formatter.rb +105 -0
  30. data/lib/faraday/middleware.rb +14 -22
  31. data/lib/faraday/middleware_registry.rb +129 -0
  32. data/lib/faraday/options/connection_options.rb +22 -0
  33. data/lib/faraday/options/env.rb +181 -0
  34. data/lib/faraday/options/proxy_options.rb +28 -0
  35. data/lib/faraday/options/request_options.rb +22 -0
  36. data/lib/faraday/options/ssl_options.rb +59 -0
  37. data/lib/faraday/options.rb +222 -0
  38. data/lib/faraday/param_part.rb +53 -0
  39. data/lib/faraday/parameters.rb +5 -0
  40. data/lib/faraday/rack_builder.rb +248 -0
  41. data/lib/faraday/request/authorization.rb +55 -0
  42. data/lib/faraday/request/basic_authentication.rb +20 -0
  43. data/lib/faraday/request/instrumentation.rb +54 -0
  44. data/lib/faraday/request/multipart.rb +84 -48
  45. data/lib/faraday/request/retry.rb +239 -0
  46. data/lib/faraday/request/token_authentication.rb +20 -0
  47. data/lib/faraday/request/url_encoded.rb +46 -27
  48. data/lib/faraday/request.rb +112 -50
  49. data/lib/faraday/response/logger.rb +24 -25
  50. data/lib/faraday/response/raise_error.rb +40 -11
  51. data/lib/faraday/response.rb +44 -35
  52. data/lib/faraday/utils/headers.rb +139 -0
  53. data/lib/faraday/utils/params_hash.rb +61 -0
  54. data/lib/faraday/utils.rb +72 -117
  55. data/lib/faraday.rb +142 -64
  56. data/spec/external_adapters/faraday_specs_setup.rb +14 -0
  57. data/spec/faraday/adapter/em_http_spec.rb +47 -0
  58. data/spec/faraday/adapter/em_synchrony_spec.rb +16 -0
  59. data/spec/faraday/adapter/excon_spec.rb +49 -0
  60. data/spec/faraday/adapter/httpclient_spec.rb +73 -0
  61. data/spec/faraday/adapter/net_http_persistent_spec.rb +57 -0
  62. data/spec/faraday/adapter/net_http_spec.rb +64 -0
  63. data/spec/faraday/adapter/patron_spec.rb +18 -0
  64. data/spec/faraday/adapter/rack_spec.rb +8 -0
  65. data/spec/faraday/adapter/typhoeus_spec.rb +7 -0
  66. data/spec/faraday/adapter_registry_spec.rb +28 -0
  67. data/spec/faraday/adapter_spec.rb +55 -0
  68. data/spec/faraday/composite_read_io_spec.rb +80 -0
  69. data/spec/faraday/connection_spec.rb +691 -0
  70. data/spec/faraday/error_spec.rb +45 -0
  71. data/spec/faraday/middleware_spec.rb +26 -0
  72. data/spec/faraday/options/env_spec.rb +70 -0
  73. data/spec/faraday/options/options_spec.rb +297 -0
  74. data/spec/faraday/options/proxy_options_spec.rb +37 -0
  75. data/spec/faraday/options/request_options_spec.rb +19 -0
  76. data/spec/faraday/params_encoders/flat_spec.rb +34 -0
  77. data/spec/faraday/params_encoders/nested_spec.rb +134 -0
  78. data/spec/faraday/rack_builder_spec.rb +196 -0
  79. data/spec/faraday/request/authorization_spec.rb +88 -0
  80. data/spec/faraday/request/instrumentation_spec.rb +76 -0
  81. data/spec/faraday/request/multipart_spec.rb +274 -0
  82. data/spec/faraday/request/retry_spec.rb +242 -0
  83. data/spec/faraday/request/url_encoded_spec.rb +83 -0
  84. data/spec/faraday/request_spec.rb +109 -0
  85. data/spec/faraday/response/logger_spec.rb +220 -0
  86. data/spec/faraday/response/middleware_spec.rb +68 -0
  87. data/spec/faraday/response/raise_error_spec.rb +106 -0
  88. data/spec/faraday/response_spec.rb +75 -0
  89. data/spec/faraday/utils/headers_spec.rb +82 -0
  90. data/spec/faraday/utils_spec.rb +56 -0
  91. data/spec/faraday_spec.rb +37 -0
  92. data/spec/spec_helper.rb +132 -0
  93. data/spec/support/disabling_stub.rb +14 -0
  94. data/spec/support/fake_safe_buffer.rb +15 -0
  95. data/spec/support/helper_methods.rb +133 -0
  96. data/spec/support/shared_examples/adapter.rb +104 -0
  97. data/spec/support/shared_examples/params_encoder.rb +18 -0
  98. data/spec/support/shared_examples/request_method.rb +234 -0
  99. data/spec/support/streaming_response_checker.rb +35 -0
  100. data/spec/support/webmock_rack_app.rb +68 -0
  101. metadata +126 -126
  102. data/Gemfile +0 -29
  103. data/config.ru +0 -6
  104. data/faraday.gemspec +0 -92
  105. data/lib/faraday/adapter/action_dispatch.rb +0 -29
  106. data/lib/faraday/builder.rb +0 -160
  107. data/lib/faraday/request/json.rb +0 -35
  108. data/lib/faraday/upload_io.rb +0 -23
  109. data/test/adapters/live_test.rb +0 -205
  110. data/test/adapters/logger_test.rb +0 -37
  111. data/test/adapters/net_http_test.rb +0 -33
  112. data/test/adapters/test_middleware_test.rb +0 -70
  113. data/test/connection_test.rb +0 -254
  114. data/test/env_test.rb +0 -158
  115. data/test/helper.rb +0 -41
  116. data/test/live_server.rb +0 -45
  117. data/test/middleware_stack_test.rb +0 -118
  118. data/test/request_middleware_test.rb +0 -116
  119. data/test/response_middleware_test.rb +0 -74
metadata CHANGED
@@ -1,168 +1,168 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.7.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
6
5
  platform: ruby
7
- authors:
8
- - Rick Olson
6
+ authors:
7
+ - "@technoweenie"
8
+ - "@iMacTia"
9
+ - "@olleolleolle"
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
-
13
- date: 2011-07-08 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rake
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "0.9"
24
- type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: test-unit
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ~>
33
- - !ruby/object:Gem::Version
34
- version: "2.3"
35
- type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: webmock
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: "1.6"
46
- type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: addressable
50
- prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ~>
55
- - !ruby/object:Gem::Version
56
- version: 2.2.6
57
- type: :runtime
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
13
+ date: 2020-03-29 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
60
16
  name: multipart-post
61
- prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ~>
66
- - !ruby/object:Gem::Version
67
- version: 1.1.0
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
22
+ - - "<"
23
+ - !ruby/object:Gem::Version
24
+ version: '3'
68
25
  type: :runtime
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: rack
72
26
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
76
29
  - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.1.0
79
- - - <
80
- - !ruby/object:Gem::Version
81
- version: "2"
82
- type: :runtime
83
- version_requirements: *id006
84
- description: HTTP/REST API client library.
30
+ - !ruby/object:Gem::Version
31
+ version: '1.2'
32
+ - - "<"
33
+ - !ruby/object:Gem::Version
34
+ version: '3'
35
+ description:
85
36
  email: technoweenie@gmail.com
86
37
  executables: []
87
-
88
38
  extensions: []
89
-
90
39
  extra_rdoc_files: []
91
-
92
- files:
93
- - Gemfile
40
+ files:
41
+ - CHANGELOG.md
94
42
  - LICENSE.md
95
43
  - README.md
96
44
  - Rakefile
97
- - config.ru
98
- - faraday.gemspec
45
+ - examples/client_spec.rb
46
+ - examples/client_test.rb
99
47
  - lib/faraday.rb
100
48
  - lib/faraday/adapter.rb
101
- - lib/faraday/adapter/action_dispatch.rb
49
+ - lib/faraday/adapter/em_http.rb
50
+ - lib/faraday/adapter/em_http_ssl_patch.rb
102
51
  - lib/faraday/adapter/em_synchrony.rb
52
+ - lib/faraday/adapter/em_synchrony/parallel_manager.rb
103
53
  - lib/faraday/adapter/excon.rb
54
+ - lib/faraday/adapter/httpclient.rb
104
55
  - lib/faraday/adapter/net_http.rb
56
+ - lib/faraday/adapter/net_http_persistent.rb
105
57
  - lib/faraday/adapter/patron.rb
58
+ - lib/faraday/adapter/rack.rb
106
59
  - lib/faraday/adapter/test.rb
107
60
  - lib/faraday/adapter/typhoeus.rb
108
- - lib/faraday/builder.rb
61
+ - lib/faraday/adapter_registry.rb
62
+ - lib/faraday/autoload.rb
109
63
  - lib/faraday/connection.rb
64
+ - lib/faraday/dependency_loader.rb
65
+ - lib/faraday/encoders/flat_params_encoder.rb
66
+ - lib/faraday/encoders/nested_params_encoder.rb
110
67
  - lib/faraday/error.rb
68
+ - lib/faraday/file_part.rb
69
+ - lib/faraday/logging/formatter.rb
111
70
  - lib/faraday/middleware.rb
71
+ - lib/faraday/middleware_registry.rb
72
+ - lib/faraday/options.rb
73
+ - lib/faraday/options/connection_options.rb
74
+ - lib/faraday/options/env.rb
75
+ - lib/faraday/options/proxy_options.rb
76
+ - lib/faraday/options/request_options.rb
77
+ - lib/faraday/options/ssl_options.rb
78
+ - lib/faraday/param_part.rb
79
+ - lib/faraday/parameters.rb
80
+ - lib/faraday/rack_builder.rb
112
81
  - lib/faraday/request.rb
113
- - lib/faraday/request/json.rb
82
+ - lib/faraday/request/authorization.rb
83
+ - lib/faraday/request/basic_authentication.rb
84
+ - lib/faraday/request/instrumentation.rb
114
85
  - lib/faraday/request/multipart.rb
86
+ - lib/faraday/request/retry.rb
87
+ - lib/faraday/request/token_authentication.rb
115
88
  - lib/faraday/request/url_encoded.rb
116
89
  - lib/faraday/response.rb
117
90
  - lib/faraday/response/logger.rb
118
91
  - lib/faraday/response/raise_error.rb
119
- - lib/faraday/upload_io.rb
120
92
  - lib/faraday/utils.rb
121
- - test/adapters/live_test.rb
122
- - test/adapters/logger_test.rb
123
- - test/adapters/net_http_test.rb
124
- - test/adapters/test_middleware_test.rb
125
- - test/connection_test.rb
126
- - test/env_test.rb
127
- - test/helper.rb
128
- - test/live_server.rb
129
- - test/middleware_stack_test.rb
130
- - test/request_middleware_test.rb
131
- - test/response_middleware_test.rb
132
- homepage: http://github.com/technoweenie/faraday
133
- licenses: []
134
-
93
+ - lib/faraday/utils/headers.rb
94
+ - lib/faraday/utils/params_hash.rb
95
+ - spec/external_adapters/faraday_specs_setup.rb
96
+ - spec/faraday/adapter/em_http_spec.rb
97
+ - spec/faraday/adapter/em_synchrony_spec.rb
98
+ - spec/faraday/adapter/excon_spec.rb
99
+ - spec/faraday/adapter/httpclient_spec.rb
100
+ - spec/faraday/adapter/net_http_persistent_spec.rb
101
+ - spec/faraday/adapter/net_http_spec.rb
102
+ - spec/faraday/adapter/patron_spec.rb
103
+ - spec/faraday/adapter/rack_spec.rb
104
+ - spec/faraday/adapter/typhoeus_spec.rb
105
+ - spec/faraday/adapter_registry_spec.rb
106
+ - spec/faraday/adapter_spec.rb
107
+ - spec/faraday/composite_read_io_spec.rb
108
+ - spec/faraday/connection_spec.rb
109
+ - spec/faraday/error_spec.rb
110
+ - spec/faraday/middleware_spec.rb
111
+ - spec/faraday/options/env_spec.rb
112
+ - spec/faraday/options/options_spec.rb
113
+ - spec/faraday/options/proxy_options_spec.rb
114
+ - spec/faraday/options/request_options_spec.rb
115
+ - spec/faraday/params_encoders/flat_spec.rb
116
+ - spec/faraday/params_encoders/nested_spec.rb
117
+ - spec/faraday/rack_builder_spec.rb
118
+ - spec/faraday/request/authorization_spec.rb
119
+ - spec/faraday/request/instrumentation_spec.rb
120
+ - spec/faraday/request/multipart_spec.rb
121
+ - spec/faraday/request/retry_spec.rb
122
+ - spec/faraday/request/url_encoded_spec.rb
123
+ - spec/faraday/request_spec.rb
124
+ - spec/faraday/response/logger_spec.rb
125
+ - spec/faraday/response/middleware_spec.rb
126
+ - spec/faraday/response/raise_error_spec.rb
127
+ - spec/faraday/response_spec.rb
128
+ - spec/faraday/utils/headers_spec.rb
129
+ - spec/faraday/utils_spec.rb
130
+ - spec/faraday_spec.rb
131
+ - spec/spec_helper.rb
132
+ - spec/support/disabling_stub.rb
133
+ - spec/support/fake_safe_buffer.rb
134
+ - spec/support/helper_methods.rb
135
+ - spec/support/shared_examples/adapter.rb
136
+ - spec/support/shared_examples/params_encoder.rb
137
+ - spec/support/shared_examples/request_method.rb
138
+ - spec/support/streaming_response_checker.rb
139
+ - spec/support/webmock_rack_app.rb
140
+ homepage: https://lostisland.github.io/faraday
141
+ licenses:
142
+ - MIT
143
+ metadata:
144
+ homepage_uri: https://lostisland.github.io/faraday
145
+ changelog_uri: https://github.com/lostisland/faraday/releases/tag/v1.0.1
146
+ source_code_uri: https://github.com/lostisland/faraday
147
+ bug_tracker_uri: https://github.com/lostisland/faraday/issues
135
148
  post_install_message:
136
149
  rdoc_options: []
137
-
138
- require_paths:
150
+ require_paths:
139
151
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
141
- none: false
142
- requirements:
152
+ - spec/external_adapters
153
+ required_ruby_version: !ruby/object:Gem::Requirement
154
+ requirements:
143
155
  - - ">="
144
- - !ruby/object:Gem::Version
145
- version: "0"
146
- required_rubygems_version: !ruby/object:Gem::Requirement
147
- none: false
148
- requirements:
156
+ - !ruby/object:Gem::Version
157
+ version: '2.3'
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
+ requirements:
149
160
  - - ">="
150
- - !ruby/object:Gem::Version
151
- version: 1.3.5
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
152
163
  requirements: []
153
-
154
- rubyforge_project: faraday
155
- rubygems_version: 1.8.5
164
+ rubygems_version: 3.0.3
156
165
  signing_key:
157
- specification_version: 2
166
+ specification_version: 4
158
167
  summary: HTTP/REST API client library.
159
- test_files:
160
- - test/adapters/live_test.rb
161
- - test/adapters/logger_test.rb
162
- - test/adapters/net_http_test.rb
163
- - test/adapters/test_middleware_test.rb
164
- - test/connection_test.rb
165
- - test/env_test.rb
166
- - test/middleware_stack_test.rb
167
- - test/request_middleware_test.rb
168
- - test/response_middleware_test.rb
168
+ test_files: []
data/Gemfile DELETED
@@ -1,29 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'addressable', '~> 2.2.6'
4
- gem 'multipart-post', '~> 1.1.0'
5
- gem 'rack', ['>= 1.1.0', '<= 1.2.0']
6
-
7
- group :development do
8
- gem 'sinatra', '~> 1.2'
9
- end
10
-
11
- group :test do
12
- gem 'em-http-request', '~> 0.3', :require => 'em-http'
13
- gem 'em-synchrony', '~> 0.2', :require => ['em-synchrony', 'em-synchrony/em-http'], :platforms => :ruby_19
14
- gem 'excon', '~> 0.6'
15
- gem 'leftright', '~> 0.9', :require => false
16
- gem 'patron', '~> 0.4'
17
- gem 'rake', '~> 0.8'
18
- gem 'test-unit', '~> 2.3'
19
- gem 'typhoeus', '~> 0.2'
20
- gem 'webmock', '~> 1.6'
21
- # ActiveSupport::JSON will be used in ruby 1.8 and Yajl in 1.9; this is to test against both adapters
22
- gem 'activesupport', '~> 2.3', :require => nil, :platforms => [:ruby_18, :jruby]
23
- gem 'yajl-ruby', '~> 0.8', :require => 'yajl', :platforms => :ruby_19
24
- end
25
-
26
- platforms :jruby do
27
- gem 'jruby-openssl', '~> 0.7'
28
- gem 'ffi-ncurses', '~> 0.3'
29
- end
data/config.ru DELETED
@@ -1,6 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- Bundler.setup
4
-
5
- require File.expand_path('../test/live_server', __FILE__)
6
- run Sinatra::Application
data/faraday.gemspec DELETED
@@ -1,92 +0,0 @@
1
- ## This is the rakegem gemspec template. Make sure you read and understand
2
- ## all of the comments. Some sections require modification, and others can
3
- ## be deleted if you don't need them. Once you understand the contents of
4
- ## this file, feel free to delete any comments that begin with two hash marks.
5
- ## You can find comprehensive Gem::Specification documentation, at
6
- ## http://docs.rubygems.org/read/chapter/20
7
- Gem::Specification.new do |s|
8
- s.specification_version = 2 if s.respond_to? :specification_version=
9
- s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
10
-
11
- ## Leave these as is they will be modified for you by the rake gemspec task.
12
- ## If your rubyforge_project name is different, then edit it and comment out
13
- ## the sub! line in the Rakefile
14
- s.name = 'faraday'
15
- s.version = '0.7.4'
16
- s.date = '2011-07-08'
17
- s.rubyforge_project = 'faraday'
18
-
19
- ## Make sure your summary is short. The description may be as long
20
- ## as you like.
21
- s.summary = "HTTP/REST API client library."
22
- s.description = "HTTP/REST API client library."
23
-
24
- ## List the primary authors. If there are a bunch of authors, it's probably
25
- ## better to set the email to an email list or something. If you don't have
26
- ## a custom homepage, consider using your GitHub URL or the like.
27
- s.authors = ["Rick Olson"]
28
- s.email = 'technoweenie@gmail.com'
29
- s.homepage = 'http://github.com/technoweenie/faraday'
30
-
31
- ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
32
- ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
33
- s.require_paths = %w[lib]
34
-
35
- s.add_development_dependency 'rake', '~> 0.9'
36
- s.add_development_dependency 'test-unit', '~> 2.3'
37
- s.add_development_dependency 'webmock', '~> 1.6'
38
- s.add_runtime_dependency 'addressable', '~> 2.2.6'
39
- s.add_runtime_dependency 'multipart-post', '~> 1.1.0'
40
- s.add_runtime_dependency 'rack', ['>= 1.1.0', '< 2']
41
-
42
- ## Leave this section as-is. It will be automatically generated from the
43
- ## contents of your Git repository via the gemspec task. DO NOT REMOVE
44
- ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
45
- # = MANIFEST =
46
- s.files = %w[
47
- Gemfile
48
- LICENSE.md
49
- README.md
50
- Rakefile
51
- config.ru
52
- faraday.gemspec
53
- lib/faraday.rb
54
- lib/faraday/adapter.rb
55
- lib/faraday/adapter/action_dispatch.rb
56
- lib/faraday/adapter/em_synchrony.rb
57
- lib/faraday/adapter/excon.rb
58
- lib/faraday/adapter/net_http.rb
59
- lib/faraday/adapter/patron.rb
60
- lib/faraday/adapter/test.rb
61
- lib/faraday/adapter/typhoeus.rb
62
- lib/faraday/builder.rb
63
- lib/faraday/connection.rb
64
- lib/faraday/error.rb
65
- lib/faraday/middleware.rb
66
- lib/faraday/request.rb
67
- lib/faraday/request/json.rb
68
- lib/faraday/request/multipart.rb
69
- lib/faraday/request/url_encoded.rb
70
- lib/faraday/response.rb
71
- lib/faraday/response/logger.rb
72
- lib/faraday/response/raise_error.rb
73
- lib/faraday/upload_io.rb
74
- lib/faraday/utils.rb
75
- test/adapters/live_test.rb
76
- test/adapters/logger_test.rb
77
- test/adapters/net_http_test.rb
78
- test/adapters/test_middleware_test.rb
79
- test/connection_test.rb
80
- test/env_test.rb
81
- test/helper.rb
82
- test/live_server.rb
83
- test/middleware_stack_test.rb
84
- test/request_middleware_test.rb
85
- test/response_middleware_test.rb
86
- ]
87
- # = MANIFEST =
88
-
89
- ## Test files will be grabbed from the file list. Make sure the path glob
90
- ## matches what you actually use.
91
- s.test_files = s.files.select { |path| path =~ /^test\/.*_test\.rb/ }
92
- end
@@ -1,29 +0,0 @@
1
- module Faraday
2
- class Adapter
3
- class ActionDispatch < Faraday::Adapter
4
- attr_reader :session
5
-
6
- # Initializes a new middleware instance for each request. Instead of
7
- # initiating an HTTP request with a web server, this adapter calls
8
- # a Rails 3 app using integration tests.
9
- #
10
- # app - The current Faraday request.
11
- # session - An ActionDispatch::Integration::Session instance.
12
- #
13
- # Returns nothing.
14
- def initialize(app, session)
15
- super(app)
16
- @session = session
17
- @session.reset!
18
- end
19
-
20
- def call(env)
21
- super
22
- @session.__send__(env[:method], env[:url].request_uri, env[:body], env[:request_headers])
23
- resp = @session.response
24
- save_response(env, resp.status, resp.body, resp.headers)
25
- @app.call env
26
- end
27
- end
28
- end
29
- end
@@ -1,160 +0,0 @@
1
- module Faraday
2
- # Possibly going to extend this a bit.
3
- #
4
- # Faraday::Connection.new(:url => 'http://sushi.com') do |builder|
5
- # builder.request :url_encoded # Faraday::Request::UrlEncoded
6
- # builder.adapter :net_http # Faraday::Adapter::NetHttp
7
- # end
8
- class Builder
9
- attr_accessor :handlers
10
-
11
- def self.create
12
- new { |builder| yield builder }
13
- end
14
-
15
- # Error raised when trying to modify the stack after calling `lock!`
16
- class StackLocked < RuntimeError; end
17
-
18
- # borrowed from ActiveSupport::Dependencies::Reference &
19
- # ActionDispatch::MiddlewareStack::Middleware
20
- class Handler
21
- @@constants = Hash.new { |h, k|
22
- h[k] = k.respond_to?(:constantize) ? k.constantize : Object.const_get(k)
23
- }
24
-
25
- attr_reader :name
26
-
27
- def initialize(klass, *args, &block)
28
- @name = klass.to_s
29
- @@constants[@name] = klass if klass.respond_to?(:name)
30
- @args, @block = args, block
31
- end
32
-
33
- def klass() @@constants[@name] end
34
- def inspect() @name end
35
-
36
- def ==(other)
37
- if other.is_a? Handler
38
- self.name == other.name
39
- elsif other.respond_to? :name
40
- klass == other
41
- else
42
- @name == other.to_s
43
- end
44
- end
45
-
46
- def build(app)
47
- klass.new(app, *@args, &@block)
48
- end
49
- end
50
-
51
- def initialize(handlers = [])
52
- @handlers = handlers
53
- if block_given?
54
- build(&Proc.new)
55
- elsif @handlers.empty?
56
- # default stack, if nothing else is configured
57
- self.request :url_encoded
58
- self.adapter Faraday.default_adapter
59
- end
60
- end
61
-
62
- def build(options = {})
63
- raise_if_locked
64
- @handlers.clear unless options[:keep]
65
- yield self if block_given?
66
- end
67
-
68
- def [](idx)
69
- @handlers[idx]
70
- end
71
-
72
- def ==(other)
73
- other.is_a?(self.class) && @handlers == other.handlers
74
- end
75
-
76
- def dup
77
- self.class.new(@handlers.dup)
78
- end
79
-
80
- def to_app(inner_app)
81
- # last added handler is the deepest and thus closest to the inner app
82
- @handlers.reverse.inject(inner_app) { |app, handler| handler.build(app) }
83
- end
84
-
85
- # Locks the middleware stack to ensure no further modifications are possible.
86
- def lock!
87
- @handlers.freeze
88
- end
89
-
90
- def locked?
91
- @handlers.frozen?
92
- end
93
-
94
- def use(klass, *args)
95
- raise_if_locked
96
- block = block_given? ? Proc.new : nil
97
- @handlers << self.class::Handler.new(klass, *args, &block)
98
- end
99
-
100
- def request(key, *args)
101
- block = block_given? ? Proc.new : nil
102
- use_symbol(Faraday::Request, key, *args, &block)
103
- end
104
-
105
- def response(key, *args)
106
- block = block_given? ? Proc.new : nil
107
- use_symbol(Faraday::Response, key, *args, &block)
108
- end
109
-
110
- def adapter(key, *args)
111
- block = block_given? ? Proc.new : nil
112
- use_symbol(Faraday::Adapter, key, *args, &block)
113
- end
114
-
115
- ## methods to push onto the various positions in the stack:
116
-
117
- def insert(index, *args, &block)
118
- raise_if_locked
119
- index = assert_index(index)
120
- handler = self.class::Handler.new(*args, &block)
121
- @handlers.insert(index, handler)
122
- end
123
-
124
- alias_method :insert_before, :insert
125
-
126
- def insert_after(index, *args, &block)
127
- index = assert_index(index)
128
- insert(index + 1, *args, &block)
129
- end
130
-
131
- def swap(index, *args, &block)
132
- raise_if_locked
133
- index = assert_index(index)
134
- @handlers.delete_at(index)
135
- insert(index, *args, &block)
136
- end
137
-
138
- def delete(handler)
139
- raise_if_locked
140
- @handlers.delete(handler)
141
- end
142
-
143
- private
144
-
145
- def raise_if_locked
146
- raise StackLocked, "can't modify middleware stack after making a request" if locked?
147
- end
148
-
149
- def use_symbol(mod, key, *args)
150
- block = block_given? ? Proc.new : nil
151
- use(mod.lookup_module(key), *args, &block)
152
- end
153
-
154
- def assert_index(index)
155
- idx = index.is_a?(Integer) ? index : @handlers.index(index)
156
- raise "No such handler: #{index.inspect}" unless idx
157
- idx
158
- end
159
- end
160
- end
@@ -1,35 +0,0 @@
1
- module Faraday
2
- class Request::JSON < Request::UrlEncoded
3
- self.mime_type = 'application/json'.freeze
4
-
5
- class << self
6
- attr_writer :adapter
7
-
8
- def adapter
9
- @adapter or raise Error::MissingDependency, "No JSON adapter available. Install either activesupport or yajl-ruby."
10
- end
11
- end
12
-
13
- # loads the JSON encoder either from yajl-ruby or activesupport
14
- dependency do
15
- begin
16
- require 'yajl'
17
- self.adapter = Yajl::Encoder
18
- rescue LoadError, NameError
19
- require 'active_support/core_ext/module/attribute_accessors' # AS 2.3.11
20
- require 'active_support/core_ext/kernel/reporting' # AS 2.3.11
21
- require 'active_support/json/encoding'
22
- require 'active_support/ordered_hash' # AS 3.0.4
23
- self.adapter = ActiveSupport::JSON
24
- end
25
- end
26
-
27
- def call(env)
28
- match_content_type(env) do |data|
29
- # encode with the first successfully loaded adapter
30
- env[:body] = self.class.adapter.encode data
31
- end
32
- @app.call env
33
- end
34
- end
35
- end
@@ -1,23 +0,0 @@
1
- begin
2
- require 'composite_io'
3
- require 'parts'
4
- require 'stringio'
5
- rescue LoadError
6
- $stderr.puts "Install the multipart-post gem."
7
- raise
8
- end
9
-
10
- module Faraday
11
- class CompositeReadIO < ::CompositeReadIO
12
- attr_reader :length
13
-
14
- def initialize(parts)
15
- @length = parts.inject(0) { |sum, part| sum + part.length }
16
- ios = parts.map{ |part| part.to_io }
17
- super(*ios)
18
- end
19
- end
20
-
21
- UploadIO = ::UploadIO
22
- Parts = ::Parts
23
- end