faraday 0.7.4 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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