diff options
| author | Zack Hobson | 2013-12-22 20:27:59 -0800 | 
|---|---|---|
| committer | Zack Hobson | 2013-12-22 20:27:59 -0800 | 
| commit | 68cc0f7d51b983c007e4aad63705e535530e1bd3 (patch) | |
| tree | 65dc88011555f7726df2521eded08ef945ad8070 | |
| parent | f22aaeb06d26a59012f6e2b23ee9d480379c003f (diff) | |
| download | hcl-68cc0f7d51b983c007e4aad63705e535530e1bd3.tar.bz2 | |
fix throttling and malformed json
| -rw-r--r-- | lib/hcl/harvest_middleware.rb | 12 | ||||
| -rw-r--r-- | lib/hcl/timesheet_resource.rb | 2 | ||||
| -rw-r--r-- | test/app_test.rb | 2 | 
3 files changed, 8 insertions, 8 deletions
| diff --git a/lib/hcl/harvest_middleware.rb b/lib/hcl/harvest_middleware.rb index d4df9e8..47e790d 100644 --- a/lib/hcl/harvest_middleware.rb +++ b/lib/hcl/harvest_middleware.rb @@ -8,20 +8,20 @@ class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware    class ThrottleFailure < StandardError      attr_reader :retry_after      def initialize env -      @retry_after = env[:headers]['Retry-After'].to_i +      @retry_after = env[:response_headers]['retry-after'].to_i        super "Too many requests! Try again in #{@retry_after} seconds."      end    end -  define_parser do |body| -    unescape MultiJson.load(body, symbolize_keys:true) -  end -    def call(env)      @app.call(env).on_complete do |env|        case env[:status]        when 200..299 -        env[:body] = unescape MultiJson.load(env[:body], symbolize_keys:true) +        begin  +          env[:body] = unescape(MultiJson.load(env[:body].chomp, symbolize_keys:true)) +        rescue MultiJson::LoadError +          env[:body] +        end        when 300..399          raise Failure, "Redirected! Perhaps your ssl configuration variable is set incorrectly?"        when 400..499 diff --git a/lib/hcl/timesheet_resource.rb b/lib/hcl/timesheet_resource.rb index c82e7ed..df32be7 100644 --- a/lib/hcl/timesheet_resource.rb +++ b/lib/hcl/timesheet_resource.rb @@ -50,7 +50,7 @@ module HCl          f.headers['Accept'] = 'application/json'          f.request :json          f.request :basic_auth, login, password -        f.use HCl::HarvestMiddleware, content_type: /\bjson$/ +        f.use HCl::HarvestMiddleware, content_type: /\bjson\b/          f.adapter Faraday.default_adapter        end      end diff --git a/test/app_test.rb b/test/app_test.rb index 19678fd..1fc1073 100644 --- a/test/app_test.rb +++ b/test/app_test.rb @@ -23,7 +23,7 @@ class AppTest < HCl::TestCase      app = HCl::App.new      throttled = states('throttled').starts_as(false)      app.expects(:show). -      raises(HCl::HarvestMiddleware::ThrottleFailure, {headers:{'Retry-After' => 42}}). +      raises(HCl::HarvestMiddleware::ThrottleFailure, {response_headers:{'retry-after' => 42}}).        then(throttled.is(true))      app.expects(:sleep).with(47).when(throttled.is(true))      app.expects(:show).when(throttled.is(true)) | 
