summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZack Hobson2013-12-22 20:27:59 -0800
committerZack Hobson2013-12-22 20:27:59 -0800
commit68cc0f7d51b983c007e4aad63705e535530e1bd3 (patch)
tree65dc88011555f7726df2521eded08ef945ad8070
parentf22aaeb06d26a59012f6e2b23ee9d480379c003f (diff)
downloadhcl-68cc0f7d51b983c007e4aad63705e535530e1bd3.tar.bz2
fix throttling and malformed json
-rw-r--r--lib/hcl/harvest_middleware.rb12
-rw-r--r--lib/hcl/timesheet_resource.rb2
-rw-r--r--test/app_test.rb2
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))