diff options
| author | Zack Hobson | 2013-12-26 11:57:57 -0800 | 
|---|---|---|
| committer | Zack Hobson | 2013-12-26 11:57:57 -0800 | 
| commit | 31dab9e4e892fa3f12e3659cd4b8fa42b52c999d (patch) | |
| tree | 73864167ee88c785ad8b3e891e833cd7230a88a5 | |
| parent | edce556e090c2ef2d6459d88d724ce4a05ce8725 (diff) | |
| download | hcl-31dab9e4e892fa3f12e3659cd4b8fa42b52c999d.tar.bz2 | |
use yajl, test html unescape
| -rw-r--r-- | hcl.gemspec | 2 | ||||
| -rw-r--r-- | lib/hcl/harvest_middleware.rb | 12 | ||||
| -rw-r--r-- | test/net_test.rb | 12 | 
3 files changed, 19 insertions, 7 deletions
| diff --git a/hcl.gemspec b/hcl.gemspec index 29214ae..3f41b2f 100644 --- a/hcl.gemspec +++ b/hcl.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |s|    s.add_runtime_dependency 'highline'    s.add_runtime_dependency 'faraday'    s.add_runtime_dependency 'faraday_middleware' -  s.add_runtime_dependency 'multi_json' +  s.add_runtime_dependency 'yajl-ruby'    s.add_runtime_dependency 'escape_utils'    s.add_development_dependency 'rake'    s.add_development_dependency 'rubygems-tasks' diff --git a/lib/hcl/harvest_middleware.rb b/lib/hcl/harvest_middleware.rb index db9d50f..3e96a99 100644 --- a/lib/hcl/harvest_middleware.rb +++ b/lib/hcl/harvest_middleware.rb @@ -1,5 +1,5 @@  require 'faraday_middleware/response_middleware' -require 'multi_json' +require 'yajl'  require 'escape_utils'  class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware @@ -18,8 +18,8 @@ class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware        case env[:status]        when 200..299          begin  -          env[:body] = unescape(MultiJson.load(env[:body], symbolize_keys:true)) -        rescue MultiJson::LoadError +          env[:body] = deep_html_unescape(Yajl::Parser.parse(env[:body], symbolize_keys:true)) +        rescue Yajl::ParseError            env[:body]          end        when 300..399 @@ -34,11 +34,11 @@ class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware      end    end -  def unescape obj +  def deep_html_unescape obj      if obj.kind_of? Hash -      obj.inject({}){|o,(k,v)| o[k] = unescape(v);o} +      obj.inject({}){|o,(k,v)| o.update(k => deep_html_unescape(v)) }      elsif obj.kind_of? Array -      obj.inject([]){|o,v| o << unescape(v);o} +      obj.inject([]){|o,v| o << deep_html_unescape(v) }      else        EscapeUtils.unescape_html(obj.to_s)      end diff --git a/test/net_test.rb b/test/net_test.rb index c4e39e1..3eec454 100644 --- a/test/net_test.rb +++ b/test/net_test.rb @@ -18,6 +18,18 @@ class NetTest < HCl::TestCase      assert_equal true, HCl::Net.ssl    end +  def test_http_deep_unescape +    FakeWeb.register_uri(:get, "https://bob:secret@bobclock.harvestapp.com/foo", +                         :body => Yajl::Encoder.encode({ +      status:'gotten & got!', +      comparisons:['burrito > taco', 'rain < sun'] +    })) +    body = HCl::Net.get 'foo' +    assert_equal 'gotten & got!', body[:status] +    assert_equal 'burrito > taco', body[:comparisons][0] +    assert_equal 'rain < sun', body[:comparisons][1] +  end +    def test_http_get      FakeWeb.register_uri(:get, "https://bob:secret@bobclock.harvestapp.com/foo",                           :body => 'gotten!'.inspect) | 
