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
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'faraday_middleware/response/parse_json'
|
3
|
+
|
4
|
+
describe FaradayMiddleware::ParseJson, :type => :response do
|
5
|
+
context "no type matching" do
|
6
|
+
it "doesn't change nil body" do
|
7
|
+
process(nil).body.should be_nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it "nullifies empty body" do
|
11
|
+
process('').body.should be_nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it "parses json body" do
|
15
|
+
response = process('{"a":1}')
|
16
|
+
response.body.should eql('a' => 1)
|
17
|
+
response.env[:raw_body].should be_nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "with preserving raw" do
|
22
|
+
let(:options) { {:preserve_raw => true} }
|
23
|
+
|
24
|
+
it "parses json body" do
|
25
|
+
response = process('{"a":1}')
|
26
|
+
response.body.should eql('a' => 1)
|
27
|
+
response.env[:raw_body].should eql('{"a":1}')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "can opt out of preserving raw" do
|
31
|
+
response = process('{"a":1}', nil, :preserve_raw => false)
|
32
|
+
response.env[:raw_body].should be_nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with regexp type matching" do
|
37
|
+
let(:options) { {:content_type => /\bjson$/} }
|
38
|
+
|
39
|
+
it "parses json body of correct type" do
|
40
|
+
response = process('{"a":1}', 'application/x-json')
|
41
|
+
response.body.should eql('a' => 1)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "ignores json body of incorrect type" do
|
45
|
+
response = process('{"a":1}', 'text/json-xml')
|
46
|
+
response.body.should eql('{"a":1}')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "with array type matching" do
|
51
|
+
let(:options) { {:content_type => %w[a/b c/d]} }
|
52
|
+
|
53
|
+
it "parses json body of correct type" do
|
54
|
+
process('{"a":1}', 'a/b').body.should be_a(Hash)
|
55
|
+
process('{"a":1}', 'c/d').body.should be_a(Hash)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "ignores json body of incorrect type" do
|
59
|
+
process('{"a":1}', 'a/d').body.should_not be_a(Hash)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it "chokes on invalid json" do
|
64
|
+
['{!', ' ', '"a"', 'true', 'null', '1'].each do |data|
|
65
|
+
expect { process(data) }.to raise_error(Faraday::Error::ParsingError)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "with mime type fix" do
|
70
|
+
let(:middleware) {
|
71
|
+
app = described_class::MimeTypeFix.new(lambda {|env|
|
72
|
+
Faraday::Response.new(env)
|
73
|
+
}, :content_type => /^text\//)
|
74
|
+
described_class.new(app, :content_type => 'application/json')
|
75
|
+
}
|
76
|
+
|
77
|
+
it "ignores completely incompatible type" do
|
78
|
+
response = process('{"a":1}', 'application/xml')
|
79
|
+
response.body.should eql('{"a":1}')
|
80
|
+
end
|
81
|
+
|
82
|
+
it "ignores compatible type with bad data" do
|
83
|
+
response = process('var a = 1', 'text/javascript')
|
84
|
+
response.body.should eql('var a = 1')
|
85
|
+
response['content-type'].should eql('text/javascript')
|
86
|
+
end
|
87
|
+
|
88
|
+
it "corrects compatible type and data" do
|
89
|
+
response = process('{"a":1}', 'text/javascript')
|
90
|
+
response.body.should be_a(Hash)
|
91
|
+
response['content-type'].should eql('application/json')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'faraday_middleware/response/parse_marshal'
|
3
|
+
|
4
|
+
describe FaradayMiddleware::ParseMarshal, :type => :response do
|
5
|
+
it "restores a marshaled dump" do
|
6
|
+
process(Marshal.dump(:a => 1)).body.should be_eql(:a => 1)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "nulifies blank response" do
|
10
|
+
process('').body.should be_nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it "chokes on invalid content" do
|
14
|
+
expect { process('abc') }.to raise_error(Faraday::Error::ParsingError)
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'faraday_middleware/response/parse_xml'
|
3
|
+
|
4
|
+
describe FaradayMiddleware::ParseXml, :type => :response do
|
5
|
+
let(:xml) { '<user><name>Erik Michaels-Ober</name><screen_name>sferik</screen_name></user>' }
|
6
|
+
let(:user) { {'user' => {'name' => 'Erik Michaels-Ober', 'screen_name' => 'sferik'} } }
|
7
|
+
|
8
|
+
context "no type matching" do
|
9
|
+
it "doesn't change nil body" do
|
10
|
+
process(nil).body.should be_nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it "turns empty body into empty hash" do
|
14
|
+
process('').body.should be_eql({})
|
15
|
+
end
|
16
|
+
|
17
|
+
it "parses xml body" do
|
18
|
+
response = process(xml)
|
19
|
+
response.body.should eql(user)
|
20
|
+
response.env[:raw_body].should be_nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "with preserving raw" do
|
25
|
+
let(:options) { {:preserve_raw => true} }
|
26
|
+
|
27
|
+
it "parses xml body" do
|
28
|
+
response = process(xml)
|
29
|
+
response.body.should eql(user)
|
30
|
+
response.env[:raw_body].should eql(xml)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can opt out of preserving raw" do
|
34
|
+
response = process(xml, nil, :preserve_raw => false)
|
35
|
+
response.env[:raw_body].should be_nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "with regexp type matching" do
|
40
|
+
let(:options) { {:content_type => /\bxml$/} }
|
41
|
+
|
42
|
+
it "parses xml body of correct type" do
|
43
|
+
response = process(xml, 'application/xml')
|
44
|
+
response.body.should eql(user)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "ignores xml body of incorrect type" do
|
48
|
+
response = process(xml, 'text/html')
|
49
|
+
response.body.should eql(xml)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "with array type matching" do
|
54
|
+
let(:options) { {:content_type => %w[a/b c/d]} }
|
55
|
+
|
56
|
+
it "parses xml body of correct type" do
|
57
|
+
process(xml, 'a/b').body.should be_a(Hash)
|
58
|
+
process(xml, 'c/d').body.should be_a(Hash)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "ignores xml body of incorrect type" do
|
62
|
+
process(xml, 'a/d').body.should_not be_a(Hash)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "chokes on invalid xml" do
|
67
|
+
['{!', '"a"', 'true', 'null', '1'].each do |data|
|
68
|
+
expect { process(data) }.to raise_error(Faraday::Error::ParsingError)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'faraday_middleware/response/parse_yaml'
|
3
|
+
|
4
|
+
describe FaradayMiddleware::ParseYaml, :type => :response do
|
5
|
+
context "no type matching" do
|
6
|
+
it "doesn't change nil body" do
|
7
|
+
process(nil).body.should be_nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns false for empty body" do
|
11
|
+
process('').body.should be_false
|
12
|
+
end
|
13
|
+
|
14
|
+
it "parses yaml body" do
|
15
|
+
response = process('a: 1')
|
16
|
+
response.body.should eql('a' => 1)
|
17
|
+
response.env[:raw_body].should be_nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "with preserving raw" do
|
22
|
+
let(:options) { {:preserve_raw => true} }
|
23
|
+
|
24
|
+
it "parses yaml body" do
|
25
|
+
response = process('a: 1')
|
26
|
+
response.body.should eql('a' => 1)
|
27
|
+
response.env[:raw_body].should eql('a: 1')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "can opt out of preserving raw" do
|
31
|
+
response = process('a: 1', nil, :preserve_raw => false)
|
32
|
+
response.env[:raw_body].should be_nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with regexp type matching" do
|
37
|
+
let(:options) { {:content_type => /\byaml$/} }
|
38
|
+
|
39
|
+
it "parses json body of correct type" do
|
40
|
+
response = process('a: 1', 'application/x-yaml')
|
41
|
+
response.body.should eql('a' => 1)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "ignores json body of incorrect type" do
|
45
|
+
response = process('a: 1', 'text/yaml-xml')
|
46
|
+
response.body.should eql('a: 1')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "chokes on invalid yaml" do
|
51
|
+
expect { process('{!') }.to raise_error(Faraday::Error::ParsingError)
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'faraday_middleware/response/rashify'
|
3
|
+
|
4
|
+
describe FaradayMiddleware::Rashify do
|
5
|
+
|
6
|
+
context 'when used' do
|
7
|
+
let(:rashify) { described_class.new }
|
8
|
+
|
9
|
+
it 'should create a Hashie::Rash from the body' do
|
10
|
+
env = { :body => { "name" => "Erik Michaels-Ober", "username" => "sferik" } }
|
11
|
+
me = rashify.on_complete(env)
|
12
|
+
me.class.should == Hashie::Rash
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should handle strings' do
|
16
|
+
env = { :body => "Most amazing string EVER" }
|
17
|
+
me = rashify.on_complete(env)
|
18
|
+
me.should == "Most amazing string EVER"
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should handle hashes and decamelcase the keys' do
|
22
|
+
env = { :body => { "name" => "Erik Michaels-Ober", "userName" => "sferik" } }
|
23
|
+
me = rashify.on_complete(env)
|
24
|
+
me.name.should == 'Erik Michaels-Ober'
|
25
|
+
me.user_name.should == 'sferik'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should handle arrays' do
|
29
|
+
env = { :body => [123, 456] }
|
30
|
+
values = rashify.on_complete(env)
|
31
|
+
values.first.should == 123
|
32
|
+
values.last.should == 456
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should handle arrays of hashes' do
|
36
|
+
env = { :body => [{ "username" => "sferik" }, { "username" => "pengwynn" }] }
|
37
|
+
us = rashify.on_complete(env)
|
38
|
+
us.first.username.should == 'sferik'
|
39
|
+
us.last.username.should == 'pengwynn'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should handle mixed arrays' do
|
43
|
+
env = { :body => [123, { "username" => "sferik" }, 456] }
|
44
|
+
values = rashify.on_complete(env)
|
45
|
+
values.first.should == 123
|
46
|
+
values.last.should == 456
|
47
|
+
values[1].username.should == 'sferik'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'integration test' do
|
52
|
+
let(:stubs) { Faraday::Adapter::Test::Stubs.new }
|
53
|
+
let(:connection) do
|
54
|
+
Faraday::Connection.new do |builder|
|
55
|
+
builder.adapter :test, stubs
|
56
|
+
builder.use described_class
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# although it is not good practice to pass a hash as the body, if we add ParseJson
|
61
|
+
# to the middleware stack we end up testing two middlewares instead of one
|
62
|
+
it 'should create a Hash from the body' do
|
63
|
+
stubs.get('/hash') {[200, {'content-type' => 'application/json; charset=utf-8'}, { "name" => "Erik Michaels-Ober", "username" => "sferik" }]}
|
64
|
+
me = connection.get('/hash').body
|
65
|
+
me.name.should == 'Erik Michaels-Ober'
|
66
|
+
me.username.should == 'sferik'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
metadata
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: agiley-faraday_middleware
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.8.3
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Erik Michaels-Ober
|
9
|
+
- Wynn Netherland
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-01-29 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: faraday
|
17
|
+
requirement: &70130128226140 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.7.4
|
23
|
+
- - <
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0.9'
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: *70130128226140
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: multi_xml
|
31
|
+
requirement: &70130128225380 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ~>
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0.2'
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: *70130128225380
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: nokogiri
|
42
|
+
requirement: &70130128224920 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.5.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: *70130128224920
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: rake
|
53
|
+
requirement: &70130128224460 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0.9'
|
59
|
+
type: :development
|
60
|
+
prerelease: false
|
61
|
+
version_requirements: *70130128224460
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hashie
|
64
|
+
requirement: &70130128224000 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.2'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: *70130128224000
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: rash
|
75
|
+
requirement: &70130128223540 !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ~>
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0.3'
|
81
|
+
type: :development
|
82
|
+
prerelease: false
|
83
|
+
version_requirements: *70130128223540
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rspec
|
86
|
+
requirement: &70130128223080 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '2.6'
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: *70130128223080
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: simple_oauth
|
97
|
+
requirement: &70130128222620 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ~>
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0.1'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: *70130128222620
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: rack-cache
|
108
|
+
requirement: &70130128222160 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ~>
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '1.1'
|
114
|
+
type: :development
|
115
|
+
prerelease: false
|
116
|
+
version_requirements: *70130128222160
|
117
|
+
description: Various middleware for Faraday
|
118
|
+
email:
|
119
|
+
- sferik@gmail.com
|
120
|
+
- wynn.netherland@gmail.com
|
121
|
+
executables: []
|
122
|
+
extensions: []
|
123
|
+
extra_rdoc_files: []
|
124
|
+
files:
|
125
|
+
- .gemtest
|
126
|
+
- .gitignore
|
127
|
+
- .rspec
|
128
|
+
- .travis.yml
|
129
|
+
- CHANGELOG.md
|
130
|
+
- Gemfile
|
131
|
+
- LICENSE.md
|
132
|
+
- README.md
|
133
|
+
- Rakefile
|
134
|
+
- faraday_middleware.gemspec
|
135
|
+
- lib/faraday_middleware.rb
|
136
|
+
- lib/faraday_middleware/addressable_patch.rb
|
137
|
+
- lib/faraday_middleware/backwards_compatibility.rb
|
138
|
+
- lib/faraday_middleware/instrumentation.rb
|
139
|
+
- lib/faraday_middleware/rack_compatible.rb
|
140
|
+
- lib/faraday_middleware/request/encode_json.rb
|
141
|
+
- lib/faraday_middleware/request/oauth.rb
|
142
|
+
- lib/faraday_middleware/request/oauth2.rb
|
143
|
+
- lib/faraday_middleware/response/caching.rb
|
144
|
+
- lib/faraday_middleware/response/follow_redirects.rb
|
145
|
+
- lib/faraday_middleware/response/mashify.rb
|
146
|
+
- lib/faraday_middleware/response/parse_json.rb
|
147
|
+
- lib/faraday_middleware/response/parse_marshal.rb
|
148
|
+
- lib/faraday_middleware/response/parse_nokogiri_xml.rb
|
149
|
+
- lib/faraday_middleware/response/parse_xml.rb
|
150
|
+
- lib/faraday_middleware/response/parse_yaml.rb
|
151
|
+
- lib/faraday_middleware/response/rashify.rb
|
152
|
+
- lib/faraday_middleware/response_middleware.rb
|
153
|
+
- lib/faraday_middleware/version.rb
|
154
|
+
- spec/caching_test.rb
|
155
|
+
- spec/encode_json_spec.rb
|
156
|
+
- spec/follow_redirects_spec.rb
|
157
|
+
- spec/helper.rb
|
158
|
+
- spec/mashify_spec.rb
|
159
|
+
- spec/oauth2_spec.rb
|
160
|
+
- spec/oauth_spec.rb
|
161
|
+
- spec/parse_json_spec.rb
|
162
|
+
- spec/parse_marshal_spec.rb
|
163
|
+
- spec/parse_xml_spec.rb
|
164
|
+
- spec/parse_yaml_spec.rb
|
165
|
+
- spec/rashify_spec.rb
|
166
|
+
homepage: https://github.com/pengwynn/faraday_middleware
|
167
|
+
licenses: []
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ! '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
none: false
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: 1.3.6
|
184
|
+
requirements: []
|
185
|
+
rubyforge_project:
|
186
|
+
rubygems_version: 1.8.15
|
187
|
+
signing_key:
|
188
|
+
specification_version: 3
|
189
|
+
summary: Various middleware for Faraday
|
190
|
+
test_files:
|
191
|
+
- spec/caching_test.rb
|
192
|
+
- spec/encode_json_spec.rb
|
193
|
+
- spec/follow_redirects_spec.rb
|
194
|
+
- spec/helper.rb
|
195
|
+
- spec/mashify_spec.rb
|
196
|
+
- spec/oauth2_spec.rb
|
197
|
+
- spec/oauth_spec.rb
|
198
|
+
- spec/parse_json_spec.rb
|
199
|
+
- spec/parse_marshal_spec.rb
|
200
|
+
- spec/parse_xml_spec.rb
|
201
|
+
- spec/parse_yaml_spec.rb
|
202
|
+
- spec/rashify_spec.rb
|