agiley-faraday_middleware 0.8.3
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.
- data/.gemtest +0 -0
- data/.gitignore +31 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile +7 -0
- data/LICENSE.md +20 -0
- data/README.md +54 -0
- data/Rakefile +17 -0
- data/faraday_middleware.gemspec +24 -0
- data/lib/faraday_middleware.rb +42 -0
- data/lib/faraday_middleware/addressable_patch.rb +20 -0
- data/lib/faraday_middleware/backwards_compatibility.rb +15 -0
- data/lib/faraday_middleware/instrumentation.rb +30 -0
- data/lib/faraday_middleware/rack_compatible.rb +76 -0
- data/lib/faraday_middleware/request/encode_json.rb +50 -0
- data/lib/faraday_middleware/request/oauth.rb +64 -0
- data/lib/faraday_middleware/request/oauth2.rb +62 -0
- data/lib/faraday_middleware/response/caching.rb +76 -0
- data/lib/faraday_middleware/response/follow_redirects.rb +53 -0
- data/lib/faraday_middleware/response/mashify.rb +28 -0
- data/lib/faraday_middleware/response/parse_json.rb +38 -0
- data/lib/faraday_middleware/response/parse_marshal.rb +13 -0
- data/lib/faraday_middleware/response/parse_nokogiri_xml.rb +14 -0
- data/lib/faraday_middleware/response/parse_xml.rb +14 -0
- data/lib/faraday_middleware/response/parse_yaml.rb +13 -0
- data/lib/faraday_middleware/response/rashify.rb +13 -0
- data/lib/faraday_middleware/response_middleware.rb +78 -0
- data/lib/faraday_middleware/version.rb +3 -0
- data/spec/caching_test.rb +122 -0
- data/spec/encode_json_spec.rb +95 -0
- data/spec/follow_redirects_spec.rb +33 -0
- data/spec/helper.rb +33 -0
- data/spec/mashify_spec.rb +79 -0
- data/spec/oauth2_spec.rb +118 -0
- data/spec/oauth_spec.rb +101 -0
- data/spec/parse_json_spec.rb +94 -0
- data/spec/parse_marshal_spec.rb +16 -0
- data/spec/parse_xml_spec.rb +71 -0
- data/spec/parse_yaml_spec.rb +53 -0
- data/spec/rashify_spec.rb +69 -0
- metadata +202 -0
data/.gemtest
ADDED
File without changes
|
data/.gitignore
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Mac OS X
|
2
|
+
.DS_Store
|
3
|
+
|
4
|
+
# TextMate
|
5
|
+
*.tmproj
|
6
|
+
tmtags
|
7
|
+
|
8
|
+
# emails
|
9
|
+
*~
|
10
|
+
\#*
|
11
|
+
.\#*
|
12
|
+
|
13
|
+
# vim
|
14
|
+
*.swp
|
15
|
+
|
16
|
+
# General
|
17
|
+
coverage
|
18
|
+
rdoc
|
19
|
+
doc
|
20
|
+
log
|
21
|
+
.yardoc
|
22
|
+
|
23
|
+
# Bundler
|
24
|
+
*.gem
|
25
|
+
.bundle
|
26
|
+
Gemfile.lock
|
27
|
+
pkg
|
28
|
+
*.gem
|
29
|
+
|
30
|
+
# Rubinius
|
31
|
+
*.rbc
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Erik Michaels-Ober, Wynn Netherland, et al.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
Faraday Middleware
|
2
|
+
==================
|
3
|
+
|
4
|
+
A collection of useful [Faraday][] middleware. [See the documentation][docs].
|
5
|
+
|
6
|
+
gem install faraday_middleware
|
7
|
+
|
8
|
+
Dependencies
|
9
|
+
------------
|
10
|
+
|
11
|
+
Some dependent libraries are needed only when using specific middleware:
|
12
|
+
|
13
|
+
* FaradayMiddleware::EncodeJson & FaradayMiddleware::ParseJson: "json"
|
14
|
+
for ruby older than 1.9
|
15
|
+
* FaradayMiddleware::ParseXml: "multi_xml"
|
16
|
+
* FaradayMiddleware::OAuth: "simple_oauth"
|
17
|
+
* FaradayMiddleware::Mashify: "hashie"
|
18
|
+
* FaradayMiddleware::Rashify: "rash"
|
19
|
+
* FaradayMiddleware::Instrumentation: "activesupport"
|
20
|
+
|
21
|
+
Examples
|
22
|
+
--------
|
23
|
+
|
24
|
+
``` rb
|
25
|
+
require 'faraday_middleware'
|
26
|
+
|
27
|
+
## in Faraday 0.8 or above:
|
28
|
+
connection = Faraday.new 'http://example.com/api' do |conn|
|
29
|
+
conn.request :oauth2, 'TOKEN'
|
30
|
+
conn.request :json
|
31
|
+
|
32
|
+
conn.response :xml, :content_type => /\bxml$/
|
33
|
+
conn.response :json, :content_type => /\bjson$/
|
34
|
+
|
35
|
+
conn.use :instrumentation
|
36
|
+
conn.adapter Faraday.default_adapter
|
37
|
+
end
|
38
|
+
|
39
|
+
## with Faraday 0.7:
|
40
|
+
connection = Faraday.new 'http://example.com/api' do |builder|
|
41
|
+
builder.use FaradayMiddleware::OAuth2, 'TOKEN'
|
42
|
+
builder.use FaradayMiddleware::EncodeJson
|
43
|
+
|
44
|
+
builder.use FaradayMiddleware::ParseXml, :content_type => /\bxml$/
|
45
|
+
builder.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
|
46
|
+
|
47
|
+
builder.use FaradayMiddleware::Instrumentation
|
48
|
+
builder.adapter Faraday.default_adapter
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
|
53
|
+
[faraday]: https://github.com/technoweenie/faraday#readme
|
54
|
+
[docs]: https://github.com/pengwynn/faraday_middleware/wiki
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
|
3
|
+
task :default => [:enable_coverage, :spec, :test]
|
4
|
+
|
5
|
+
require 'bundler'
|
6
|
+
Bundler::GemHelper.install_tasks
|
7
|
+
|
8
|
+
require 'rspec/core/rake_task'
|
9
|
+
RSpec::Core::RakeTask.new(:spec)
|
10
|
+
|
11
|
+
task :enable_coverage do
|
12
|
+
ENV['COVERAGE'] = 'yes' unless ENV['CI']
|
13
|
+
end
|
14
|
+
|
15
|
+
task :test do
|
16
|
+
sh 'ruby', '-Ilib', 'spec/caching_test.rb'
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path('../lib/faraday_middleware/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.add_dependency 'faraday', ['>= 0.7.4', '< 0.9']
|
5
|
+
gem.add_development_dependency 'multi_xml', '~> 0.2'
|
6
|
+
gem.add_development_dependency 'nokogiri', '~> 1.5.0'
|
7
|
+
gem.add_development_dependency 'rake', '~> 0.9'
|
8
|
+
gem.add_development_dependency 'hashie', '~> 1.2'
|
9
|
+
gem.add_development_dependency 'rash', '~> 0.3'
|
10
|
+
gem.add_development_dependency 'rspec', '~> 2.6'
|
11
|
+
gem.add_development_dependency 'simple_oauth', '~> 0.1'
|
12
|
+
gem.add_development_dependency 'rack-cache', '~> 1.1'
|
13
|
+
gem.authors = ["Erik Michaels-Ober", "Wynn Netherland"]
|
14
|
+
gem.description = %q{Various middleware for Faraday}
|
15
|
+
gem.email = ['sferik@gmail.com', 'wynn.netherland@gmail.com']
|
16
|
+
gem.files = `git ls-files`.split("\n")
|
17
|
+
gem.homepage = 'https://github.com/pengwynn/faraday_middleware'
|
18
|
+
gem.name = 'agiley-faraday_middleware'
|
19
|
+
gem.require_paths = ['lib']
|
20
|
+
gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
|
21
|
+
gem.summary = gem.description
|
22
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
gem.version = FaradayMiddleware::VERSION
|
24
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module FaradayMiddleware
|
4
|
+
autoload :OAuth, 'faraday_middleware/request/oauth'
|
5
|
+
autoload :OAuth2, 'faraday_middleware/request/oauth2'
|
6
|
+
autoload :EncodeJson, 'faraday_middleware/request/encode_json'
|
7
|
+
autoload :Mashify, 'faraday_middleware/response/mashify'
|
8
|
+
autoload :Rashify, 'faraday_middleware/response/rashify'
|
9
|
+
autoload :ParseJson, 'faraday_middleware/response/parse_json'
|
10
|
+
autoload :ParseXml, 'faraday_middleware/response/parse_xml'
|
11
|
+
autoload :ParseNokogiriXml, 'faraday_middleware/response/parse_nokogiri_xml'
|
12
|
+
autoload :ParseMarshal, 'faraday_middleware/response/parse_marshal'
|
13
|
+
autoload :ParseYaml, 'faraday_middleware/response/parse_yaml'
|
14
|
+
autoload :Caching, 'faraday_middleware/response/caching'
|
15
|
+
autoload :RackCompatible, 'faraday_middleware/rack_compatible'
|
16
|
+
autoload :FollowRedirects, 'faraday_middleware/response/follow_redirects'
|
17
|
+
autoload :Instrumentation, 'faraday_middleware/instrumentation'
|
18
|
+
|
19
|
+
if Faraday.respond_to? :register_middleware
|
20
|
+
Faraday.register_middleware :request,
|
21
|
+
:oauth => lambda { OAuth },
|
22
|
+
:oauth2 => lambda { OAuth2 },
|
23
|
+
:json => lambda { EncodeJson }
|
24
|
+
|
25
|
+
Faraday.register_middleware :response,
|
26
|
+
:mashify => lambda { Mashify },
|
27
|
+
:rashify => lambda { Rashify },
|
28
|
+
:json => lambda { ParseJson },
|
29
|
+
:json_fix => lambda { ParseJson::MimeTypeFix },
|
30
|
+
:xml => lambda { ParseXml },
|
31
|
+
:nokogiri_xml => lambda { ParseNokogiriXml },
|
32
|
+
:marshal => lambda { ParseMarshal },
|
33
|
+
:yaml => lambda { ParseYaml },
|
34
|
+
:caching => lambda { Caching },
|
35
|
+
:follow_redirects => lambda { FollowRedirects }
|
36
|
+
|
37
|
+
Faraday.register_middleware \
|
38
|
+
:instrumentation => lambda { Instrumentation }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
require 'faraday_middleware/backwards_compatibility'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'addressable/uri'
|
2
|
+
|
3
|
+
# feature-detect the bug
|
4
|
+
unless Addressable::URI.parse('/?a=1&b=2') === '/?b=2&a=1'
|
5
|
+
# fix `normalized_query` by sorting query key-value pairs
|
6
|
+
# (rejected: https://github.com/sporkmonger/addressable/issues/28)
|
7
|
+
class Addressable::URI
|
8
|
+
alias normalized_query_without_ordering_fix normalized_query
|
9
|
+
|
10
|
+
def normalized_query
|
11
|
+
fresh = @normalized_query.nil?
|
12
|
+
query = normalized_query_without_ordering_fix
|
13
|
+
if query && fresh
|
14
|
+
@normalized_query = query.split('&', -1).sort_by {|q| q[0..(q.index('=')||-1)] }.join('&')
|
15
|
+
else
|
16
|
+
query
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# deprecated constants
|
2
|
+
|
3
|
+
Faraday::Request.class_eval do
|
4
|
+
autoload :OAuth, 'faraday_middleware/request/oauth'
|
5
|
+
autoload :OAuth2, 'faraday_middleware/request/oauth2'
|
6
|
+
end
|
7
|
+
|
8
|
+
Faraday::Response.class_eval do
|
9
|
+
autoload :Mashify, 'faraday_middleware/response/mashify'
|
10
|
+
autoload :Rashify, 'faraday_middleware/response/rashify'
|
11
|
+
autoload :ParseJson, 'faraday_middleware/response/parse_json'
|
12
|
+
autoload :ParseXml, 'faraday_middleware/response/parse_xml'
|
13
|
+
autoload :ParseMarshal, 'faraday_middleware/response/parse_marshal'
|
14
|
+
autoload :ParseYaml, 'faraday_middleware/response/parse_yaml'
|
15
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module FaradayMiddleware
|
4
|
+
# Public: Instruments requests using Active Support.
|
5
|
+
#
|
6
|
+
# Measures time spent only for synchronous requests.
|
7
|
+
#
|
8
|
+
# Examples
|
9
|
+
#
|
10
|
+
# ActiveSupport::Notifications.subscribe('request.faraday') do |name, start_time, end_time, _, env|
|
11
|
+
# url = env[:url]
|
12
|
+
# http_method = env[:method].to_s.upcase
|
13
|
+
# duration = end_time - start_time
|
14
|
+
# $stderr.puts '[%s] %s %s (%.3f s)' % [url.host, http_method, url.request_uri, duration]
|
15
|
+
# end
|
16
|
+
class Instrumentation < Faraday::Middleware
|
17
|
+
dependency 'active_support/notifications'
|
18
|
+
|
19
|
+
def initialize(app, options = {})
|
20
|
+
super(app)
|
21
|
+
@name = options.fetch(:name, 'request.faraday')
|
22
|
+
end
|
23
|
+
|
24
|
+
def call(env)
|
25
|
+
ActiveSupport::Notifications.instrument(@name, env) do
|
26
|
+
@app.call(env)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
|
3
|
+
module FaradayMiddleware
|
4
|
+
# Wraps a handler originally written for Rack to make it compatible with Faraday.
|
5
|
+
#
|
6
|
+
# Experimental. Only handles changes in request headers.
|
7
|
+
class RackCompatible
|
8
|
+
def initialize(app, rack_handler, *args)
|
9
|
+
# tiny middleware that decomposes a Faraday::Response to standard Rack
|
10
|
+
# array: [status, headers, body]
|
11
|
+
compatible_app = lambda do |env|
|
12
|
+
restore_env(env)
|
13
|
+
response = app.call(env)
|
14
|
+
[response.status, response.headers, Array(response.body)]
|
15
|
+
end
|
16
|
+
@rack = rack_handler.new(compatible_app, *args)
|
17
|
+
end
|
18
|
+
|
19
|
+
def call(env)
|
20
|
+
prepare_env(env)
|
21
|
+
rack_response = @rack.call(env)
|
22
|
+
finalize_response(env, rack_response)
|
23
|
+
end
|
24
|
+
|
25
|
+
NonPrefixedHeaders = %w[CONTENT_LENGTH CONTENT_TYPE]
|
26
|
+
|
27
|
+
# faraday to rack-compatible
|
28
|
+
def prepare_env(env)
|
29
|
+
env[:request_headers].each do |name, value|
|
30
|
+
name = name.upcase.tr('-', '_')
|
31
|
+
name = "HTTP_#{name}" unless NonPrefixedHeaders.include? name
|
32
|
+
env[name] = value
|
33
|
+
end
|
34
|
+
|
35
|
+
url = env[:url]
|
36
|
+
env['rack.url_scheme'] = url.scheme
|
37
|
+
env['PATH_INFO'] = url.path
|
38
|
+
env['SERVER_PORT'] = url.respond_to?(:inferred_port) ? url.inferred_port : url.port
|
39
|
+
env['QUERY_STRING'] = url.query
|
40
|
+
env['REQUEST_METHOD'] = env[:method].to_s.upcase
|
41
|
+
|
42
|
+
env['rack.errors'] ||= StringIO.new
|
43
|
+
|
44
|
+
env
|
45
|
+
end
|
46
|
+
|
47
|
+
# rack to faraday-compatible
|
48
|
+
def restore_env(env)
|
49
|
+
headers = env[:request_headers]
|
50
|
+
headers.clear
|
51
|
+
|
52
|
+
env.each do |name, value|
|
53
|
+
next unless String === name
|
54
|
+
if NonPrefixedHeaders.include? name or name.index('HTTP_') == 0
|
55
|
+
name = name.sub(/^HTTP_/, '').downcase.tr('_', '-')
|
56
|
+
headers[name] = value
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
env[:method] = env['REQUEST_METHOD'].downcase.to_sym
|
61
|
+
env
|
62
|
+
end
|
63
|
+
|
64
|
+
def finalize_response(env, rack_response)
|
65
|
+
status, headers, body = rack_response
|
66
|
+
body = body.inject('') { |str, part| str << part }
|
67
|
+
headers = Faraday::Utils::Headers.new(headers) unless Faraday::Utils::Headers === headers
|
68
|
+
|
69
|
+
response_env = { :status => status, :body => body, :response_headers => headers }
|
70
|
+
|
71
|
+
env[:response] ||= Faraday::Response.new({})
|
72
|
+
env[:response].env.update(response_env)
|
73
|
+
env[:response]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module FaradayMiddleware
|
4
|
+
# Request middleware that encodes the body as JSON.
|
5
|
+
#
|
6
|
+
# Processes only requests with matching Content-type or those without a type.
|
7
|
+
# If a request doesn't have a type but has a body, it sets the Content-type
|
8
|
+
# to JSON MIME-type.
|
9
|
+
#
|
10
|
+
# Doesn't try to encode bodies that already are in string form.
|
11
|
+
class EncodeJson < Faraday::Middleware
|
12
|
+
CONTENT_TYPE = 'Content-Type'.freeze
|
13
|
+
MIME_TYPE = 'application/json'.freeze
|
14
|
+
|
15
|
+
dependency 'json'
|
16
|
+
|
17
|
+
def call(env)
|
18
|
+
match_content_type(env) do |data|
|
19
|
+
env[:body] = encode data
|
20
|
+
end
|
21
|
+
@app.call env
|
22
|
+
end
|
23
|
+
|
24
|
+
def encode(data)
|
25
|
+
JSON.dump data
|
26
|
+
end
|
27
|
+
|
28
|
+
def match_content_type(env)
|
29
|
+
if process_request?(env)
|
30
|
+
env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
|
31
|
+
yield env[:body] unless env[:body].respond_to?(:to_str)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def process_request?(env)
|
36
|
+
type = request_type(env)
|
37
|
+
has_body?(env) and (type.empty? or type == MIME_TYPE)
|
38
|
+
end
|
39
|
+
|
40
|
+
def has_body?(env)
|
41
|
+
body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
|
42
|
+
end
|
43
|
+
|
44
|
+
def request_type(env)
|
45
|
+
type = env[:request_headers][CONTENT_TYPE].to_s
|
46
|
+
type = type.split(';', 2).first if type.index(';')
|
47
|
+
type
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module FaradayMiddleware
|
4
|
+
# Public: Uses the simple_oauth library to sign requests according the
|
5
|
+
# OAuth protocol.
|
6
|
+
#
|
7
|
+
# The options for this middleware are forwarded to SimpleOAuth::Header:
|
8
|
+
# :consumer_key, :consumer_secret, :token, :token_secret. All these
|
9
|
+
# parameters are optional.
|
10
|
+
#
|
11
|
+
# The signature is added to the "Authorization" HTTP request header. If the
|
12
|
+
# value for this header already exists, it is not overriden.
|
13
|
+
#
|
14
|
+
# For requests that have parameters in the body, such as POST, this
|
15
|
+
# middleware expects them to be in Hash form, i.e. not encoded to string.
|
16
|
+
# This means this middleware has to be positioned on the stack before any
|
17
|
+
# encoding middleware such as UrlEncoded.
|
18
|
+
class OAuth < Faraday::Middleware
|
19
|
+
dependency 'simple_oauth'
|
20
|
+
|
21
|
+
AUTH_HEADER = 'Authorization'.freeze
|
22
|
+
|
23
|
+
def initialize(app, options)
|
24
|
+
super(app)
|
25
|
+
@options = options
|
26
|
+
end
|
27
|
+
|
28
|
+
def call(env)
|
29
|
+
env[:request_headers][AUTH_HEADER] ||= oauth_header(env).to_s if sign_request?(env)
|
30
|
+
@app.call(env)
|
31
|
+
end
|
32
|
+
|
33
|
+
def oauth_header(env)
|
34
|
+
SimpleOAuth::Header.new env[:method],
|
35
|
+
env[:url].to_s,
|
36
|
+
signature_params(body_params(env)),
|
37
|
+
oauth_options(env)
|
38
|
+
end
|
39
|
+
|
40
|
+
def sign_request?(env)
|
41
|
+
!!env[:request].fetch(:oauth, true)
|
42
|
+
end
|
43
|
+
|
44
|
+
def oauth_options(env)
|
45
|
+
if extra = env[:request][:oauth] and extra.is_a? Hash and !extra.empty?
|
46
|
+
@options.merge extra
|
47
|
+
else
|
48
|
+
@options
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def body_params(env)
|
53
|
+
env[:body] || {}
|
54
|
+
end
|
55
|
+
|
56
|
+
def signature_params(params)
|
57
|
+
params.empty? ? params :
|
58
|
+
params.reject {|k,v| v.respond_to?(:content_type) }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# deprecated alias
|
64
|
+
Faraday::Request::OAuth = FaradayMiddleware::OAuth
|