faraday_middleware 0.1.7 → 0.2.0

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/.gitignore CHANGED
@@ -1,24 +1,24 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
- *.gem
21
- .yardopts
22
- .yardoc
23
-
24
- ## PROJECT::SPECIFIC
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+ *.gem
21
+ .yardopts
22
+ .yardoc
23
+
24
+ ## PROJECT::SPECIFIC
data/CHANGELOG.md CHANGED
@@ -1,10 +1,10 @@
1
- # Changelog
2
-
3
- ### 0.0.2 September 25, 2010
4
-
5
- * Mashify now handles arrays of non-hashes
6
-
7
- ### 0.0.1 June 27, 2010
8
-
9
- * MultiJSON
1
+ # Changelog
2
+
3
+ ### 0.0.2 September 25, 2010
4
+
5
+ * Mashify now handles arrays of non-hashes
6
+
7
+ ### 0.0.1 June 27, 2010
8
+
9
+ * MultiJSON
10
10
  * Mashify
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- faraday_middleware (0.1.7)
4
+ faraday_middleware (0.2.0)
5
5
  faraday (~> 0.5.1)
6
6
 
7
7
  GEM
@@ -15,7 +15,7 @@ GEM
15
15
  hashie (0.4.0)
16
16
  json (1.4.6)
17
17
  multi_json (0.0.4)
18
- multi_xml (0.1.0)
18
+ multi_xml (0.1.4)
19
19
  multipart-post (1.0.1)
20
20
  oauth2 (0.1.0)
21
21
  faraday (~> 0.5.0)
@@ -23,6 +23,7 @@ GEM
23
23
  rack (1.2.1)
24
24
  rake (0.8.7)
25
25
  shoulda (2.11.3)
26
+ test-unit (2.1.1)
26
27
 
27
28
  PLATFORMS
28
29
  ruby
@@ -37,3 +38,4 @@ DEPENDENCIES
37
38
  oauth2 (~> 0.1)
38
39
  rake (~> 0.8)
39
40
  shoulda (~> 2.11)
41
+ test-unit (~> 2.1)
data/Rakefile CHANGED
@@ -1,14 +1,14 @@
1
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
- require 'rake'
3
- require 'rake/testtask'
4
- require 'bundler'
5
-
6
- Bundler::GemHelper.install_tasks
7
-
8
- Rake::TestTask.new(:test) do |test|
9
- test.ruby_opts = ["-rubygems"] if defined? Gem
10
- test.libs << "lib" << "test"
11
- test.pattern = "test/**/*_test.rb"
12
- end
13
-
14
- task :default => :test
1
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'bundler'
5
+
6
+ Bundler::GemHelper.install_tasks
7
+
8
+ Rake::TestTask.new(:test) do |test|
9
+ test.ruby_opts = ["-rubygems"] if defined? Gem
10
+ test.libs << "lib" << "test"
11
+ test.pattern = "test/**/*_test.rb"
12
+ end
13
+
14
+ task :default => :test
@@ -8,6 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.add_development_dependency('oauth2', '~> 0.1')
9
9
  s.add_development_dependency('rake', '~> 0.8')
10
10
  s.add_development_dependency('shoulda', '~> 2.11')
11
+ s.add_development_dependency("test-unit", "~> 2.1")
11
12
  s.add_runtime_dependency('faraday', '~> 0.5.1')
12
13
  s.authors = ["Wynn Netherland"]
13
14
  s.description = %q{Various middleware for Faraday}
@@ -4,15 +4,15 @@ module Faraday
4
4
  require 'hashie'
5
5
  rescue LoadError, NameError => error
6
6
  self.load_error = error
7
- end
7
+ end
8
8
 
9
9
  def self.register_on_complete(env)
10
10
  env[:response].on_complete do |response|
11
- json = response[:body]
12
- if json.is_a?(Hash)
13
- response[:body] = ::Hashie::Mash.new(json)
14
- elsif json.is_a?(Array) and json.first.is_a?(Hash)
15
- response[:body] = json.map{|item| ::Hashie::Mash.new(item) }
11
+ response_body = response[:body]
12
+ if response_body.is_a?(Hash)
13
+ response[:body] = ::Hashie::Mash.new(response_body)
14
+ elsif response_body.is_a?(Array) and response_body.first.is_a?(Hash)
15
+ response[:body] = response_body.map{|item| ::Hashie::Mash.new(item)}
16
16
  end
17
17
  end
18
18
  end
@@ -4,7 +4,7 @@ module Faraday
4
4
  require 'oauth2'
5
5
  rescue LoadError, NameError => error
6
6
  self.load_error = error
7
- end
7
+ end
8
8
 
9
9
  def call(env)
10
10
  params = env[:url].query_values || {}
@@ -0,0 +1,39 @@
1
+ module Faraday
2
+ class Response::Parse < Response::Middleware
3
+ begin
4
+ require 'multi_json'
5
+ require 'multi_xml'
6
+ rescue LoadError, NameError => error
7
+ self.load_error = error
8
+ end
9
+
10
+ def self.register_on_complete(env)
11
+ env[:response].on_complete do |response|
12
+ response[:body] = begin
13
+ case response[:response_headers]['content-type']
14
+ when /application\/json/
15
+ case response[:body]
16
+ when ''
17
+ nil
18
+ when 'true'
19
+ true
20
+ when 'false'
21
+ false
22
+ else
23
+ ::MultiJson.decode(response[:body])
24
+ end
25
+ when /application\/xml/
26
+ ::MultiXml.parse(response[:body])
27
+ else
28
+ ''
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ def initialize(app)
35
+ super
36
+ @parser = nil
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module FaradayMiddleware
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.0"
3
3
  end
data/test/mashify_test.rb CHANGED
@@ -6,27 +6,27 @@ class MashifyTest < Test::Unit::TestCase
6
6
  @stubs = Faraday::Adapter::Test::Stubs.new
7
7
  @conn = Faraday::Connection.new do |builder|
8
8
  builder.adapter :test, @stubs
9
- builder.use Faraday::Response::ParseJson
9
+ builder.use Faraday::Response::Parse
10
10
  builder.use Faraday::Response::Mashify
11
11
  end
12
12
  end
13
13
 
14
14
  should 'create a Hashie::Mash from the body' do
15
- @stubs.get('/hash') {[200, {}, '{"name":"Wynn Netherland","username":"pengwynn"}']}
15
+ @stubs.get('/hash') {[200, {'content-type' => 'application/json; charset=utf-8'}, '{"name":"Wynn Netherland","username":"pengwynn"}']}
16
16
  me = @conn.get("/hash").body
17
17
  assert_equal 'Wynn Netherland', me.name
18
18
  assert_equal 'pengwynn', me.username
19
19
  end
20
20
 
21
21
  should 'handle arrays' do
22
- @stubs.get('/array') {[200, {}, '[{"username":"pengwynn"},{"username":"jnunemaker"}]']}
22
+ @stubs.get('/array') {[200, {'content-type' => 'application/json; charset=utf-8'}, '[{"username":"pengwynn"},{"username":"jnunemaker"}]']}
23
23
  us = @conn.get("/array").body
24
24
  assert_equal 'pengwynn', us.first.username
25
25
  assert_equal 'jnunemaker', us.last.username
26
26
  end
27
27
 
28
28
  should 'handle arrays of non-hashes' do
29
- @stubs.get('/array/simple') {[200, {}, "[123, 456]"]}
29
+ @stubs.get('/array/simple') {[200, {'content-type' => 'application/json; charset=utf-8'}, "[123, 456]"]}
30
30
  values = @conn.get("/array/simple").body
31
31
  assert_equal 123, values.first
32
32
  assert_equal 456, values.last
@@ -1,18 +1,19 @@
1
1
  require 'helper'
2
2
 
3
- class ParseJsonTest < Test::Unit::TestCase
3
+ class ParseTest < Test::Unit::TestCase
4
4
  context 'when used' do
5
5
  setup do
6
6
  @stubs = Faraday::Adapter::Test::Stubs.new
7
7
  @conn = Faraday::Connection.new do |builder|
8
8
  builder.adapter :test, @stubs
9
- builder.use Faraday::Response::ParseJson
9
+ require 'rexml/document'
10
+ builder.use Faraday::Response::Parse
10
11
  end
11
12
  end
12
13
 
13
14
  context "when there is a JSON body" do
14
15
  setup do
15
- @stubs.get('/me') {[200, {}, '{"name":"Wynn Netherland","username":"pengwynn"}']}
16
+ @stubs.get('/me') {[200, {'content-type' => 'application/json; charset=utf-8'}, '{"name":"Wynn Netherland","username":"pengwynn"}']}
16
17
  end
17
18
 
18
19
  should 'parse the body as JSON' do
@@ -25,7 +26,7 @@ class ParseJsonTest < Test::Unit::TestCase
25
26
 
26
27
  context "when the JSON body is empty" do
27
28
  setup do
28
- @stubs.get('/me') {[200, {}, ""]}
29
+ @stubs.get('/me') {[200, {'content-type' => 'application/json; charset=utf-8'}, ""]}
29
30
  end
30
31
 
31
32
  should 'still have the status code' do
@@ -41,7 +42,7 @@ class ParseJsonTest < Test::Unit::TestCase
41
42
 
42
43
  context "when the JSON body is 'true'" do
43
44
  setup do
44
- @stubs.get('/me') {[200, {}, "true"]}
45
+ @stubs.get('/me') {[200, {'content-type' => 'application/json; charset=utf-8'}, "true"]}
45
46
  end
46
47
 
47
48
  should 'still have the status code' do
@@ -57,7 +58,7 @@ class ParseJsonTest < Test::Unit::TestCase
57
58
 
58
59
  context "when the JSON body is 'false'" do
59
60
  setup do
60
- @stubs.get('/me') {[200, {}, "false"]}
61
+ @stubs.get('/me') {[200, {'content-type' => 'application/json; charset=utf-8'}, "false"]}
61
62
  end
62
63
 
63
64
  should 'still have the status code' do
@@ -71,5 +72,34 @@ class ParseJsonTest < Test::Unit::TestCase
71
72
  end
72
73
  end
73
74
 
75
+ context "when there is a XML body" do
76
+ setup do
77
+ @stubs.get('/me') {[200, {'content-type' => 'application/xml; charset=utf-8'}, '<user><name>Erik Michaels-Ober</name><username>sferik</username></user>']}
78
+ end
79
+
80
+ should 'parse the body as XML' do
81
+ me = @conn.get("/me").body['user']
82
+ assert me.is_a?(Hash)
83
+ assert_equal 'Erik Michaels-Ober', me['name']
84
+ assert_equal 'sferik', me['username']
85
+ end
86
+ end
87
+
88
+ context "when the XML body is empty" do
89
+ setup do
90
+ @stubs.get('/me') {[200, {'content-type' => 'application/xml; charset=utf-8'}, ""]}
91
+ end
92
+
93
+ should 'still have the status code' do
94
+ response = @conn.get("/me")
95
+ assert_equal 200, response.status
96
+ end
97
+
98
+ should 'set body to nil' do
99
+ response = @conn.get("/me")
100
+ assert_equal Hash.new, response.body
101
+ end
102
+ end
103
+
74
104
  end
75
105
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday_middleware
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 7
10
- version: 0.1.7
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Wynn Netherland
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-15 00:00:00 -07:00
18
+ date: 2010-10-20 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -124,9 +124,24 @@ dependencies:
124
124
  type: :development
125
125
  version_requirements: *id007
126
126
  - !ruby/object:Gem::Dependency
127
- name: faraday
127
+ name: test-unit
128
128
  prerelease: false
129
129
  requirement: &id008 !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ hash: 1
135
+ segments:
136
+ - 2
137
+ - 1
138
+ version: "2.1"
139
+ type: :development
140
+ version_requirements: *id008
141
+ - !ruby/object:Gem::Dependency
142
+ name: faraday
143
+ prerelease: false
144
+ requirement: &id009 !ruby/object:Gem::Requirement
130
145
  none: false
131
146
  requirements:
132
147
  - - ~>
@@ -138,7 +153,7 @@ dependencies:
138
153
  - 1
139
154
  version: 0.5.1
140
155
  type: :runtime
141
- version_requirements: *id008
156
+ version_requirements: *id009
142
157
  description: Various middleware for Faraday
143
158
  email:
144
159
  - wynn.netherland@gmail.com
@@ -158,15 +173,13 @@ files:
158
173
  - faraday_middleware.gemspec
159
174
  - lib/faraday/mashify.rb
160
175
  - lib/faraday/oauth2.rb
161
- - lib/faraday/parse_json.rb
162
- - lib/faraday/parse_xml.rb
176
+ - lib/faraday/parse.rb
163
177
  - lib/faraday_middleware.rb
164
178
  - lib/faraday_middleware/version.rb
165
179
  - test/helper.rb
166
180
  - test/mashify_test.rb
167
181
  - test/oauth2_test.rb
168
- - test/parse_json_test.rb
169
- - test/parse_xml_test.rb
182
+ - test/parse_test.rb
170
183
  has_rdoc: true
171
184
  homepage: http://wynnnetherland.com/projects/faraday-middleware/
172
185
  licenses: []
@@ -207,5 +220,4 @@ test_files:
207
220
  - test/helper.rb
208
221
  - test/mashify_test.rb
209
222
  - test/oauth2_test.rb
210
- - test/parse_json_test.rb
211
- - test/parse_xml_test.rb
223
+ - test/parse_test.rb
@@ -1,31 +0,0 @@
1
- module Faraday
2
- class Response::ParseJson < Response::Middleware
3
- begin
4
- require 'multi_json'
5
- rescue LoadError, NameError => error
6
- self.load_error = error
7
- end
8
-
9
- def self.register_on_complete(env)
10
- env[:response].on_complete do |response|
11
- response[:body] = begin
12
- case response[:body]
13
- when ""
14
- nil
15
- when "true"
16
- true
17
- when "false"
18
- false
19
- else
20
- ::MultiJson.decode(response[:body])
21
- end
22
- end
23
- end
24
- end
25
-
26
- def initialize(app)
27
- super
28
- @parser = nil
29
- end
30
- end
31
- end
@@ -1,22 +0,0 @@
1
- module Faraday
2
- class Response::ParseXml < Response::Middleware
3
- begin
4
- require 'multi_xml'
5
- rescue LoadError, NameError => error
6
- self.load_error = error
7
- end
8
-
9
- def self.register_on_complete(env)
10
- env[:response].on_complete do |response|
11
- response[:body] = begin
12
- ::MultiXml.parse(response[:body])
13
- end
14
- end
15
- end
16
-
17
- def initialize(app)
18
- super
19
- @parser = nil
20
- end
21
- end
22
- end
@@ -1,44 +0,0 @@
1
- require 'helper'
2
-
3
- class ParseXmlTest < Test::Unit::TestCase
4
- context 'when used' do
5
- setup do
6
- @stubs = Faraday::Adapter::Test::Stubs.new
7
- @conn = Faraday::Connection.new do |builder|
8
- builder.adapter :test, @stubs
9
- require 'rexml/document'
10
- builder.use Faraday::Response::ParseXml
11
- end
12
- end
13
-
14
- context "when there is a XML body" do
15
- setup do
16
- @stubs.get('/me') {[200, {}, '<user><name>Erik Michaels-Ober</name><username>sferik</username></user>']}
17
- end
18
-
19
- should 'parse the body as XML' do
20
- me = @conn.get("/me").body['user']
21
- assert me.is_a?(Hash)
22
- assert_equal 'Erik Michaels-Ober', me['name']
23
- assert_equal 'sferik', me['username']
24
- end
25
- end
26
-
27
- context "when the XML body is empty" do
28
- setup do
29
- @stubs.get('/me') {[200, {}, ""]}
30
- end
31
-
32
- should 'still have the status code' do
33
- response = @conn.get("/me")
34
- assert_equal 200, response.status
35
- end
36
-
37
- should 'set body to nil' do
38
- response = @conn.get("/me")
39
- assert_equal Hash.new, response.body
40
- end
41
- end
42
-
43
- end
44
- end